2017-03-02 31 views
1

我需要在兩個不同的rds實例上的相同mysql數據庫之間移動數百萬行。我想過的方法是:在AWS RDS實例之間移動數據

- use data-pipeline to export data from the first instance to amazon-s3 
- use data-pipeline to import data from amazon-s3 to the second instance 

我的問題是我需要刪除第一個實例的數據在最後。由於我們正在討論大量的數據,我曾考慮過創建一個存儲過程來批量刪除行。有沒有辦法在aws中實現這一點?或者還有其他解決方案嗎?

另一件事是我只需要從特定的表中移動一些行,而不是整個表或整個數據庫。

回答

0

如果要刪除一個表中的所有數據,請使用TRUNCATE TABLE而不是刪除語句。它會爲你節省很多時間。

2

您可以使用AWS DMS服務這是移動大量數據的最簡單方法。請按照以下步驟。

首先,您需要更改參數組在兩個RDS實例中的一些設置。

'log_bin' = 'ON' 

'binlog_format' = 'ROW' 

'binlog_checksum' = 'NONE' 

'log_bin_use_v1_row_events' = 'ON' 
  1. 採取從第一RDS實例數據庫的模式的轉儲。

  2. 在第二個RDS上恢復它。

  3. 現在開始配置DMS。

  4. 首先安裝端點。

  5. 然後創建一個任務,將數據從源(第一個RDS)導入到 目標(第二個RDS)。

  6. 在遷移類型,如果要加載現有的數據選擇 遷移現有數據,或者如果您嘗試同步實時數據,然後 選擇不斷變化

  7. 在任務設置下,選擇T arget表格準備模式=執行 沒有。

  8. 檢查啓用日誌複選框,它會幫助任何 錯誤的情況下進行調試。

  9. 任務開始後,您可以在 儀表板中看到該過程。

+0

事情是,我只需要從特定的表中移動一些行,而不是整個表或整個數據庫。 –

0

數據管道更多用於重複性過程。如果你只是想做一次性操作,看起來像很多額外的麻煩。也許更容易啓動一個體面的網絡吞吐量的實例,附加一個足夠大的EBS捲來保存您的數據並使用命令行工具如mysqldump來移動數據。

就清理而言,可能會更快地提出一個查詢,將要保留的行復制到臨時表(或除了不想要的行之外的所有行),然後使用重命名將換出臨時表爲原始。然後放下原來的表格。