目录

  • 一、MySQL数据库增量备份恢复
    • 1.1 物理冷备份,开启服务
    • 1.2 开启二进制日志文件
    • 1.3 创建库和表,进行完全备份和增量备份
    • 1.4 进行正常操作和误操作,进行增量备份
    • 1.5 查看增量备份文件
    • 1.6 模拟故障,删除表并进行恢复
    • 1.7 使用基于时间点的断点恢复
    • 1.8 使用基于位置的断点恢复

一、MySQL数据库增量备份恢复

1.1 物理冷备份,开启服务

[root@localhost ~]# tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data
[root@localhost ~]# ls /opt
mysql-2020-01-08.tar.xz  mysql-5.7.17  rh
[root@localhost ~]# systemctl start mysqld

1.2 开启二进制日志文件

[root@localhost mysql]# vim /etc/my.cnf                                               #####编辑my.cnf配置文件
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]                                                                                                       #####找到这个模块,在[mysqld]项中加入配置 log-bin=mysql-bin
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
log-bin=/usr/local/mysql/data/mysql-bin                            ####这个地方开启二进制日志功能sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES[root@localhost mysql]# systemctl restart mysqld                                           ####重启数据库[root@localhost ~]# ll /usr/local/mysql/data/
总用量 122924
-rw-r----- 1 mysql mysql       56 8月   9 16:16 auto.cnf
-rw-r----- 1 mysql mysql      308 8月  15 05:50 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 8月  15 05:50 ibdata1
-rw-r----- 1 mysql mysql 50331648 8月  15 05:50 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 8月   9 16:16 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 8月  15 05:50 ibtmp1
drwxr-x--- 2 mysql mysql     4096 8月   9 16:16 mysql
-rw-r----- 1 mysql mysql      154 8月  15 05:50 mysql-bin.000001                            ####二进制日志文件
-rw-r----- 1 mysql mysql       39 8月  15 05:50 mysql-bin.index
drwxr-x--- 2 mysql mysql     8192 8月   9 16:16 performance_schema
drwxr-x--- 2 mysql mysql     8192 8月   9 16:16 sys

1.3 创建库和表,进行完全备份和增量备份

[root@localhost data]# mysql -uroot -p
Enter password:     ###输入密码登陆
mysql> create database yiku; ###创建库
Query OK, 1 row affected (0.00 sec)mysql> use yiku;  ###使用库
Database changedmysql> create table yibiao (id int(4) primary key,name char(10));    ###创建表
Query OK, 0 rows affected (0.00 sec)mysql> insert into yibiao values(1,'zhangsan'),(2,'lisi');   ##插入记录
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from yibiao;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)
mysql>exit
[root@localhost data]# mysqldump -uroot -p yiku > /opt/yiku.sql ###进行完全备份
Enter password:
[root@localhost data]# mysqladmin -uroot -p flush-logs ###进行增量备份
Enter password:
[root@localhost data]# cd /usr/local/mysql/data/
[root@localhost data]# lsmysql-bin.000001   mysql-bin.000002  ...省略内容...
###发现已经有了增量备份文件,刚刚备份的操作记录都存放在 mysql-bin.000001中, mysql-bin.000002是准备存放后续操作的

1.4 进行正常操作和误操作,进行增量备份

mysql> insert into yibiao values(3,'wangwu');   ###正常操作
Query OK, 1 row affected (0.00 sec)mysql> delete from yibiao where name='wangwu'; ###误操作
Query OK, 1 row affected (0.00 sec)mysql> insert into yibiao values(4,'zhaoliu');  ###正常操作
Query OK, 1 row affected (0.00 sec)mysql> select * from yibiao;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  4 | zhaoliu  |
+----+----------+
3 rows in set (0.00 sec)
mysql>  exit
Bye
[root@localhost data]# mysqladmin -uroot -p flush-logs;    ###再次增量备份
Enter password:
[root@localhost data]# ls  ###发现再次生成新的增量备份文件ysql-bin.000003
mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 ###刚刚的正常操作和无操作都存放到了mysql-bin.000002中

1.5 查看增量备份文件

[root@localhost data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 > /opt/bak.txt
[root@localhost data]# vim /opt/bak.txt    ###发现能够查看到刚刚的操作语句
...省略内容...
# at 343    ###正常操作语句段
#200108  0:29:18 server id 1  end_log_pos 390 CRC32 0x9ada4ac9  Write_rows: table id 219 flags: STMT_END_F
### INSERT INTO `yiku`.`yibiao`
### SET
###   @1=3
###   @2='wangwu'
# at 390
...省略内容
# at 558    ###误操作语句段,558为误操作语句的开始位置id,200108  0:29:56 为误操作语句的开始位置时间,也是上一语句的结束时间
#200108  0:29:56 server id 1  end_log_pos 610 CRC32 0xb990c664  Table_map: `yiku`.`yibiao` mapped to number 219
# at 610
#200108  0:29:56 server id 1  end_log_pos 657 CRC32 0x1738ac5d  Delete_rows: table id 219 flags: STMT_END_F
### DELETE FROM `yiku`.`yibiao`
### WHERE
###   @1=3
###   @2='wangwu'
# at 657
...省略内容
# at 825    ###正常操作语句段,825为正常操作语句的开始位置id,200108  0:30:11 为正常操作语句的开始位置时间,也是上一语句的结束时间
#200108  0:30:11 server id 1  end_log_pos 877 CRC32 0x89f71cba  Table_map: `yiku`.`yibiao` mapped to number 219
# at 877
#200108  0:30:11 server id 1  end_log_pos 925 CRC32 0xae064160  Write_rows: table id 219 flags: STMT_END_F
### INSERT INTO `yiku`.`yibiao`
### SET
###   @1=4
###   @2='zhaoliu'
# at 925
#200108  0:30:11 server id 1  end_log_pos 956 CRC32 0xe6213e68  Xid = 57
...省略内容...

1.6 模拟故障,删除表并进行恢复

[root@localhost data]# mysql -uroot -p
Enter password:
mysql> drop table yibiao;    ###删除原有的表
Query OK, 0 rows affected (0.01 sec)mysql> show tables;
Empty set (0.00 sec)mysql> source /opt/yiku.sql; ###恢复库mysql> show tables;    ###恢复成功
+----------------+
| Tables_in_yiku |
+----------------+
| yibiao         |
+----------------+
1 row in set (0.00 sec)mysql> select * from yibiao;  ###恢复成功
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)

1.7 使用基于时间点的断点恢复

[root@localhost data]# mysqlbinlog --no-defaults --stop-datetime='2020-10-18  0:29:56' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p ###第一个正常操作的结尾时间是2020-10-18  00:29:56,所以此处用此时间,表示恢复到此时间的操作
###时间在4.5查看增量备份文件中有写
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use yiku;
mysql> select * from yibiao; ###查看表,发现恢复成功了
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
+----+----------+
3 rows in set (0.00 sec)
[root@localhost data]# mysqlbinlog --no-defaults --start-datetime='2020-10-18  00:30:11' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p  ###第二个十误操作,我们要跳过。第三个正常操作的结尾时间是2020-10-18  00:30:11,所以此处用此时间,表示从此时间恢复到结尾的操作
###时间在4.5查看增量备份文件中有写
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use yiku;
mysql> select * from yibiao; ###查看表,发现恢复成功了
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
|  4 | zhaoliu  |
+----+----------+
4 rows in set (0.00 sec)

1.8 使用基于位置的断点恢复

'//先删除刚刚恢复的两个表记录'
mysql> delete from yibiao where id=3;
Query OK, 1 row affected (0.01 sec)mysql> delete from yibiao where id=4;
Query OK, 1 row affected (0.00 sec)mysql> select * from yibiao;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)
mysql> exit
[root@localhost data]# mysqlbinlog --no-defaults --stop-position='558' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p    ###错误操作真正开始的位置是558,而不是610,所以要恢复到558位置结束
###位置在4.5查看增量备份文件中有写
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use yiku;
mysql> select * from yibiao; ###查看表,发现恢复成功了
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
+----+----------+
3 rows in set (0.00 sec)
[root@localhost data]# mysqlbinlog --no-defaults --start-position='825' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p   ###正常操作真正开始的位置是825,而不是877,所以要恢复到825位置结束
###位置在4.5查看增量备份文件中有写
Enter password:
[root@localhost data]# mysql -u root -p
Enter password:
mysql> use yiku;
mysql> select * from yibiao; ###查看表,发现恢复成功了
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
|  4 | zhaoliu  |
+----+----------+
4 rows in set (0.00 sec)

实验——MySQL数据库增量备份恢复相关推荐

  1. C 实现Mysql增量备份_window下mysql数据库增量备份实现教程

    mysql增量备份(mysql5.1 之后),linux下mysql增量备份 网上资料很多.这里只说明window下mysql增量备份. 定义: mysql数据库会以二进制的形式,自动把用户对mysq ...

  2. windows mysql增量备份_关于window下mysql数据库增量备份

    mysql增量备份(mysql5.1 之后),linux下mysql增量备份 网上资料很多.这里只说明window下mysql增量备份. 定义: mysql数据库会以二进制的形式,自动把用户对mysq ...

  3. python比较数据库表今天跟前一天数据增量,Python 生产环境Mysql数据库增量备份脚本...

    Mysql数据库常用的办法是通过mysqldump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍blog介绍xtrabackup的热备工具.下面的脚本是基于 ...

  4. python 增量备份mysql_Python 生产环境MySQL数据库增量备份脚本

    MySQL数据库常用的办法是通过MySQLdump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍文章介绍xtrabackup的热备工具,见 http://w ...

  5. MySQL数据库--增量备份--差异备份--区别于解析

    增量备份的备份原理 增量备份的工作原理是除了第一次备份外每次备份所依赖的是上次的增量备份,只有在上一次完全备份或增量备份后被修改的文件才会被备份 工作原理 序列 备份数据 数据库变动 第一次备份 a表 ...

  6. MySQL数据库授权备份恢复

    授权 (grant) grant 权限 on 库名.表名 to '用户名'@'来源地址' identified by '密码'; 来源地址 192.168.1.1 表示192.168.1.1这个IP ...

  7. Mysql数据库增量备份与恢复

    一.MySQL 增量备份概念 使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长. 而增量备份就是备份自上一次备份之后增加或改变的文件或内容. 1.增量备份的特点: ...

  8. MySQL数据库-完全备份及恢复

    MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑 ...

  9. MySQL 数据库的备份和恢复

    MySQL 数据库的备份和恢复 imysql.cn 2006年09月30日 23:56 查看25126次 作者:   [大 中 小] 文章分类:数据库技术 关键字: mysql,mysqldump,导 ...

最新文章

  1. python搜题程序_智慧树Python程序设计基础搜题公众号
  2. 《用Python进行自然语言处理》第 1 章 语言处理与 Python
  3. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
  4. VirtualKD + VMWare双机调试(失败)
  5. Mac下PyCharm CE 配置PyQt5环境
  6. [转]Teach Yourself Programming in Ten Years——用十年教会自己编程
  7. 女老师vs男老师的区别...
  8. 简单的Spring Boot管理员设置
  9. android 混合现实,基于Android的增强现实客户端的设计与实现
  10. 【flink】Flink 1.12.2 源码浅析 : yarn-per-job模式解析 JobMasger启动 YarnJobClusterEntrypoint
  11. php生成静态翻页,PHP高手,我刚刚学PHP,在生成静态分页遇到了点有关问题,就是翻页的有关问题,希望可以給出一个漂亮完整的翻页代码,多谢...
  12. spring集成testng
  13. type python django models_Python菜鸟之路:Django ModelForm的使用
  14. 福建农林大学外事处界面设计
  15. 香港城市大学计算机专业选课,香港城市大学传播与新媒体专业课程设置
  16. SpringBoot2.0系列教程(四)Springboot框架自定义消息转换器
  17. “似乎不能再叫闵大荒了。”
  18. React基础 ① -- 从零开始
  19. 对象转SortedMap,字段按照首字母排序
  20. 淘宝商品详情API接口(商品价格接口,商品属性接口)

热门文章

  1. 黄聪:清理微信浏览网站的缓存,Cookie
  2. 展示个人作品集最好的方式
  3. 不懂驾驭人性,你还谈什么管理?
  4. 机器人教育在高科技领域的主观作用
  5. 可怕的乖孩子_你知道乖孩子的一生,有多可怕吗?
  6. 李一男离开华为时给属下的忠告
  7. java语言程序设计丁振凡ppt_Java语言程序设计(第2版)丁振凡第2章.ppt
  8. 2021年安全员-B证(广西省-2021版)找解析及安全员-B证(广西省-2021版)试题及解析
  9. 基于Android的点餐系统设计与实现
  10. 蓝桥杯算法(python)