8.3 MySQL数据库备份
数据库备份说明:
我们用两台服务器来举例说明(服务器192.168.1.91和服务器192.168.1.92)
我们想要把92服务器中MySQL数据库中的数据每天在一个确定的时间将它导出来备份一份到91服务器上,然后删除前7天备份的数据。所以需要在92服务器上创建一个共享文件夹mysqlbackup,让91服务器可以共享到92的数据;然后需要将92的数据库数据导出来,在91服务器上再将数据导入到91的数据库中。
一、创建一个共享文件夹
1.首先在电脑中的任意一个盘创建一个新的文件夹。 (以创建mysqlbackup文件夹作为例子)
2.然后点击鼠标右键--共享--特定用户--填入everyone--点击添加--在下面的界面中可以看到everyone--点击选择读取/写入--共享--完成。



3.在另一台计算机上,找到计算机中的网络--点击鼠标右键--选择映射网络驱动器--然后填入共享文件所在电脑的端口号\共享文件夹路径(例如:\192.168.1.92\mysqlbackup),然后连接成功就可以看见我们在别的电脑上建立的共享文件夹了。


二、编写数据库备份脚本
1.导出数据库中的数据(方法一:使用exp导出)
(1)在共享文件夹中新建一个文本mysqlbackup.bat,鼠标右键--编辑,打开.bat文本,然后在文本中写入备份数据库数据的脚本,脚本如下:
@echo off
echo ================================================
echo Windows环境下mysql数据库的自动导入脚本
echo 删除四天前的备份
echo ================================================
::取出当前时间
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::开始备份数据库
::mysqldump -h服务器地址 -u登录名 -P端口号 -p 数据库名>导出的文件名
mysqldump -uroot -proot company_SQL > C:\mysqlbackup\companySQL_%BACKUPDATE%.sql
::删除四天前备份的文件。
::forfiles表示删除文件
::/p 后面跟的是要删除的文件所在路径,指定了要在哪个目录里查找文件,默认是当前工作目录。
::/m 后面跟的是要删除的文件名(*.sql表示所有以sql结尾的文件)
::/d 后面接的是删除几天前的文件指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。
::/c 后面跟的命令意思是对每个找到的文件在cmd中执行del命令。
forfiles /p "C:\mysqlbackup" /s /m *.* /d -4 /c "cmd /c del @file"
(2)运行脚本,显示如下图,就表示成功导出了,在电脑中找到导出的文件即可。

注意:
1.有多种导出数据库的方法,我所使用的方法是在MySQL 8.0版本上完成的(因为有的方法在5.5和5.7版本上是可以执行的,但是在8.0版本上是不支持的)。
最开始我使用的是
mysqldump -uroot -proot company_SQL > company_SQL.sql
2.命令来导出,但是这个命令在5.5版本上是支持的,可以直接运行输入的用户名密码,但是从5.6版本往后,为了考虑安全就不再支持此方法。

3.然后我又尝试了不直接输入用户名密码,而是去更改mysql安装路径C:\Program Files\MySQL\MySQL Server 8.0\etc中的配置文件my.conf,将用户名密码等写进文件中的client部分
4.写入过程如下
[client]
host = localhost
user = root
password = 'root'
5.然后调用,运行命令,结果还是不行。

mysqldump --defaults-extra-file=C:\mysqlbackup\mysqlrouter.conf company_SQL > company_SQL.sql
6.最后我使用了"不进入数据库"的方式导出 运行命令
mysqldump -h服务器地址 -u登录名 -P端口号 -p 数据库名>文件名
--例:mysqldump -h192.168.1.92 -uroot -P3306 -p company_SQL>company_SQL.sql
7.然后输入密码,等待一会就导出完成了。
注意:
在自动备份的时候不能输入密码,所以在自动备份的时候可以将密码设置为空,过程如下:
先打开mysql8.0安装路径bin,然后以管理员用户运行cmd,输入命令mysql -u root -p,然后输入明码登录,接着输入alter user 'root'@'%' identified by '';更该密码为空,然输入exit退出。然后再输入mysql -u root -p,登录就不需要密码了。此时再去任务计划中执行就可以自动备份了。

8.如果路径没有设,默认导出company_SQL.sql文件的位置就在C:\Users\Administrator\company_SQL.sql
三、建立任务计划,自动备份
1.首先打开电脑控制面板,找到系统和安全

2.找到管理工具,点击打开

3.找到任务计划程序,双击打开

4.在右侧找到创建基本任务

5.然后填写人物的名称和描述

6.选择每天

7.设置每日什么时候,每个几天发生一次

8.然后选择启动程序

9.填入需要执行的脚本所在的路径

10.然后点击完成

11.打开任务计划程序库,找到刚刚新建的任务双击

12.设置不管用户是否登录都执行,然后点击确定

13.最后填入电脑的登录名和密码,就完成了每天定时自动备份数据库文件。
