一、binlog 介紹
服務器的二進制日志記錄著該數據庫的所有增刪改的操作日志(前提是要在自己的服務器上開啟binlog),還包括了這些操作的執行時間。為了顯示這些二進制內容,我們可以使用mysqlbinlog命令來查看。
用途1:主從同步
用途2:恢復數據庫(也是線上出現一次數據庫文件丟失后,才對這個有所了解并學習的)
mysqlbinlog命令用法:shell> mysqlbinlog [options] log_file ...
<!--[if !supportLists]-->1) mysqlbinlog 選項示例
常見的選項有以下幾個:
--start-datetime
從二進制日志中讀取指定等于時間戳或者晚于本地計算機的時間。取值如:="1470733768" 或者="2016-08-09 5:09:28"
示例:
| [root@hcloud ~]# mysqlbinlog --start-datetime="2016-08-09 5:05:27" /var/lib/mysql/mysql-bin.000001 --stop-datetime |
從二進制日志中讀取指定小于時間戳或者等于本地計算機的時間 取值和上述一樣
--start-position
從二進制日志中讀取指定position 事件位置作為開始。取值:="2698"
示例:
| [root@hcloud ~]# mysqlbinlog --start-position="2698" /var/lib/mysql/mysql-bin.000001 --stop-position |
從二進制日志中讀取指定position 事件位置作為事件截至。取值:="2698"
二、環境準備以及備份恢復
1) 安裝好mysql后,檢查開啟binlog
mysql> SHOW BINARY LOGS;
ERROR 1381 (HY000): You are not using binary logging :上面提示說明沒有服務器開啟binlog
修改/etc/my.cnf
在mysqld選項中添加 一行內容如下:
log-bin=mysql-bin
默認如果不給值的話,log-bin 的會以mysqld-bin 為索引,創建mysqld-bin.00001等
重啟mysqld即可。
2) 檢查下binlog
| mysql> show binary logs;+------------------+-----------+| Log_name | File_size |+------------------+-----------+| mysql-bin.000001 | 106 |+------------------+-----------+1 row in set (0.00 sec) |

3) 先創建一些原始數據。
| mysql> create database Test_DB;Query OK, 1 row affected (0.00 sec)mysql> use Test_DB;Database changedmysql> CREATE TABLE OneTb(id INT(10) NOT NULL,name varchar(20),age INT(10));Query OK, 0 rows affected (0.00 sec)mysql> insert into OneTb values (1,'user1',18);mysql> insert into OneTb values (2,'user2',19);insert into OneTb values (3,'user3',20); |
檢查下數據:
| mysql> select * from OneTb;+----+-------+------+| id | name | age |+----+-------+------+| 1 | user1 | 18 || 2 | user2 | 19 || 3 | user3 | 20 |+----+-------+------+3 rows in set (0.00 sec) |