Mysql
mysql - 僅從完整轉儲中導入數據?
我有一個來自數據庫 A 的完整轉儲。我只想將此轉儲的數據導入數據庫 B。數據庫 B 的結構與數據庫 A 相同,只是它缺少一些表。我怎樣才能做到這一點?
我不導入完整轉儲並刪除額外表的原因是數據庫 B 在 RDS 上,當我將轉儲文件導入其中時,導入作業將在其中停止。我試了三遍,數據庫很大。每三次,它就停在同一個地方。RDS 日誌沒有顯示任何內容。所以我決定只從轉儲文件中導入數據。
sed
您可以使用orperl
或其他東西過濾掉轉儲文件中的 DDL 語句。但這需要一些時間來編寫程式碼並對其進行測試。如果您可以準備另一個跳過 DDL 語句的轉儲文件會更容易。閱讀mysqldump 上的文件,有一個選項
--no-create-info
可以做到這一點。但是,如果問題是無法完成大型轉儲文件的恢復,我不確定僅導入數據有什麼幫助。省略 DDL 語句不會大大減少轉儲文件的大小。
這是另一種選擇:根本不使用轉儲文件。最近 RDS 宣布支持導入使用 Percona XtraBackup 製作的物理備份:https ://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html
您將使用 Percona XtraBackup 創建原始數據庫的備份,然後將其上傳到 S3,然後呼叫將該備份導入到 RDS 實例。它更快、更可靠,但需要注意的是,它會覆蓋 RDS 實例上的所有表。