A庫其實是阿里云的rds云資料庫,我在其他服務器上搞了個新的資料庫(B庫),然后從阿里云下載binlog,還原到B庫,那么問題來了,使用了命令:
mysqlbinlog -v --base64-output=decode-rows -d dbname mysql-bin.000800 > test.sql
后,發現test.sql里凡是insert update陳述句全是注釋狀態?這樣執行source肯定是不成功的吧,是我使用方式不對嗎?
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150623 21:10:10 server id 1154825058 end_log_pos 120 CRC32 0xc2bbe735 Start: binlog v 4, server v 5.6.16-log created 150623 21:10:10
# at 120
#150623 21:10:10 server id 1154825058 end_log_pos 231 CRC32 0x7ca67fb2 Previous-GTIDs
# 648e928c-c587-11e4-903f-ac162d89fd88:1-88450260,
# 72f39443-c587-11e4-903f-ac162d8aa4a4:1-6811
# at 231
#150623 21:10:14 server id 1065724891 end_log_pos 279 CRC32 0x515d2478 GTID [commit=yes]
SET @@SESSION.GTID_NEXT= '648e928c-c587-11e4-903f-ac162d89fd88:88450261'/*!*/;
# at 279
#150623 21:10:14 server id 1065724891 end_log_pos 342 CRC32 0xe3592098 Query thread_id=8124091 exec_time=0 error_code=0
SET TIMESTAMP=1435061414/*!*/;
SET @@session.pseudo_thread_id=8124091/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=524288/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 342
#150623 21:10:14 server id 1065724891 end_log_pos 404 CRC32 0x8a7c8cf6 Table_map: `mysql`.`ha_health_check` mapped to number 755912
# at 404
#150623 21:10:14 server id 1065724891 end_log_pos 460 CRC32 0xccd8cdcb Update_rows: table id 755912 flags: STMT_END_F
### UPDATE `mysql`.`ha_health_check`
### WHERE
### @1=1435061404168
### @2='m'
### SET
### @1=1435061414704
### @2='m'
# at 460
#150623 21:10:14 server id 1065724891 end_log_pos 491 CRC32 0x4f517162 Xid = 102721104
COMMIT/*!*/;
求助大家,有沒有辦法把里面的sql提取出來?
跪謝~
uj5u.com熱心網友回復:
這個問題我看你還是咨詢一下阿里云的客服,他們更加了解自己的產品uj5u.com熱心網友回復:
你直接可以使用mysqlbinlog -db dbname mysql-bin.000800 | B 庫,就可以恢復你的資料了,出現注釋的原因是因為你使用 -v 這個引數uj5u.com熱心網友回復:
挖墳。下面的命令是阿里云提供的,用意是向用戶提供一種查看binlog中所保存的SQL,該命令僅用于查看SQL,不能用于還原資料庫,或恢復資料。
mysqlbinlog -vv --base64-output=decode-rows -d dbname mysql-bin.000800> test.sql
如果一定要用test.sql還原資料庫,那么必須把一些開頭的注釋符號洗掉,比如sed -i 's/^###//' test.sql (理論上可以這樣處理test.sql檔案,但實際上未經測驗)
Linux的用戶,想要用binlog檔案還原資料庫,可以參考man mysqlbinlog,然后你會看到,要用 binlog檔案還原資料庫的話,是絕對不能使用--base64-output=decode-rows選項的,mysqlbinlog命令的幫助手冊中舉出了用binlog檔案恢復資料的示例,如下:
mysqlbinlog mysql-bin.000800 |mysql -uroot -p
uj5u.com熱心網友回復:
1、mysqlbinlog -s 引數 binlog號> sql_insert.sql2、source /tmp/sql_insert.sql
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/80872.html
標籤:MySQL
