mysqlbinlog 恢復、備份

G8bao7發表於2015-11-18

mysqlbinlog 恢復


# 一條命令
mysqlbinlog [option] mysql-bin.file | mysql [option] 

# 通用引數: 起始位置、時間,資料庫
# 遠端引數:  -h/P/u/p/d user需要 REPLICATION SLAVE 許可權
--read-from-remote-server  從host:port例項讀取binlog, u/p必須指定
--to-last-log 從某個binlog檔案開始(含)直到最後,配合 --read-from-remote-server 使用
mysqlbinlog  -h/P/u/p/d --read-from-remote-server mysql-bin.000001
# 從 mysql-bin.000003 開始(含)
mysqlbinlog  -h/P/u/p/d --read-from-remote-server --to-last-log mysql-bin.000003
# sqlfile裡的表已經指定了庫名
mysqlbinlog [option] mysql-bin.file > sqlfile

# option: mysql連線引數
mysql [option] < sqlfile


mysqlbinlog 備份 

5.6+ 以上支援

參考: http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html
# 必須指定引數:  
--read-from-remote-server  配套引數 -h/P/u/p user需要 "REPLICATION SLAVE" 許可權
--raw 
# 可選引數
--to-last-log 從某個binlog開始
--stop-never 實時備份,直到master當機。預設啟用 --to-last-log 配置
原理:預設連線master使用的server_id=0,但--stop-never使用的server_id=65535(可透過 --stop-never-slave-server-id 配置)
獲取完binlog後,如果server_id>0,則一直等待新的binlog event,否則退出
--stop-never-slave-server-id  連線master時使用的server id。配合 --stop-server使用 

--result-file=rvalue 預設是當前目錄,binlog名稱與master相同
rvalue可以是字串也可以是目錄,最終都是作為原binlog的字首
若原binlog為mysql-binlog.*** ,則儲存為rvaluemysql-binlog.***

舉例

如果 master只有3個binlog檔案:mysql-bin.000001 mysql-bin.000002 mysql-bin.000003

  • 完成後退出(server_id=0)

# 備份3個binlog,
mysqlbinlog -h/P/u/p --read-from-remote-server --raw mysql-bin.000001 mysql-bin.000002 mysql-bin.000003
# 從第一個binlog開始備份
mysqlbinlog -h/P/u/p --read-from-remote-server --raw --to-last-log mysql-bin.000001

  • 完成後不退出,等待新的event,模擬真正的slave

# server_id=65535
mysqlbinlog -h/P/u/p --read-from-remote-server --raw --stop-never mysql-bin.000001
# server_id=1000
mysqlbinlog -h/P/u/p --read-from-remote-server --raw --stop-never --stop-never-slave-server-id=1000 mysql-bin.000001



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1840586/,如需轉載,請註明出處,否則將追究法律責任。

相關文章