MySQL备份与恢复(10)mysqlbinlog命令

筅森魡賤 提交于 2020-04-30 20:29:58

一、mysqlbinlog  #解析 mysql的binlog日志

 

1、mysql的binlog日志是什么?

  数据目录下的如下文件就是

  mysqlbin_oldboy.000001
  mysqlbin_oldboy.000002
  mysqlbin_oldboy.000003
  mysqlbin_oldboy.000004

 

2、mysql的binlog日志作用是什么?

  用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录。

 

 

3、binlog功能怎么打开

    [root@localhost data]# grep log-bin /etc/my.cnf 

    log-bin=mysqlbin_oldboy

4、mysqlbinlog查看日志,(这里不能用cat查看),不记录 select 记录

[root@localhost bak]# ll /application/mysql/data/
总用量 29292
-rw-r--r--. 1 root  root      2014 9月  20 22:24 bin.sql
-rw-rw----. 1 mysql mysql 18874368 9月  21 17:46 ibdata1
-rw-rw----. 1 mysql mysql  5242880 9月  21 17:46 ib_logfile0
-rw-rw----. 1 mysql mysql  5242880 9月  19 01:03 ib_logfile1
-rw-r-----. 1 mysql root     21685 9月  21 17:46 localhost.localdomain.err
-rw-rw----. 1 mysql mysql        5 9月  21 17:46 localhost.localdomain.pid
drwx------. 2 mysql mysql     4096 9月  21 17:07 mysql
-rw-rw----. 1 mysql mysql      547 9月  20 22:18 mysqlbin_oldboy.000001
-rw-rw----. 1 mysql mysql   556247 9月  21 17:44 mysqlbin_oldboy.000002
-rw-rw----. 1 mysql mysql      126 9月  21 17:46 mysqlbin_oldboy.000003
-rw-rw----. 1 mysql mysql      107 9月  21 17:46 mysqlbin_oldboy.000004
-rw-rw----. 1 mysql mysql      100 9月  21 17:46 mysqlbin_oldboy.index
drwx------. 2 mysql mysql     4096 9月  21 17:26 oldboy
drwx------. 2 mysql mysql     4096 9月  21 17:07 oldboy_gbk
drwx------. 2 mysql mysql     4096 9月  21 17:07 oldboy_utf8
drwx------. 2 mysql mysql     4096 9月  19 01:02 performance_schema
[root@localhost bak]# mysql -uroot -pdubin 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use oldboy
Database changed
mysql> show tables;
+------------------+
| Tables_in_oldboy |
+------------------+
| SC               |
| course           |
| student          |
| test             |
| test1            |
+------------------+
5 rows in set (0.00 sec)

mysql> select *from test;
+----+---------+
| id | name    |
+----+---------+
|  1 | oldboy  |
|  2 | oldgirl |
|  3 | inca    |
|  4 | zuma    |
|  5 | kaka    |
+----+---------+
5 rows in set (0.00 sec)

mysql> insert into test1 values(5);
Query OK, 1 row affected (0.12 sec)

mysql> select *from test1;
+------+
| id   |
+------+
|    2 |
|    3 |
|    2 |
|    5 |
+------+
4 rows in set (0.00 sec)

mysql> insert into test1 values(4);
Query OK, 1 row affected (0.00 sec)

mysql> select *from test1;
+------+
| id   |
+------+
|    2 |
|    3 |
|    2 |
|    5 |
|    4 |
+------+
5 rows in set (0.00 sec)

mysql> update test set id=1 where id=3;
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> update test1 set id=1 where id=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select *from test1;
+------+
| id   |
+------+
|    2 |
|    1 |
|    2 |
|    5 |
|    4 |
+------+
5 rows in set (0.00 sec)

mysql> quit
Bye
[root@localhost bak]# ll /application/mysql/data/
总用量 29292
-rw-r--r--. 1 root  root      2014 9月  20 22:24 bin.sql
-rw-rw----. 1 mysql mysql 18874368 9月  21 20:42 ibdata1
-rw-rw----. 1 mysql mysql  5242880 9月  21 20:42 ib_logfile0
-rw-rw----. 1 mysql mysql  5242880 9月  19 01:03 ib_logfile1
-rw-r-----. 1 mysql root     21685 9月  21 17:46 localhost.localdomain.err
-rw-rw----. 1 mysql mysql        5 9月  21 17:46 localhost.localdomain.pid
drwx------. 2 mysql mysql     4096 9月  21 17:07 mysql
-rw-rw----. 1 mysql mysql      547 9月  20 22:18 mysqlbin_oldboy.000001
-rw-rw----. 1 mysql mysql   556247 9月  21 17:44 mysqlbin_oldboy.000002
-rw-rw----. 1 mysql mysql      126 9月  21 17:46 mysqlbin_oldboy.000003
-rw-rw----. 1 mysql mysql      679 9月  21 20:42 mysqlbin_oldboy.000004
-rw-rw----. 1 mysql mysql      100 9月  21 17:46 mysqlbin_oldboy.index
drwx------. 2 mysql mysql     4096 9月  21 17:26 oldboy
drwx------. 2 mysql mysql     4096 9月  21 17:07 oldboy_gbk
drwx------. 2 mysql mysql     4096 9月  21 17:07 oldboy_utf8
drwx------. 2 mysql mysql     4096 9月  19 01:02 performance_schema
[root@localhost bak]# cd /application/mysql/data/
[root@localhost data]# cat mysqlbin_oldboy.000004                                                      ]Fststd!!!oldboyinsert into test1 values(5)]    ]Fstd!!!oldboyBEGIN]\ȁstd!!!oldboyinsert into test1 values(4)] 
   ]Fstd!!!oldboyBEGIN¿]astd!!!oldboyupdate test1 set id=1 where id=3¿][root@localhost data]# 
[root@localhost data]# mysqlbinlog mysqlbin_oldboy.000004
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#190921 17:46:21 server id 1  end_log_pos 107     Start: binlog v 4, server v 5.5.32-log created 190921 17:46:21 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
bfGFXQ8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABt8YVdEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#190921 20:41:38 server id 1  end_log_pos 177     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1569069698/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 177
#190921 20:41:38 server id 1  end_log_pos 269     Query    thread_id=2    exec_time=0    error_code=0
use `oldboy`/*!*/;
SET TIMESTAMP=1569069698/*!*/;
insert into test1 values(5)
/*!*/;
# at 269
#190921 20:41:38 server id 1  end_log_pos 296     Xid = 9
COMMIT/*!*/;
# at 296
#190921 20:41:49 server id 1  end_log_pos 366     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1569069709/*!*/;
BEGIN
/*!*/;
# at 366
#190921 20:41:49 server id 1  end_log_pos 458     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1569069709/*!*/;
insert into test1 values(4)
/*!*/;
# at 458
#190921 20:41:49 server id 1  end_log_pos 485     Xid = 11
COMMIT/*!*/;
# at 485
#190921 20:42:39 server id 1  end_log_pos 555     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1569069759/*!*/;
BEGIN
/*!*/;
# at 555
#190921 20:42:39 server id 1  end_log_pos 652     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1569069759/*!*/;
update test1 set id=1 where id=3
/*!*/;
# at 652
#190921 20:42:39 server id 1  end_log_pos 679     Xid = 14
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
[root@localhost data]# mysql -uroot -pdubin 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

5、mysqlbinlog -d  数据库  数据库日志分库

 

mysql> create table oldgirl(name char(10));
Query OK, 0 rows affected (0.16 sec)

mysql> insert into oldgirl values("oldgirl");
Query OK, 1 row affected (0.01 sec)

mysql> insert into oldgirl values("ddddd");
Query OK, 1 row affected (0.00 sec)

mysql> select * from oldgirl;
+---------+
| name    |
+---------+
| oldgirl |
| ddddd   |
+---------+
2 rows in set (0.00 sec)

[root@localhost data]# mysqlbinlog mysqlbin_oldboy.000004 >all.sql
[root@localhost data]# less all.sql
[root@localhost data]# mysqlbinlog -d oldboy mysqlbin_oldboy.000004 >oldboy.sql

[root@localhost data]# vimdiff oldboy.sql all.sql

 

 

 

 

二、基于位置点和时间点的增量恢复

 

1、指定开始位置和结束位置(不指定开始位置是从头开始,不指定结束位置是到结尾)

 

 

 2、指定开始时间和结束时间(与上述同理)(-r 代表大于号)

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!