MySQL增量数据备份
MySQL数据库的增量备份的实现需要借助mysql-binlog日志。
mysql-binlog日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。
从而对日志的备份以达到增量备份的功能。
mysql-binlog日志配置开启
在MySQL配置文件my.cnf文件中的mysqld节中添加下面的配置文件:
[mysqld]
#设置日志格式
binlog_format = mixed
#设置日志路径,注意路经需要mysql用户有权限写
log-bin = /data/mysql/logs/mysql-bin
#设置binlog清理时间
expire_logs_days = 7
#binlog每个日志文件大小
max_binlog_size = 100m
#binlog缓存大小
binlog_cache_size = 4m
#最大binlog缓存大小
max_binlog_cache_size = 512m
重启MySQL生效,如果不方便重启服务,也可以直接修改对应的变量即可。
上诉的具体内容配置可以根据实际项目需求进行相关的调整
数据库全量备份
mysqldump -uroot -ppassword --all-databases --flush-logs --delete-master-logs --single-transaction | gzip >> /data/backup/mysql/2020_04_02/all_dbs_2020_04_02.sql.gz
增量的备份将mysqlbinlog文件备份
rsync -avy /data/mysqlData/log/mysql-bin* /data/backup/mysql/binlog/
数据的恢复
找到出现问题时间点 将之前全量备份的数据导入数据库再将日志文件执行到需要恢复的时间点
mysqlbinlog -d xjtm --start-datetime="2020-01-12 15:00:19" --stop-datetime="2020-04-02 14:20:19" mysql-bin.000001 mysql-bin.000002 | mysql -uroot -ppasswod
查看日志中的相关sql
mysqlbinlog -d xjtm mysql-bin.000001 | more
将指定内容 导出成sql
mysqlbinlog -d xjtm --start-datetime="2020-01-12 15:00:19" --stop-datetime="2020-04-02 14:20:19" mysql-bin.000001 mysql-bin.000002 > mysql.sql
再执行sql文件
备份都是基于定时任务中 详细的定时任务请查询相关crontab