Bootstrap

mysqlBackup

一,首先一直有个疑问,就是mysql的binlog日志是在数据更新之后执行flush logs 存入到新的binlog日志当中呢还是说存入到当前所在的binlog日志内

首先这是目前最新的日志文件

之后创建了新的一个库

mysql> create database test1;

Query OK, 1 row affected (0.00 sec)

之后又刷新了mysql的binlog日志

之后创建了新的binlog日志

接下来检测一下这个创建库的内容被记录在了那个binlog日志里面就可以得出顺序

首先我们先查看mysql-bin.000104

mysqlbinlog mysql-bin.000104

其实不接着往下看已经得出了结论,数据库的日志文件是直接存储到目前最新的库里面,而不是刷新之后存入到新的里面

mysqlbinlog mysql-bin.000105

二,接下来开始做一个mysql 完整备份和增量备份的过程

实验过程

创建一个新的库test

之后往test库里写一个表student 一共插入五条数据 列名分别为 id and name

sql-- 使用数据库 USE test; -- 创建表 CREATE TABLE IF NOT EXISTS student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 插入数据 INSERT INTO student (name) VALUES ('张三'); INSERT INTO student (name) VALUES ('李四'); INSERT INTO student (name) VALUES ('王五'); INSERT INTO student (name) VALUES ('赵六'); INSERT INTO student (name) VALUES ('孙七');

插入成功之后退出数据库首先做一个完整备份

使用mysqldump命令

之后我们在进入数据库,先刷新一个新的binlog日志,之后紧接着插入多条新的数据

之后我们删除掉这个库

drop database test

紧接着来验证完整备份

我们先创建test这个库

之后退出数据库去找之前创建的完整备份backup.sql

使用这个命令恢复,-p 后面跟的是库名字

mysql -u root -p test < backup.sql

之后我们登录数据库select查看一下表内容

可以看到最初我们创建的哪些数据都在里面,接下来就只需要去利用之前创建的mysqlbinlog去恢复我们之后的哪些数据就行,以此来完成增量备份的恢复

可以使用这个mysqlbinlog来查看内容

注意里面的at 表示位置也成为了post位置

我们使用

mysqlbinlog -uroot -p mysql-bin.000106 --start-position=4 --stop-position=980 -r /111.sql

命令解释就是 一般情况下 -p后面跟的是数据库的名字,然后 --start后面跟你想要恢复数据在

binlog日志内开始的位置,stop就是结束的 -r 指定sql文件保存的位置

只有我们来恢复他

可以看到恢复成功

;