做药品网站规划方案,做个小程序多少钱,网线接网线正确接线方法,站长统计推荐操作系统#xff1a;22.04.1-Ubuntu mysql 版本#xff1a;8.033 binlog 介绍
binlog 是mysql 二进制日志 binary log的简称#xff0c;可以简单理解为数据的修改记录。 需要开启binlog,才会产生文件#xff0c;mysql 8.0 默认开启,开启后可以在 /var/lib/mysql #xff…操作系统22.04.1-Ubuntu mysql 版本8.033 binlog 介绍
binlog 是mysql 二进制日志 binary log的简称可以简单理解为数据的修改记录。 需要开启binlog,才会产生文件mysql 8.0 默认开启,开启后可以在 /var/lib/mysql 这是mysql默认数据存储路径如果用户自己指定则另说 目录下看到一系列 binlog.xxxxxx 的文件
binlog刷新
每次mysql重启 都会生成一个新的binlog文件也可以使用命令来刷新binlog 1、进入mysql使用flush logs会看到新生成了新的binlog.000011文件 2、mysqladmin -uroot -p flush-logs这里也需要root账号密码
备份与恢复
以下是官网的关于备份与恢复的翻译 完整备份是必要的但创建它们并不总是很方便。它们会生成大型备份文件并且需要时间来生成。它们不是最佳的因为每次连续的完全备份都包括所有数据即使是自上次完全备份以来没有更改的部分。先进行初始完全备份然后进行增量备份会更高效。增量备份更小生成时间更短。代价是在恢复时不能仅通过重新加载完整备份来恢复数据。您还必须处理增量备份以恢复增量更改 官网关于备份恢复的链接 简而言之就是2种方式完整和增量优缺点也如上所述下面描述2种方式的使用
完整备份与恢复
完整备份就是将所有数据以表的形式进行保存
备份
命令
mysqldump --all-databases --master-data --single-transaction back_20220806_112100.sql备份的同时刷新binlog文件
mysqldump --single-transaction --flush-logs --master-data2 --all-databases back_20220806_112100.sqlmysqldump 指令选项说明
恢复
如何恢复
执行指令
mysql back_20220806_112100.sql如果需要密码则
mysql -uroot -p back_20220806_112100.sql该指令相当于执行了备份文件中的sql语句。
可以先可以查看 备份文件发现里面基本是以下语句删除表创建表数据的插入显然是以表为单位来备份的恢复时也是以表来恢复的 因此可以得出结论在利用备份文件进行数据恢复时会恢复备份前的所有表数据但不包括备份后新增加的表新增的表有以下2中情况 1、同一个数据库存在相同的表则被则会被覆盖 2、同一个数据库存在不同的表则忽略因为备份文件中不含任何对该表的操作
增量恢复
备份
前面我们已经描述过 binlog是一个数据修改记录的文件默认一个binlog文件代表一次运行的所有数据修改记录然后也可以使用命令强制生成一个新的binlog文件作为新的起点来记录数据修改过程因此增量备份其实是自动的就是一个个binlog文件
恢复
恢复的前提是要备份完整备份和增量备份在上面已经描述清楚因此数据恢复就是利用备份文件binlog文件来做任意回滚
举个例子执行备份指令
mysqldump --single-transaction --flush-logs --master-data2 --all-databases back_20220806_153500.sql生成备份文件以及新的binlog文件从000005开始的binlog文件都是back_20220806_153500.sql备份文件的增量文件 在上面的基础上生成了back_20220806_153500.sql 以及新的binlog.000005现在做一个简单测试来验证数据恢复分为几个步骤
步骤1、新增一个数据库incrementTestDatabase,再添加一个表incrementTestTable包含了id、test字段,以及一条数据1“test1”步骤2、刷新binlog日志步骤3、删除incrementTestTable在创建一个incrementTestTable表包含了id、test字段,以及一条数据2“test2”步骤4、恢复成1中的数据1“test1”步骤5、恢复成3中的数据2“test2” 开始测试 执行步骤12效果 执行步骤3后 现在我们开始执行步骤4 显然我们知道 binlog.000005中包含了数据1“test1”的新建 binlog.000006中包含了表的删除及2“test2”的新建 因此要恢复到步骤1只需要back_20220806_153500.sql binlog.000005 先恢复备份
mysql -uroot -p back_20220806_153500.sql备份基础上恢复修改记录
mysqlbinlog binlog.000005 | mysql -uroot -p结果如下与预料中的一样
现在我们开始执行步骤5在步骤4的基础上恢复binlog.000006
mysqlbinlog binlog.000006 | mysql -uroot -p结果如下与预料中的一样