特点
mysqlbinlog [--no-defaults] 增量备份文件 | mysql -u 用户名 -p
案例
[root@promote opt]# vim /etc/my.cnf
log-bin=mysql-bin ##添加该语句
[root@promote opt]# systemctl restart mysqld
[root@promote opt]# cd /usr/local/mysql/data/
[root@promote data]# ll
-rw-r-----. 1 mysql mysql 48 8月 22 14:11 master.info
drwxr-x---. 2 mysql mysql 4096 8月 15 12:58 mysql
-rw-r-----. 1 mysql mysql 1303 8月 21 17:04 mysql-bin.000001
[root@promote opt]# mysqldump -u root -p123 auth info > /opt/info.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@promote opt]# ll
总用量 135740
-rw-r--r--. 1 root root 83709983 6月 24 2018 boost_1_59_0.tar.gz
-rw-r--r--. 1 root root 787762 8月 19 15:47 enough.sql
-rw-r--r--. 1 root root 2228 8月 22 14:20 info.sql
drwxr-xr-x. 37 7161 31415 4096 8月 15 12:49 mysql-5.7.17
-rw-r--r--. 1 root root 51433090 6月 24 2018 mysql-5.7.17.tar.gz
-rw-r--r--. 1 root root 1515870 8月 19 13:11 mysql_all-2020-08-19.tar.gz
-rw-r--r--. 1 root root 1515822 8月 19 13:00 mysql_.tar.gz
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
-rw-r--r--. 1 root root 3951 8月 19 15:41 taobao.sql
-rw-r--r--. 1 root root 4231 8月 19 15:45 taobao_user.sql
############ 做增量备份恢复之前需要做完全备份还原#################
[root@promote opt]#mysql -u root -p123 < /opt/info.sql
[root@promote opt]# mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p
格式
恢复数据到指定位置
mysqlbinlog --stop-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码
从指定的位置开始恢复数据
mysqlbinlog --start-position=’操作 id’ 二进制日志 |mysql -u 用户名 -p 密码
从日志开头截止到某个时间点的恢复
格式
mysqlbinlog [--no-defaults] --stop-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码
从某个时间点到日志结尾的恢复
格式
mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码
从某个时间点到某个时间点的恢复
格式
mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒’ --stop-datetime=’年-月-日小时:分钟:秒’ 二进制日志 | mysql -u 用户名 -p 密码
== 注意事项==
假设如下是停止的位置,那么看位置at 之后,第一个at 1203 是插入info06 表的操作位置,at 1257 不是。时间点是2020-08-23 16:26:02 注意时间格式
想要停止某个操作,查找这个操作的位置进行–stop-position =‘位置’ 即可,是指操作到这个位置就停止不执行这个记录的操作
# at 1203
#200823 16:26:02 server id 1 end_log_pos 1257 CRC32 0x20b403ae Table_map: `auth`.`info06` mapped to number 232
# at 1257
#200823 16:26:02 server id 1 end_log_pos 1356 CRC32 0xe5ad7721 Write_rows: table id 232 flags: STMT_END_F
### INSERT INTO `auth`.`info06`
### SET
### @1=1
### @2='qq'
### @3=8
[root@localhost data]#/usr/local/mysql/bin/mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v mysql-bin.000001
[root@localhost data]#/usr/local/mysql/bin/mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v mysql-bin.000001 > /opt/bk01.txt
[root@localhost data]#cat /opt/bk01.txt
(1)需求描述
用户信息
[root@promote opt]# vim /etc/my.cnf
log-bin=mysql-bin ##添加该语句
[root@promote opt]# cd /usr/local/mysql/data
[root@promote data]# ll
-rw-r-----. 1 mysql mysql 154 8月 23 12:10 mysql-bin.000001
-rw-r-----. 1 mysql mysql 19 8月 23 12:10 mysql-bin.index
[root@localhost ~]# mysqldump -u root -p client user_info > client-userinfo.sql
[root@localhost ~]# mysqladmin -uroot -p flush-logs
Enter password: //输入数据库密码
MySQL [(none)]> use client;
Database changed
MySQL [client]> insert into user_info values('000009','赵六','男','019','37');
Query OK, 1 row affected (0.00 sec)
MySQL [client]> insert into user_info values('000010','孙七','男','020','36');
Query OK, 1 row affected (0.00 sec)
MySQL [client]>
[root@localhost ~]# mysqladmin -uroot -p flush-logs
Enter password: //输入数据库密码
[root@localhost ~]# mysql -u root -p -e 'drop table client.user_info;'
[root@localhost ~]# mysql -u root -p client < client-userinfo.sql
[root@localhost ~]# mysql -u root -p
MySQL [(none)]> use client
Database changed
MySQL [client]> select * from user_info;
+--------------+--------+--------+--------+----------+
| IdentityCard | name | gender | UserID | expenses |
+--------------+--------+--------+--------+----------+
| 000006 | 张三 | 男 | 016 | 10 |
| 000007 | 李四 | 女 | 017 | 91 |
| 000008 | 王五 | 女 | 018 | 23 |
+--------------+--------+--------+--------+----------+
5 rows in set (0.00 sec)
[root@localhost ~]# mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002| mysql -u root -p
Enter password:
[root@Mysql1 ~]# mysql -u root -p
Enter password:
MySQL [(none)]> use client;
Database changed
MySQL [client]> select * from user_info;
| IdentityCard | name | gender | UserID | expenses |
+----------+-------+-------+-----------+-------+
| 000006 | 张三 | 男 | 016 | 10 |
| 000007 | 李四 | 女 | 017 | 91 |
| 000008 | 王五 | 女 | 018 | 23 |
| 000009 | 赵六 | 男 | 019 | 37 |
| 000010 | 孙七 | 男 | 020 | 36 |
+----------+-------+-------+-----------+-------+
6 rows in set (0.00 sec)
[root@localhost data]#/usr/local/mysql/bin/mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v mysql-bin.000001
[root@localhost ~]# mysqlbinlog --stop-position='623' /mysql_bak/data/mysql-bin.000002 | mysql -uroot -p
Enter password:
[root@Mysql1 ~]# mysql -u root -p
Enter password:
MySQL [(none)]> use client;
Database changed
MySQL [client]> select * from user_info;
+-----------+--------+--------+-------------+--------+
| IdentityCard | name | gender | UserID | expenses |
+-----------+--------+--------+-------------+--------+
| 000006 | 张三 | 男 | 016 | 10 |
| 000007 | 李四 | 女 | 017 | 91 |
| 000008 | 王五 | 女 | 018 | 23 |
| 000009 | 赵六 | 男 | 019 | 37 |
+-----------+--------+--------+-------------+--------+
5 rows in set (0.00 sec)
[root@localhost ~]# mysqlbinlog --stop-datetime='2020-01-02 16:41:24' /mysql_bak/data/mysql-bin.000002 | mysql -u root -p
Enter password:
[root@Mysql1 ~]# mysql -u root -p
Enter password:
MySQL [(none)]> use client;
Database changed
MySQL [client]> select * from user_info;
+----------+-------+------+------------+--------+
| IdentityCard | name | gender | UserID | expenses |
+----------+-------+------+------------+--------+
| 000006 | 张三 | 男 | 016 | 10 |
| 000007 | 李四 | 女 | 017 | 91 |
| 000008 | 王五 | 女 | 018 | 23 |
| 000009 | 赵六 | 男 | 019 | 37 |
+----------+-------+------+------------+--------+
6 rows in set (0.00 sec)