久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中怎么通過binlog日志恢復(fù)數(shù)據(jù)

138次閱讀
沒有評論

共計 3967 個字符,預(yù)計需要花費 10 分鐘才能閱讀完成。

本篇文章為大家展示了 MySQL 中怎么通過 binlog 日志恢復(fù)數(shù)據(jù),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

一、數(shù)據(jù)備份

操作的前一天晚上進行了日常邏輯備份

mysqldump -uroot -pmysql -P3306 --all-databases   /mysql/backup/dump/alldb_bak.sql

二、模擬事故

模擬事故發(fā)生前后的業(yè)務(wù)情況

mysql  show tables;
+----------------+
| Tables_in_test |
+----------------+
| kk |
| t1 |
| t2 |
| t3 |
| t4 |
| t5 |
| t6 |
| t7 |
+----------------+
8 rows in set (0.00 sec)
mysql  desc t7;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql  create table t8 as select * from t7;
Query OK, 3 rows affected (0.17 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql  select * from t8;
+----+--------+
| id | name |
+----+--------+
| 1 | steven |
| 3 | steven |
| 4 | steven |
+----+--------+
3 rows in set (0.00 sec)
mysql  insert into t8 select * from t7;
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql  select * from t8;
+----+--------+
| id | name |
+----+--------+
| 1 | steven |
| 3 | steven |
| 4 | steven |
| 1 | steven |
| 3 | steven |
| 4 | steven |
+----+--------+
6 rows in set (0.00 sec)
mysql  update t8 set id=2 where id=3;
Query OK, 2 rows affected (0.33 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql  update t8 set id=3 where id=4;
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql  select * from t8;
+----+--------+
| id | name |
+----+--------+
| 1 | steven |
| 2 | steven |
| 3 | steven |
| 1 | steven |
| 2 | steven |
| 3 | steven |
+----+--------+
6 rows in set (0.00 sec)
mysql  drop table t8;
Query OK, 0 rows affected (0.10 sec)

三、查看當(dāng)前 binlog

mysql  show master status ;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 1344 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

四、恢復(fù)數(shù)據(jù)

拷貝生產(chǎn)庫前一天晚上的備份文件以及備份到事故期間的 binlog 至臨時庫

scp alldb_bak.sql 192.168.8.32:/mysql/backup/dump/
scp /mysql/data/mysql-bin.000001 192.168.8.32:/mysql/backup/dump/

在臨時庫創(chuàng)建出現(xiàn)事故的 database

mysql  create database test;
Query OK, 1 row affected (0.03 sec)
mysql  show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| testdb13 |
| testdb14 |
| testdb15 |
| testdb16 |
| testdb17 |
| testdb18 |
| testdb19 |
| testdb20 |
| testdb21 |
| testdb22 |
| testdb23 |
| testdb24 |
+--------------------+
17 rows in set (0.00 sec)

從備份中恢復(fù) test 數(shù)據(jù)庫

mysql -uroot -pmysql -P3306 -o test   alldb_bak.sql

- o 是指單獨恢復(fù) test 庫,忽略其他數(shù)據(jù)庫

從 mysql-bin.000001 中查看到 drop table t8 之前的 pos 是 1164

update t8 set id=3 where id=4
/*!*/;
# at 1133
#181127 14:12:41 server id 330631 end_log_pos 1164 CRC32 0x1203751c  Xid = 1661
COMMIT/*!*/;
# at 1164
#181127 14:12:53 server id 330631 end_log_pos 1229 CRC32 0x48fad728  Anonymous_GTID last_committed=4 sequence_number=5 rbr_only=no
SET @@SESSION.GTID_NEXT=  ANONYMOUS /*!*/;
# at 1229
#181127 14:12:53 server id 330631 end_log_pos 1344 CRC32 0x2a7eb0d7  Query thread_id=3 exec_time=1 error_code=0
SET TIMESTAMP=1543299173/*!*/;
DROP TABLE `t8` /* generated by server */
/*!*/;
mysqlbinlog --no-defaults --stop-position=1164 --database=test mysql-bin.000001 |mysql -uroot -p test

五、根據(jù)臨時庫的數(shù)據(jù),將該表恢復(fù)至生產(chǎn)庫

六、數(shù)據(jù)驗證

mysql  use test;
Database changed
mysql  show tables;
+----------------+
| Tables_in_test |
+----------------+
| kk |
| t1 |
| t2 |
| t3 |
| t4 |
| t5 |
| t6 |
| t7 |
| t8 |
+----------------+
9 rows in set (0.01 sec)
mysql  select * from t8;
+----+--------+
| id | name |
+----+--------+
| 1 | steven |
| 2 | steven |
| 3 | steven |
| 1 | steven |
| 2 | steven |
| 3 | steven |
+----+--------+
6 rows in set (0.00 sec)

上述內(nèi)容就是 MySQL 中怎么通過 binlog 日志恢復(fù)數(shù)據(jù),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計3967字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 荆州市| 武夷山市| 胶南市| 黄冈市| 神农架林区| 区。| 湖州市| 任丘市| 西乌珠穆沁旗| 会宁县| 富宁县| 婺源县| 南溪县| 哈巴河县| 怀化市| 万州区| 西平县| 义乌市| 藁城市| 抚松县| 宁化县| 华安县| 池州市| 普洱| 波密县| 石渠县| 茶陵县| 乐东| 固原市| 金昌市| 新余市| 烟台市| 无锡市| 苗栗市| 沧州市| 襄垣县| 郯城县| 黄山市| 祥云县| 汽车| 磴口县|