mysqlbinlog資料庫簡單恢復例子
阿新 • • 發佈:2022-04-21
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