MySQL Dump 笔记

目前的配置环境均为 Windows,其他环境会在稍后补充

1. 全量备份

2. 增量备份及恢复

2.1 备份

2.1.1 启用二进制备份

开启 binlog 日志
1
2
mysql -hlocalhost -uroot -pjue -e "set global sql_log_bin=1";  
mysql -hlocalhost -uroot -pjue -e "show global variables like 'sql_log_bin'\G";  

实测需要将 global 替换为 session

在系统 MySQL 配置文件 my.ini 中加入(修改)存储 log-bin 的位置
1
log-bin=D:/Program Files (x86)/MySQL/mylog/jlog

2.1.2 重启 MySQL 服务

2.1.3 执行一次全量备份

1
$ mysqldump -hlocalhost -uroot -p -l -F test > testtt.sql

全量备份除了新建 sql 备份意外,还会新建一个 binlog 文件,完成后可以删除早先的 binlog 文件。
转移全量备份的 sql 并保存。

2.1.4 定期备份 binlog 文件

拆分 binlog 文件
1
$ mysql -hlocalhost -uroot -p -e "flush logs;"

执行语句会生成新的 binlog 文件用于记录, 原先的 binlog 文件可以转移并保存

2.2 恢复

2.2.1 单增量恢复

找到全量恢复之前的所有 binlog 文件, 同时导入

1
$ mysqlbinlog binlog.000014 binlog.000015 | mysql -uroot -p

如果出现

1
ERROR 1062 (23000) at line 35: Duplicate entry '6' for key 'PRIMARY'

则需要重新导入全量

2.2.2 复合导入

1
2
3
4
# 导入全量
$ mysql -hlocalhost -uroot -p test < testtt.sql
# 增量导入
$ mysqlbinlog binlog.000014 binlog.000015 | mysql -uroot -p

这样的导入方法只能完整地导入整个 binlog 文件中的数据, 我们还可以加入参数来完成部分导入:

1
# 根据时间导入

2.3 问题汇总

2.3.1 MySQL配置文件 my.ini 位置

打开“服务”,找到 MySQL 相关服务(如 MySQL57),点击属性。“可执行文件的路径”的显示即为 my.ini 位置。

3. 参考文档

3.1 全量备份

3.2 增量备份