2010-08-03 108 views
1

我必須刪除prod中的一些表數據。數據庫和要刪除的記錄應備份的記錄應複製到另一個本地數據庫。這涉及兩個數據庫,分別位於兩個不同的服務器/實例中。將數據從1 DB複製到另一個數據庫

是否有可能通過sql(mysql)查詢來做到這一點?

+0

@Sharpeye:我相信你可以通過mysql查詢。但你也可以通過phpmyadmin來完成,只是簡單的導出然後導入我害怕? – 2010-08-03 23:05:46

+0

只是另一個數據庫,或另一個MySQL服務器(實例)? – Wrikken 2010-08-03 23:05:49

+1

它位於兩個不同服務器中的兩個數據庫之間。 – Sharpeye500 2010-08-03 23:07:33

回答

1

我會用mysqldump用where條件得到記錄了。一旦你保存了所有的東西,你就可以從產品中刪除它們。這些命令應該從命令行工作,包括密碼以避免提示是可選的。

mysqldump -u user -pPassword -h hostname1 dbname tablename 
    --where 'field1="delete"' 
    --skip-add-drop-table --no-create-db --no-create-info > deleted.sql 
mysql -u user -pPassword -h hostname2 dbname < deleted.sql 
mysql -u user -pPassword -h hostname1 dbname -e 'DELETE FROM tablename WHERE field1="delete"' 
0

我正在嘗試做同樣的事情,將數據從表中複製到另一臺服務器,然後從原始中刪除它。

到目前爲止,我看到兩個選項:

  1. 將數據複製到本地數據庫,然後複製該數據庫到另一臺服務器
  2. 使用Federated存儲引擎

這都需要一些嚴重的重構我們的因爲未啓用Federated或二進制日誌記錄(複製所需的)服務器。這需要時間,如果能找到其他解決方案,這將是最好的。

該過程需要每天執行,因此需要完全自動化。

也許第三個選擇是使用cron作業自動化的事情:

  • 複製的數據在同一臺服務器上一個單獨的數據庫
  • 備份數據庫與文件夾中的mysqldump這是對鏈接其他服務器的第二個服務器上太
  • ,從SQL轉儲恢復數據庫
相關問題