標籤:mysql增量恢複
mysql增量恢複過程
建立一張用於測試的表
mysql> create table user (name char(10),age int(3));Query OK, 0 rows affected (0.07 sec)mysql> desc user;+-------+----------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| name | char(10) | YES | | NULL | || age | int(3) | YES | | NULL | |+-------+----------+------+-----+---------+-------+2 rows in set (0.00 sec)
往表中插入資料
mysql> select database();+------------+| database() |+------------+| git |+------------+1 row in set (0.00 sec)mysql> insert into user(‘lyao‘,‘27‘);Query OK, 1 row affected (0.00 sec)mysql> select * from user;+------+------+| name | age |+------+------+| lyao | 27 |+------+------+1 row in set (0.00 sec)
備份資料庫,備份前查看mysql的二進位檔案資訊
[[email protected] ~]# ll /data/mysql/data/ |grep mysql-bin-rw-rw---- 1 mysql mysql 302 May 18 11:10 mysql-bin.000001-rw-rw---- 1 mysql mysql 448 May 18 11:20 mysql-bin.000002-rw-rw---- 1 mysql mysql 221 May 18 11:21 mysql-bin.000003-rw-rw---- 1 mysql mysql 150 May 18 11:21 mysql-bin.000004-rw-rw---- 1 mysql mysql 716 May 18 12:47 mysql-bin.000005-rw-rw---- 1 mysql mysql 95 May 18 11:21 mysql-bin.index[[email protected] ~]# mysqldump -uroot -p -h 127.0.0.1 --flush-logs git >git.bak.sqlEnter password: [[email protected] ~]# ll /data/mysql/data/ |grep mysql-bin-rw-rw---- 1 mysql mysql 302 May 18 11:10 mysql-bin.000001-rw-rw---- 1 mysql mysql 448 May 18 11:20 mysql-bin.000002-rw-rw---- 1 mysql mysql 221 May 18 11:21 mysql-bin.000003-rw-rw---- 1 mysql mysql 150 May 18 11:21 mysql-bin.000004-rw-rw---- 1 mysql mysql 759 May 18 12:52 mysql-bin.000005-rw-rw---- 1 mysql mysql 107 May 18 12:52 mysql-bin.000006-rw-rw---- 1 mysql mysql 114 May 18 12:52 mysql-bin.index
測試:往表user中繼續insert資料
mysql> insert into user values(‘zhang3‘,‘34‘);Query OK, 1 row affected (0.01 sec)mysql> insert into user values(‘li4‘,‘34‘);Query OK, 1 row affected (0.00 sec)mysql> select * from user;+--------+------+| name | age |+--------+------+| lyao | 27 || zhang3 | 34 || li4 | 34 |+--------+------+3 rows in set (0.00 sec)
更新age列為19
mysql> update user set age=19;Query OK, 3 rows affected (0.01 sec)Rows matched: 3 Changed: 3 Warnings: 0mysql> select * from user;+--------+------+| name | age |+--------+------+| lyao | 19 || zhang3 | 19 || li4 | 19 |+--------+------+3 rows in set (0.00 sec)
此時看到,age列全部更新了,但是這不是我們想要的。通過備份資料還原
mysql> source git.bak.sql;mysql> select * from user;+------+------+| name | age |+------+------+| lyao | 27 |+------+------+1 row in set (0.00 sec)#還原到備份前的資料了,但是我們後來還insert進去2條資料的,這個要通過二進位日誌恢複了#上文中顯示備份後的log-bin日誌是mysql-bin.000006[[email protected] ~]# mysqlbinlog -d git /data/mysql/data/mysql-bin.000006 >bin.log#在bin.log中找到我們剛才插入的語句[[email protected] ~]# egrep "zhang3|li4" bin.log insert into user values(‘zhang3‘,‘34‘)insert into user values(‘li4‘,‘34‘)#在mysql中插入這2條語句即可mysql> select * from user;+------+------+| name | age |+------+------+| lyao | 27 |+------+------+1 row in set (0.00 sec)mysql> insert into user values(‘zhang3‘,‘34‘);Query OK, 1 row affected (0.02 sec)mysql> insert into user values(‘li4‘,‘34‘);Query OK, 1 row affected (0.00 sec)mysql> select * from user;+--------+------+| name | age |+--------+------+| lyao | 27 || zhang3 | 34 || li4 | 34 |+--------+------+3 rows in set (0.00 sec)
本文出自 “ly36843營運” 部落格,請務必保留此出處http://ly36843.blog.51cto.com/3120113/1652333
mysql增量恢複