mysqldump+binlog实现完全+增量备份

一、备份类型

热备份、温备份、冷备份 (根据服务器状态)
    热备份:读、写不受影响;
    温备份:仅可以执行读操作;
    冷备份:离线备份;读、写操作均中止;

物理备份与逻辑备份 (从对象来分)
    物理备份:复制数据文件;
    逻辑备份:将数据导出至文本文件中;

完全备份、增量备份、差异备份 (从数据收集来分)
    完全备份:备份全部数据;
    增量备份:仅备份上次完全备份或增量备份以后变化的数据;
    差异备份:仅备份上次完全备份以来变化的数据;

二、mysqldump+binlog实现完全+增量备份

1、素材准备

mysql> create database school;
Query OK, 1 row affected (0.01 sec)

mysql> use school
Database changed
mysql> CREATE TABLE `Student` (
    ->   `Sno` int(10) NOT NULL COMMENT '学号',  `Sname` varchar(16) NOT NULL COMMENT '姓名',
    ->   `Ssex` char(2) NOT NULL COMMENT '性别',  `Sage` tinyint(2) NOT NULL DEFAULT '0' COMMENT '学生年龄',
    ->   `Sdept` varchar(16) DEFAULT 'NULL' COMMENT '学生所在系别',  PRIMARY KEY (`Sno`)
    -> ) ;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> INSERT INTO `Student` VALUES (1, '陆亚', '男', 24, '计算机网络'),(2, 'tom', '男', 26, '英语'),(3, '张阳', '男', 21, '物流管理'), (4, 'alex', '女', 22, '电子商务');
Query OK, 4 rows affected (0.02 sec)
Records: 4  Duplicates: 0  Warnings: 0

2、数据备份

完全备份:

[root@localhost mysqlbak]mysqldump --opt -B school > school.sql
插入数据:
INSERT INTO Student values(0005,'xumubin','男',29,'中文专业'),(0006,'wangzhao','男',21,'导弹专业');
模拟数据损坏:
mysql> drop database school;
Query OK, 1 row affected (0.04 sec)
刷新日志并保存:
mysql> flush logs;
Query OK, 0 rows affected (0.03 sec)
mysql> show binary logs;

mysql> system cp /var/lib/mysql/binlog.000001 /mysqlbak
查看二进制日志:

使用mysqlbinlog
    #注意5.7版本,insert语句已经加密,默认看不到,查看时加上选项 --base64-output=DECODE-ROWS -vv

1、基于时间点增量恢复

[root@openEuler-2 mysqlbak]# mysqlbinlog binlog.000001 --start-datetime='2025-01-17 15:42:57' --stop-datetime='2025-01-17 15:45:32' -r time1.sql
还原完全备份
mysql> source /mysqlbak/school.sql
mysql> select * from school.Student;

还原增量备份
mysql> source /mysqlbak/time1.sql
mysql> select * from school.Student;

2、基于位置点恢复

[root@openEuler-2 mysqlbak]# mysqlbinlog binlog.000001 --start-position=1708 --stop-position=2254 -r pos1.sql
[root@openEuler-2 mysqlbak]# mysql < school.sql 
[root@openEuler-2 mysqlbak]# mysql school< pos1.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值