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
4.執行
time mysql -uroot -p -S mysql.sock --force < /tmp/binlog
第二種方式:複製,使用SQL執行緒執行
1.找到需要恢復的binlog
進入binlog目錄,執行
ll | awk '{print $9}' > /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更簡潔一些.
生產環境凌晨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
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分鐘.user 5m1.426s
sys 3m32.348s
第二種方式:複製,使用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;
mysqlbinlog方式更簡單,但是一旦出錯,容易前功盡棄
複製的方式,前期配置比較複雜,但是出現錯誤,更容易修正.
從效率上看,相差不大
如果有大量的binlog需要恢復,建議使用複製的方式.
如果只有少量的binlog需要恢復,還是使用mysqlbinlog更簡潔一些.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1734271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql】完全恢復與不完全恢復MySql
- 解密MySQL備份恢復的4種方法解密MySql
- Dedecms資料庫恢復與備份的兩種方法資料庫
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- Oracle 不完全恢復Oracle
- 【MySQL】恢復誤操作的方法MySql
- iPhone簡訊刪除怎麼恢復?恢復iPhone簡訊的兩種簡單方法推薦iPhone
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- Mysql的幾種備份與恢復MySql
- 【備份與恢復】使用Flashback Database(不完全恢復)Database
- RMAN全庫【完全恢復/不完全恢復brief version】
- PG 資料庫的 表的不完全恢復的簡易方法資料庫
- 100種資料恢復的方法?!資料恢復
- mysql 從 frm 檔案恢復 table 表結構的3種方法MySql
- 資料庫不完全恢復。資料庫
- 資料庫不完全恢復資料庫
- oracle基於scn的不完全恢復Oracle
- 恢復MySQL InnoDB表結構的方法MySql
- Oracle 11g 手工不完全恢復 場景1:被動的不完全恢復(日誌缺失)Oracle
- RMAN中各種檔案的恢復方法
- MySQL建立資料庫的兩種方法MySql資料庫
- Linux安裝MySQL的兩種方法LinuxMySql
- oracle資料庫不完全恢復Oracle資料庫
- Oracle Rman 資料庫的不完全恢復Oracle資料庫
- 控制檔案重建後的不完全恢復
- 兩種“BBC”恢復損壞的Linux系統(轉)Linux
- 歸檔模式下,使用RMAN的同一備份兩次用於不完全恢復模式
- mac安裝mysql的兩種方法(含配置)MacMySql
- oracle基於時間點的不完全恢復Oracle
- 使用bbed完成資料庫的不完全恢復資料庫
- 記錄一次ORACLE的不完全恢復Oracle
- 關於不完全恢復的一些思考
- [裝載]oracle 無歸檔的不完全恢復Oracle
- Oracle 11g 手工不完全恢復Oracle
- 備份與恢復:用user模式基於日誌序列的不完全恢復模式
- 備份與恢復:用rman方式基於日誌序列的不完全恢復
- 【Mysql】恢復slave上某幾張表的方法MySql
- MySQL備份和恢復資料表的方法MySql