1. 程式人生 > 其它 >mysqlbinlog資料庫簡單恢復例子

mysqlbinlog資料庫簡單恢復例子

mysqlbinlog常見的選項有以下幾個:

--start-datetime:從二進位制日誌中讀取指定等於時間戳或者晚於本地計算機的時間

--stop-datetime:從二進位制日誌中讀取指定小於時間戳或者等於本地計算機的時間 取值和上述一樣

--start-position:從二進位制日誌中讀取指定position 事件位置作為開始。

--stop-position:從二進位制日誌中讀取指定position 事件位置作為事件截至

執行檢視當天記錄日記的檔案 

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000024
| 227373 | | | | +------------------+----------+--------------+------------------+-------------------+ 再執行重新整理日記記錄: mysql> flush logs; Query OK, 0 rows affected (0.02 sec)

使用mysqlbinlog匯出sql語句

mysqlbinlog 具體路徑地址 -d 資料庫名 -vvv --base64-output=decode-rows mysql-bin.0001具體地址 > 匯出具體路徑+檔名

例子:

[root]#/www/server/mysql/bin/mysqlbinlog -d webdb   -vvv --base64-output=decode-rows  /www/server/data/mysql-bin.000016 > /www/server/data/111.sql

也可以增加時間點查詢或者增加具體到某個表的操作 |grep '`ls_order`

[root]#www/server/mysql/bin/mysqlbinlog -d webdb --start-datetime='2021-11-22 00:00:00' --stop-datetime='2021-11-24 15:26:38'  /www/server/data/mysql-bin.000015 
|grep '`ls_order`' >>/www/server/data/ls_order01.sql

也可以以操作節點去查詢。

[root]#www/server/mysql/bin/mysqlbinlog -d webdb --start-position=875 --stop-position=21564  /www/server/data/mysql-bin.000015 |grep '`ls_order`' >>/www/server/data/ls_order01.sql

重新執行匯入丟失sql

1.shell > mysql -uroot -p
Enter password: 

輸入資料庫密碼,回車。
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 59
Server version: 5.6.50-log Source distribution

Copyright (c) 2000, 2020, 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.

2.切換操作資料庫。
mysql> use  webdb;
Database changed mysql
-> source /root/binlog2sql/ls_order01.sql; 回車 3.執行還原資料。再檢視一下資料是否回覆。

 

[root]#www/server/mysql/bin/mysqlbinlog -d dingho_cc --start-datetime='2021-11-22 00:00:00' --stop-datetime='2021-11-24 15:26:38'  /www/server/data/mysql-bin.000015|grep '`ls_order`' >>/www/server/data/ls_order01.sql