本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Aurora My 的二進位日誌複寫SQL
使用 Aurora MySQL 設定我的SQL複寫涉及以下步驟,這些步驟會詳細討論:
內容
1. 在複寫來源上開啟二進位日誌
在以下尋找如何在資料庫引擎的複寫來源上開啟二進位日誌的相關指示。
資料庫引擎 | 指示 |
---|---|
Aurora MySQL |
在 Aurora MySQL 資料庫叢集上開啟二進位記錄 建議將 若要變更 如果您要將 如需詳細資訊,請參閱 Amazon Aurora 資料庫叢集和資料庫執行個體參數 和 Amazon Aurora 的參數群組。 |
RDS 適用於 MySQL |
在 Amazon RDS 資料庫執行個體上開啟二進位記錄 您無法直接為 Amazon RDS 資料庫執行個體開啟二進位記錄,但您可以執行下列其中一項操作來開啟: |
我的SQL (外部) |
設定加密複寫 若要使用 Aurora MySQL 第 2 版安全地複寫資料,您可以使用加密的複寫。 注意如果您不需要使用加密複寫,可以略過這些步驟。 下列是使用加密複寫的先決條件:
在加密複寫期間,Aurora MySQL 資料庫叢集會對我的SQL資料庫伺服器執行用戶端。Aurora MySQL 用戶端的憑證和金鑰是以 .pem 格式的檔案。
在外部 MySQL 資料庫上開啟二進位記錄
|
2. 在複寫來源上保留二進位日誌,直到不再需要為止
當您使用我的SQL二進位日誌複寫時,Amazon RDS不會管理複寫程序。因此,您需要確保會保留複寫來源上的 binlog 檔案,直到變更已套用至複本後為止。此維護可協助您在發生故障時將您的來源資料庫還原。
使用以下保留資料庫引擎二進位日誌的相關指示。
資料庫引擎 | 指示 |
---|---|
Aurora MySQL |
在 Aurora MySQL 資料庫叢集上保留二進位日誌 您無法存取 Aurora MySQL 資料庫叢集的 binlog 檔案。因此,您必須選擇一個時間範圍,以將複寫來源上的 binlog 檔案保留足夠長的時間,以確保在 Amazon 刪除 binlog 檔案之前,變更已套用至複本RDS。您可以在 Aurora MySQL 資料庫叢集上保留 binlog 檔案最多 90 天。 如果您要使用 MySQL 資料庫或 RDS MySQL 資料庫執行個體設定複寫做為複本,且您為 建立複本的資料庫非常大,請選擇較大的時間範圍來保留 binlog 檔案,直到資料庫的初始複本完成且複本延遲達到 0。 若要設定二進位日誌保留時間範圍,請使用 mysql.rds_set_configuration 程序,並指定 下列範例會將 binlog 檔案的保留期間設定為 6 天:
開始複寫後,您可以在複本上執行 如果未指定此設定,Aurora MySQL 的預設值為 24 (1 天)。 如果您為 指定 |
RDS 適用於 MySQL |
在 Amazon RDS 資料庫執行個體上保留二進位日誌 您可以將二進位日誌檔案保留在 Amazon RDS 資料庫執行個體上,方法是設定 binlog 保留時數,就像上一列所述的 Aurora MySQL 資料庫叢集一樣。 您也可以透過為RDS資料庫執行個體建立僅供讀取複本,在 Amazon 資料庫執行個體上保留 binlog 檔案。這個僅供讀取複本是暫時性的,並專為保留 binlog 檔案目的使用。建立了僅供讀取複本之後,請在僅供讀取複本上呼叫 mysql.rds_stop_replication 預存程序。複寫停止時,Amazon RDS不會刪除複寫來源上的任何 binlog 檔案。設定使用永久複本的複寫之後,當複寫來源與永久複本之間的複本延遲 ( |
我的SQL (外部) |
在外部 MySQL 資料庫上保留二進位日誌 由於外部 MySQL 資料庫上的 binlog 檔案不是由 Amazon 管理RDS,因此會保留這些檔案,直到您刪除為止。 開始複寫後,您可以在複本上執行 |
3. 建立複寫來源的複本或傾印
您可以使用複寫來源的快照、複製或傾印,將資料的基準複本載入複本。然後,從該點開始複寫。
使用下列指示,為您的資料庫引擎建立複寫來源的複本或傾印。
資料庫引擎 | 指示 |
---|---|
Aurora MySQL |
建立 Aurora MySQL 資料庫叢集的副本 使用下列其中一種方法:
判斷 binlog 檔案名稱和位置 使用下列其中一種方法:
建立 Aurora MySQL 資料庫叢集的傾印 如果您的複本目標是外部 MySQL 資料庫或 RDS for MySQL 資料庫執行個體,則必須從 Aurora 資料庫叢集建立傾印檔案。 請務必針對您建立的來源資料庫叢集複本執行
|
RDS 適用於 MySQL |
建立 Amazon RDS 資料庫執行個體的快照 建立 Amazon RDS 資料庫執行個體的僅供讀取複本。如需詳細資訊,請參閱《Amazon Relational Database Service 使用者指南》中的建立僅供讀取複本。
|
我的SQL (外部) |
建立外部 MySQL 資料庫的傾印
|
4. 將傾印載入複本目標 (如有需要)
如果您打算從 Amazon 外部的 MySQL 資料庫傾印載入資料RDS,建議您建立EC2執行個體以複製傾印檔案。然後,您可以從該執行個體將資料載入資料庫叢集或資料庫EC2執行個體。使用此方法,您可以在將傾印檔案複製到EC2執行個體之前壓縮傾印檔案 (以降低與將資料複製到 Amazon 相關聯的網路成本)RDS。您也可以加密一或多個傾印檔案,以於網路間傳輸資料時加以保護。
注意
如果您建立新的 Aurora MySQL 資料庫叢集做為複本目標,則不需要載入傾印檔案:
-
您可以從資料庫叢集快照還原,以建立新的資料庫叢集。如需詳細資訊,請參閱從資料庫叢集快照還原。
-
您可以複製來源資料庫叢集來建立新的資料庫叢集。如需詳細資訊,請參閱複製 Amazon Aurora 資料庫叢集的一個磁碟區。
-
您可以將資料從資料庫執行個體快照遷移到新的資料庫叢集。如需詳細資訊,請參閱將資料遷移到 Amazon Aurora 我的資料SQL庫叢集。
使用以下指示,將複寫來源的傾印載入資料庫引擎的複本目標。
資料庫引擎 | 指示 |
---|---|
Aurora MySQL |
將傾印載入 Aurora MySQL 資料庫叢集
|
RDS 適用於 MySQL |
將傾印載入 Amazon RDS 資料庫執行個體
|
我的SQL (外部) |
將傾印載入外部 MySQL 資料庫 您無法將資料庫快照或資料庫叢集快照載入外部 MySQL 資料庫。而是必須使用來自
|
5. 在複製來源上建立複寫使用者
在僅供複寫使用的資源上建立使用者 ID。下列範例RDS適用於 MySQL 或外部 MySQL 來源資料庫。
mysql>
CREATE USER 'repl_user
'@'domain_name
' IDENTIFIED BY 'password
';
對於 Aurora MySQL 來源資料庫,資料庫叢集參數設定為 skip_name_resolve
1
(ON
) 且無法修改,因此您必須使用主機的 IP 地址,而非網域名稱。如需詳細資訊,請參閱 MySQL 文件中的 skip_name_resolve
mysql>
CREATE USER 'repl_user
'@'IP_address
' IDENTIFIED BY 'password
';
使用者需要 REPLICATION CLIENT
和 REPLICATION SLAVE
權限。授予這些權限給該使用者。
如果您需要使用加密複寫, 需要複寫使用者的SSL連線。例如,您可以使用下列其中一個陳述式來要求使用者帳戶 上的SSL連線repl_user
。
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user
'@'IP_address
';
GRANT USAGE ON *.* TO '
repl_user
'@'IP_address
' REQUIRE SSL;
注意
如果未包含 REQUIRE SSL
,則複寫連線可能會以無訊息方式回復為未加密的連線。
6. 在複本目標上開啟複寫
開啟複寫之前,建議您手動擷取 Aurora MySQL 資料庫叢集或 RDS MySQL 資料庫執行個體複本目標的快照。如果發生問題,而您需要使用資料庫叢集或資料庫執行個體複本目標重新建立複寫,則可以從此快照還原資料庫叢集或資料庫執行個體,而不需再次將資料匯入至複本目標。
使用以下開啟資料庫引擎複寫功能的相關指示。
資料庫引擎 | 指示 |
---|---|
Aurora MySQL |
從 Aurora MySQL 資料庫叢集開啟複寫
若要使用SSL加密,請將最終值設定為 |
RDS 適用於 MySQL |
從 Amazon RDS 資料庫執行個體開啟複寫
若要使用SSL加密,請將最終值設定為 |
我的SQL (外部) |
從外部 MySQL 資料庫開啟複寫
|
如果複寫失敗,可能會導致複本上的非預期輸入/輸出大幅增加,進而降低效能。如果複寫失敗或不再需要複寫,可以執行 mysql.rds_reset_external_master (Aurora MySQL version 2) 或 mysql.rds_reset_external_source (Aurora MySQL 版本 3) 預存程序來移除複寫組態。
設定位置以停止僅供讀取複本的複寫作業
在 Aurora MySQL 3.04 版及更新版本中,您可以開始複寫,然後使用mysql.rds_start_replication_until (Aurora MySQL 第 3 版)預存程序在指定的二進位日誌檔案位置停止複寫。
啟動僅供讀取複本的複寫作業,並在特定位置停止複寫
-
使用 MySQL 用戶端,以主要使用者身分連線至複本 Aurora MySQL 資料庫叢集。
-
執行 mysql.rds_start_replication_until (Aurora MySQL 第 3 版) 預存程序。
以下範例會啟動複寫並複寫變更,直到達到
120
二進位日誌檔案中的位置mysql-bin-changelog.000777
為止。若要使用災難復原功能,請在發生損毀前將位置預設為120
。call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
達到停止點時,複寫作業即會自動停止。會產生下列RDS事件:Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure
。
如果您使用 GTID型複寫,請使用mysql.rds_start_replication_until_gtid (Aurora MySQL 第 3 版)預存程序,而非預mysql.rds_start_replication_until (Aurora MySQL 第 3 版)存程序。如需 GTID型複寫的詳細資訊,請參閱 使用 GTID型複寫。
7. 監控複本
當您使用 Aurora MySQL 資料庫叢集設定我的SQL複寫時,您必須在 Aurora MySQL 資料庫叢集為複本目標時監控容錯移轉事件。若發生容錯移轉,則屬於複本目標的資料庫叢集可能會以不同的網路地址,在新主機上重新建立。如需如何監控容錯移轉事件的資訊,請參閱使用 Amazon RDS 事件通知。
您也可以透過連線至複本目標並執行 SHOW SLAVE STATUS
(Aurora MySQL 第 2 版) 或 SHOW REPLICA STATUS
(Aurora MySQL 第 3 版) 命令,來監控複本目標在複寫來源後方的距離。在命令輸出中,Seconds Behind Master
欄位會告知您複本目標落後於來源的程度。
重要
如果您升級資料庫叢集並指定自訂參數群組,請務必在升級完成後手動重新啟動叢集。這樣做可讓叢集使用新的自訂參數設定,並重新啟動 binlog 複寫。
同步複寫來源和目標之間的密碼
當您使用 SQL 陳述式變更複寫來源上的使用者帳戶和密碼時,這些變更會自動複寫到複寫目標。
如果您使用 AWS Management Console、 AWS CLI或 RDSAPI來變更複寫來源上的主密碼,這些變更不會自動複寫到複寫目標。如果您要同步來源系統和目標系統之間的主要使用者和主要密碼,則必須自行對複寫目標進行相同的變更。