Mysql的增量备份需要开启二进制功能 。
[root@localhost /]# vim /etc/my.cnf
log-bin=/usr/local/mysql/mysql-bin 添加
[root@localhost /]# systemctl restart mysqld-rw-rw----. 1 mysql mysql 120 8月 10 09:43 /usr/local/mysql/mysql-bin.000001
[root@localhost /]# ls -l /usr/local/mysql/mysql-bin.*
-rw-rw----. 1 mysql mysql 34 8月 10 09:43 /usr/local/mysql/mysql-bin.index
MySQL企业备份案例
1、 一般恢复
1) 添加数据库、表、录入信息
mysql> create database local;Database changed
mysql> use local;
mysql> create table test(id int);Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values(1);Query OK, 1 row affected (0.00 sec)
mysql> insert into test values(2);Query OK, 1 row affected (0.01 sec)
2) 先进行一次完全备份
[root@localhost ~]# mkdir /mysql_backEnter password:
[root@localhost ~]# mysqldump -uroot -p local test >/mysql_back/local_test-$(date +%F).sql
[root@localhost ~]# ls /mysql_back/local_test-2020-08-10.sql
[root@localhost ~]# mysqladmin -uroot -p flush-logs 生产新的二进制文件Enter password:
[root@localhost ~]# ls -l /usr/local/mysql/mysql-bin.*-rw-rw----. 1 mysql mysql 894 8月 10 10:03 /usr/local/mysql/mysql-bin.000001
-rw-rw----. 1 mysql mysql 120 8月 10 10:03 /usr/local/mysql/mysql-bin.000002
-rw-rw----. 1 mysql mysql 68 8月 10 10:03 /usr/local/mysql/mysql-bin.index
3) 继续录入新的数据并进行增量备份
mysql> insert into test values(3);Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(4);Query OK, 1 row affected (0.00 sec)
[root@localhost ~]# mysqladmin -uroot -p flush-logsEnter password:
[root@localhost ~]# ls -l /usr/local/mysql/mysql-bin.*-rw-rw----. 1 mysql mysql 894 8月 10 10:03 /usr/local/mysql/mysql-bin.000001
-rw-rw----. 1 mysql mysql 595 8月 10 10:06 /usr/local/mysql/mysql-bin.000002
-rw-rw----. 1 mysql mysql 120 8月 10 10:06 /usr/local/mysql/mysql-bin.000003
-rw-rw----. 1 mysql mysql 102 8月 10 10:06 /usr/local/mysql/mysql-bin.index
[root@localhost ~]# cp /usr/local/mysql/mysql-bin.000002 /mysql_back/如此00003就保留插入2个数据的操作 。
4) 模拟误操作删除test表
[root@localhost ~]# mysql -uroot -p -e 'drop table local.test;' 删除Enter password:
[root@localhost ~]# mysql -uroot -p -e 'select * from local.test;' 查询Enter password:
ERROR 1146 (42S02) at line 1: Table 'local.test' doesn't exist
5) 恢复操作
在执行恢复操作时,需要先恢复完全备份,然后恢复增量备份 。
[root@localhost mysql_back]# mysql -uroot -p local </mysql_back/local_test-2020-08-10.sqlEnter password:
[root@localhost mysql_back]# mysql -uroot -p -e ' select * from local.test;'Enter password:
+------+
| id |
+------+
| 1 |
| 2 |
+------+ 注意:缺少3.4数据使用增量备份恢复

文章插图
[root@localhost mysql_back]# mysqlbinlog --no-defaults /mysql_back/mysql-bin.000002 | mysql -u root -pEnter password:
[root@localhost mysql_back]# mysql -uroot -p -e ' select * from local.test;'Enter password:
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+

文章插图
2、 给予位置恢复
由于前面做过备份操作,接下来直接进行模拟故障与数据恢复的操作 。
+------+
[root@localhost mysql_back]# mysql -uroot -p -e 'drop table local.test;'Enter password: //模拟误操作删除test表
[root@localhost mysql_back]# mysql -uroot -p -e 'select * from local.test;'Enter password: //查看test表是否存在
ERROR 1146 (42S02) at line 1: Table 'local.test' doesn't exist
[root@localhost mysql_back]# mysql -uroot -p local </mysql_back/local_test-2020-08-10.sqlEnter password: //恢复完全备份
推荐阅读
- 桃花劫什么意思?
- 又一个小而美的Java Web框架:Solon
- ROS的几个重要概念:节点、消息、主题、服务
- 颠覆了我认知!阿里架构师原来是这样定义微服务、分布式构架的
- HashMap这次是真的懂了,扰动函数、负载因子、扩容拆分全搞定
- 万字详文:Java内存泄漏、性能优化、宕机死锁的N种姿势
- 孝庄皇后死后埋在哪里了? 孝庄太后的一生
- 春秋时期晋国是怎么灭亡的 晋国不亡秦国能统一
- 历史上的虢国夫人 虢国夫人是哪个朝代
- 千里江山图王希孟画了多久 王希孟的《千里江山图》
