MySQL通過Binlog日志恢復數據庫


一、MySQL Binlog 簡介

MySQL 的二進制日志 binlog 可以說是 MySQL 最重要的日志,它記錄了所有的 DDL 和 DML 語句(除了數據查詢語句select、show等),以事件形式記錄,還包含語句所執行的消耗的時間,MySQL的二進制日志是事務安全型的。binlog 的主要目的是復制和恢復。

二、Binlog日志的兩個最重要的使用場景:

1、MySQL主從復制:MySQL Replication在Master端開啟binlog,Master把它的二進制日志傳遞給slaves來達到master-slave數據一致的目的
2、數據恢復:通過使用 mysqlbinlog工具來使恢復數據

三、開啟Binlog日志:

通過配置 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件的 log-bin 選項:

##配置binlog日志路徑以及日志文件名前綴、生成的日志格式為:bin-log.000001
log-bin=/var/lib/mysql/bin-log
##注意5.7以及更高版本需要配置本項、自定義,保證唯一性
server-id=1
##binlog格式,有3種statement,row,mixed,區別的話,請自行搜索
binlog-format=mixed
##表示每1次執行寫入就與硬盤同步,會影響性能,為0時表示,事務提交時mysql不做刷盤操作,由系統決定
sync-binlog=1

 

四、查看Binlog日志狀態

mysql命令行:

show variables like '%log_bin%';

binlog日志開啟狀態為ON

 

 

 

五、查看Binlog文件內容

mysql命令行:
show binlog events in 'bin-log-1.000001'; 

 

 

 

 

六、通過Binlog恢復數據

linux命令行:
/usr/bin/mysqlbinlog --database=hello /var/lib/mysql/bin-log-1.000001 | /usr/bin/mysql -uroot -p123456zy -v hello

/usr/bin/mysqlbinlog 為binlog命令
--database=hello 指定數據庫為hello的日志
/var/lib/mysql/bin-log-1.000001 為binlog日志

| 為管道符

/usr/bin/mysql -uroot -p123456zy -v hello 連接mysql、並指定需要恢復的數據庫 -v 為顯示詳細信息

 

七、通過指定位置恢復數據

linux命令行:
/usr/bin/mysqlbinlog --start-position=573 --stop-position=718 --database=hello /var/lib/mysql/bin-log-1.000001 | /usr/bin/mysql -uroot -p123456zy -v hello

--start-position=573 開始位置
--stop-position=718  結束位置

查看位置信息:

mysql命令行:
show binlog events in 'bin-log-1.000001'; 

 

 

 

 

八、通過指定時間恢復數據

linux命令行:
/usr/bin/mysqlbinlog --start-datetime="2021-06-27 20:58:18" --stop-datetime="2021-06-27 20:58:35" --database=hello /var/lib/mysql/bin-log-1.000001 | /usr/bin/mysql -uroot -p123456zy -v hello

--start-datetime="2021-06-27 20:58:18" 開始時間

--stop-datetime="2021-06-27 20:58:35" 結束時間

查看時間信息

linux命令行:
/usr/bin/mysqlbinlog --no-defaults /var/lib/mysql/bin-log-1.000001

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM