windows下操作
备份exp.bat内容如下
@echo off
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysqldump -uroot -p12345678 -R dayreport > D:\bk\20230420\dayreport_20230420.sql
mysqldump -uroot -p12345678 -R ddm_am > D:\bk\20230420\ddm_am_20230420.sql
mysqldump -uroot -p12345678 -R ddm_brm > D:\bk\20230420\ddm_brm_20230420.sql
mysqldump -uroot -p12345678 -R ddm_common > D:\bk\20230420\ddm_common_20230420.sql
mysqldump -uroot -p12345678 -R ddm_hr > D:\bk\20230420\ddm_hr_20230420.sql
mysqldump -uroot -p12345678 -R ddm_qa > D:\bk\20230420\ddm_qa_20230420.sql
mysqldump -uroot -p12345678 -R schedule > D:\bk\20230420\schedule_20230420.sql
mysqldump -uroot -p12345678 -R train > D:\bk\20230420\train_20230420.sql
echo [%date% %time%]
pause
导入imp.bat
@echo off
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -uroot -p12345678 dayreport < C:\Users\admin\Desktop\20230420\dayreport_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 ddm_am < C:\Users\admin\Desktop\20230420\ddm_am_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 ddm_brm < C:\Users\admin\Desktop\20230420\ddm_brm_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 ddm_common < C:\Users\admin\Desktop\20230420\ddm_common_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 ddm_hr < C:\Users\admin\Desktop\20230420\ddm_hr_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 ddm_qa < C:\Users\admin\Desktop\20230420\ddm_qa_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 schedule < C:\Users\admin\Desktop\20230420\schedule_20230420.sql --default-character-set=utf8
mysql -uroot -p12345678 train < C:\Users\admin\Desktop\20230420\train_20230420.sql --default-character-set=utf8
echo [%date% %time%]
pause
需要备份首先就需要在本地安装MySQL
安装教程:
自动备份和删除备份文件的bat脚本:
@echo off
forfiles /p "D:\ERP_MySQLbak" /m mysql_backup_*.sql -d -1 /c "cmd /c del /f @path"
set "yMd=%date:~,4%%date:~5,2%%date:~8,2%"
set "hms=%time:~,2%%time:~3,2%%time:~6,2%"
"D:\Program Files\mysql-5.7.28-winx64\bin\mysqldump.exe" --opt -uroot1 -proot -h***.***.***.*** ?--all-databases>D:\ERP_MySQLbak\mysql_backup_%yMd%-%hms%.sql
@echo on
说明
forfiles /p "D:\ERP_MySQLbak" /m mysql_backup_*.sql -d -1 /c "cmd /c del /f @path"
删除之前的备份文件
"D:\ERP_MySQLbak" 是备份文件存储路径
mysql_backup_*.sql 是备份文件名称 ? 以mysql_backup_ 开头 ?以.sql结尾
-d -1 是有效期为1天
set "yMd=%date:~,4%%date:~5,2%%date:~8,2%"
set "hms=%time:~,2%%time:~3,2%%time:~6,2%"
设置文件名称中的日期和时间
"D:\Program Files\mysql-5.7.28-winx64\bin\mysqldump.exe" --opt -uroot1 -proot -h***.***.***.*** ?--all-databases>D:\ERP_MySQLbak\mysql_backup_%yMd%-%hms%.sql
指定 mysqldump目录,使用root1 备份所有数据库到 D:\ERP_MySQLbak\mysql_backup_%yMd%-%hms%.sql 文件
剩下就是在windows中创建计划任务。
linux下操作
Linux下MySQL数据库有逻辑备份和物理备份,也可以分为完全备份、部分备份。
·完全备份是指备份整个数据集(即整个数据库)
·部分备份是指备份部分数据集(只备份一个表)
逻辑备份最大优点是对于各种存储引擎,都可以使用同样的方法来备份。而物理备份则不同,不同的存储引擎有着不同的备份方法。
mysqldump基本语法
mysqldump -uUsername -pPassword dbname table1 table2 … > BackupName.sql
备份多个数据库
mysqldump -uUsername -pPassword –databases dbname1 dbname2 … > Backup.sql
备份所有数据库
mysqldump -uUsername -pPassword -all-databases > BackupName.sql
MySQL 完全备份和恢复
备份某—个数据库: mysqldump -uUsername -pPassword 数据库名 > /root/XXX.bak
会将指定的数据库备份至roo家目录下,文件名为XXX.bak
恢复: mysql -uUsername -pPassword 数据库名 < /root/XXX.bak
MySQL 增量备份
验证和配置是否启动二进制日志功能。进行增量备份前,要启动二进制日志功能,首先使用vi /etc/my.cnf,打开配置文件,查看是否有log-bin配置行。因此添加此配置即可,输入内容:log-bin=/var/lib/mysql/sql_backup,然后保存my.cnf文件并退出。具体操作如图所示:
重新启动mysql服务,并且到目录/var/lib/mysql下查对应文件:索引文件sql_backup.index和文件sql_backup.000001,如出现以上两个文件,说明二进制日志功能开启成功了。
service mysqld restart
cd /var/lib/mysql/
ls
在进行增量备份时,需要做一次完全备份,输入命令:
mysqldump -uUserName -pPassword –lock-all-tables –flush-logs –delete-master-logs 数据库名 > /root/完全备份文件名.sql
说明:在进行增量备份时,使用的参数解释如下:
–lock-all-tables 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性;
–flush-logs为结束当前日志,生成新日志文件;
–delete-master-logs 则清除以前的日志,以释放空间;
进行增量备份。我们使用上一步中的flush- logs时间点来进行备份,执行以下命令:
mysqladmin -uUserName -pPassword flush-logs
在/var/mysql/目录下看到新生产的日志文件:sql_backup.000002
做恢复增量备份前,需要恢复完全备份。执行以下命令:
mysql -uUsername -pPassword 数据库名 < /root/完全备份文件名.sql
导入增量备份,执行以下命令:
mysqlbinlog /var/lib/mysql/sql_backup.000002 | mysql -uUsername -pPassword 数据库名
Linux自动备份
开启Linux crond 服务:service crond start
cd root/
在root/下编写一个自动化脚本:vi bak.sh
通过执行命令chmod +x bak.sh为bak.sh赋予执行权限:chmod +x bak.sh
crontab文件中,加入计划任务。假设我们每天1点30分开始备份,命令如下:crontab -e
验证计划任务是否添加成功,输入命令:crontab -l
确认一下crontab有没有开机启动,避免服务器重启后计划任务时效,输入命令:chkconfig –list crond
上图中,我们看到2、3、4、5状态下都是启动的,所以可以确认会开机自启动。
至此,每日的1点30分将会在目录/root/下自动产生数据库的一份全备。