0%

mysql全量备份和增量备份

全量备份

备份

在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,

-- 备份全部数据库的数据和结构
-- -d 备份全部数据库的结构
-- -t 备份全部数据库的数据
mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

-- 备份单个或多个数据库的数据和结构
mysqldump -u root -p --databases db1 db2 > xxx.sql

还原

-- 方法一:在系统命令行中
mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
-- 方法二:登录进入mysql系统中
mysql> source /data/mysqlDump/mydb.sql

增量备份

要做增量备份首先要开启log_bin

-- 查看log_bin开启状态
show variables like '%log_bin%';
-- 开启后可以查看当前使用的日志文件
show master status;
-- 刷新使用的日志文件,如当前使用mysql-bin.00005,执行命令后变为mysql-bin.00006
mysqladmin -uroot -p123456 flush-logs
-- 保存mysql-bin日志文件
-- 从mysql-bin恢复数据
mysqlbinlog /var/lib/mysql/mysql-bin.000015 | mysql -uroot -p123456 db1;

脚本

#!/bin/sh
# 备份当日的
docker exec -it mysql mysqldump -uroot -p123456 -A > /root/mysql/bak/$(date +%F).sql
# 清除一周前的备份
rm -rf /root/mysql/bak/$(date -d "-1 week " +%Y-%m-%d).sql

注意:如果使用crontab去定时执行上面的脚本,需要把-it去掉,不然生成的sql文件为空.