当前位置:网站首页>linux下mysql数据库备份与恢复(全量+增量)
linux下mysql数据库备份与恢复(全量+增量)
2022-04-23 06:29:00 【Willie Y】
为了模拟mysql数据库的备份与恢复,本文档将介绍数据库的创建、表创建、数据插入、数据库全备份、日志分割、数据恢复等内容
1、数据库创建
登录数据库:
[root@zeshintax02 ~]# mysql -uroot –p
创建数据库tb1,表ttab01:
mysql> create database tb1 default charset utf8mb4;
Query OK, 1 row affected (0.01 sec)
mysql> use tb1
Database changed
mysql> create table ttable01(
-> id int auto_increment primary key,
-> name varchar(15)
-> )engine = InnoDB;
Query OK, 0 rows affected (0.02 sec)
2、插入数据:
3、使用mysqldump全量备份数据:
【注】: 通常使用全备份命令时需要加入参数:
Mysqldump -uroot -p --single-transaction --master-data=2 --routines --flush-logs -B --all-databases > fullbackupfile.sql
参数--single-transaction、 --master-data=2表示一致性备份,一般一起使用,不单用。--routines备份函数触发器、--flush-logs备份前刷新日志(保证数据完全备份,若数据库开了二进制日志,则不需要使用该参数和一致性参数--single-transaction、 --master-data=2)参数-B:最大的特点就是加入了库,数据恢复时不需要再创建库。
4、继续插入数据:
5、使用mysqlbinlog查看日志
mysqlbinlog可以查看数据库二进制日志文件的内容,里面保存了插入数据的语句。查看日志文件:
6、mysqladmin分割日志
为了查看数据库的变化,使用mysqladmin命令中选项flush-logs将数据库新生成的二进制文件进行分割,这样在写入新的数据后,新的二进制文件对应的就是数据库的变化的内容。
查看二进制日志文件是否增加:
插入一条新数据;
使用mysqlbinlog命令可以查看mysql-bin.000003数据库二进制日志文件的内容,里面保存了新插入数据的语句:
再使用mysqladmin中的选项flush-logs将数据库二进制日志文件进行分割:
由于数据库未增删改新的数据,故分割后的二进制日志文件没有相关内容。
此时插入一条数据:
再查看二进制日志文件:
新的二进制日志文件保存了新插入的内容,如上。
二、恢复数据
1、全备份后的部分数据恢复
(1)模拟数据丢失:使用delete删除插入的两条数据
可以查看表中数据少了两条。
(2)利用之前产生的二进制日志文件恢复数据,(需要注意恢复顺序,最早的数据需要先恢复对应的二进制文件):
可以查看到已经恢复成功一条数据,继续恢复另一条:
如此完成两条数据的恢复。
2、全备份后的所以数据恢复
(1)、查看数据数据:
进行日志分割后,二进制文件列表如下:
插入一条数据:
进行日志分割,并查看产生新的二进制文件:
再次插入一条数据:
查看对应的二进制文件,发现写入的数据已经记录:
删除表,之后使用全备+增量备份来恢复数据:
现在进行数据恢复:
A、先全量数据恢复:
可以发现表恢复回来了,查看表数据:
表中保存了全备时的数据,接着恢复增量日志。
B、增量数据恢复,一直到最后一个文件:
【注】:在恢复增量日志时,遇到报错一定要解决才能进行下一个文件恢复,否则可能数据不完整。
版权声明
本文为[Willie Y]所创,转载请带上原文链接,感谢
https://blog.csdn.net/willieyuan/article/details/121922523
边栏推荐
- One of event management
- Dictionary & lt; T1,T2> Sorting problem
- SQL user-defined scalar value function that looks up relevant column values n times forward or backward according to a specified table name, column name and column value
- Gets the maximum getmaxpoint in the list of all points
- Nodejs (I) event driven programming
- 企业微信免登录跳转自建应用
- C SVG path parser of xamarin version
- C # use laida criterion (3) σ Criteria) reject abnormal data (.Net reject singular values in a group of data)
- C operation registry full introduction
- 利用Lambda表达式解决c#文件名排序问题(是100大还是11大的问题)
猜你喜欢
Protobuf 使用
对复杂字典Dictionary<T1,T2>排序问题
MySQL in window10 version does not work after setting remote access permission
C#控制相机,旋转,拖拽观察脚本(类似Scenes观察方式)
Dropping Pixels for Adversarial Robustness
Django uses MySQL database to solve error reporting
The page displays the current time in real time
Dropping Pixels for Adversarial Robustness
Understanding the role of individual units in a deep neural networks
Scrapy modifies the time in the statistics at the end of the crawler as the current system time
随机推荐
双面显示的shader
使用flask时代码无报错自动结束,无法保持连接,访问不了url。
Simple random roll call lottery (written under JS)
C SVG path parser of xamarin version
系统与软件安全研究(一)
面经的总结
Towords Open World Object Detection
SVG中Path Data数据简化及文件夹所有文件批量导出为图片
Unity gets a resource that is referenced by those resources
C#操作注册表全攻略
Rethink | open the girl heart mode of station B and explore the design and implementation of APP skin changing mechanism
SampleCameraFilter
url转成对象
03use of scanner class (console input)
三分钟教你用Houdini流体>>解算粒子流体水滴
C#控制相机,旋转,拖拽观察脚本(类似Scenes观察方式)
NodeJS(四) 字符读取
快排的练习
Gets the maximum getmaxpoint in the list of all points
IT高薪者所具备的人格魅力