MySQL兩種不完全恢複的方法

來源:互聯網
上載者:User

MySQL兩種不完全恢複的方法

MySQL 5.6.14
生產環境淩晨3點的備份,不完全恢複到中午12點.
(xtrabackup_binlog_pos_innodb的內容是mysql-bin.006946 3784607)

 第一種方式:mysqlbinlog
 1.找到需要恢複的binlog
進入binlog目錄,執行
ll | awk '{print $9}' > /tmp/binlog.index

然後修改/tmp/binlog.index檔案,刪除不需要恢複的檔案名稱.

2.解析binlog
 time mysqlbinlog $(cat /tmp/binlog.index) --start-position=3784607 --stop-datetime='2015-07-13 12:00:00' > /tmp/binlog
 real 2m32.399s
 user 1m24.514s
 sys 1m5.803s

 3.設定MySQL伺服器參數
max_allowed_packet=100M
innodb_flush_log_at_trx_commit=0

 4.執行
time mysql -uroot -p -S mysql.sock --force < /tmp/binlog

real 50m24.341s
 user 5m1.426s
 sys 3m32.348s

執行3.4G的檔案,用時50分鐘.

第二種方式:複製,使用SQL線程執行
1.找到需要恢複的binlog
進入binlog目錄,執行
ll | awk '{print $9}' > /tmp/binlog.index

然後修改/tmp/binlog.index檔案,刪除不需要恢複的檔案名稱.

2.拷貝需要的binlog至一個新的目錄
mkdir /tmp/testlog
 cp $(cat /tmp/binlog.index) /tmp/testlog/

 3.修改伺服器參數
max_allowed_packet=100M
innodb_flush_log_at_trx_commit=0
server_id=111
relay_log=/tmp/testlog/mysql-bin
relay_log_index=/tmp/testlog/mysql-bin.index
skip_slave_start = 1 

其中
server_id一定要修改為一個不同的值,否則binlog被直接丟棄.
skip_slave_start防止自動啟動複製

4.啟動執行個體,產生複製的相關檔案
change master to
 master_host='localhost',
 master_port=3306,
 master_user='repl',
 master_password='repl',
 master_log_file='dummy.binlog',
 master_log_pos=777;

 master是一個隨便的值,主要是產生master.info,relay-log.info等相關檔案

5.關閉執行個體,修改檔案
 修改relay-log.info

修改/tmp/testlog/mysql-bin.index 為
awk '{print "/tmp/testlog/"$1'} /tmp/binlog.index > /tmp/testlog/mysql-bin.index

 6.啟動執行個體,啟動複製
start slave sql_thread UNTIL RELAY_LOG_FILE = 'mysql-bin.006982', RELAY_LOG_POS = 37300415;

恢複用時43分鐘.

mysqlbinlog方式更簡單,但是一旦出錯,容易前功盡棄
 複製的方式,前期配置比較複雜,但是出現錯誤,更容易修正.
從效率上看,相差不大
 如果有大量的binlog需要恢複,建議使用複製的方式.
如果只有少量的binlog需要恢複,還是使用mysqlbinlog更簡潔一些.

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.