Asynchronous?Replication?Automatic failover
創新新互聯,憑借10多年的成都網站建設、成都做網站經驗,本著真心·誠心服務的企業理念服務于成都中小企業設計網站有近千家案例。做網站建設,選創新互聯建站。
其原理是在一條異步復制通道上配置多個可用復制源,當某個復制源不可用時(宕機、復制鏈路中斷),且 slave 的 IO 線程嘗試重連無效,自動根據權重選擇新的源繼續同步。
準備一個 MGR 集群和單實例,模擬復制鏈路切換,當 primary 故障,slave 自動切換到其他節點。dbdeployer?deploy?replication?--topology=group?8.0.22?--single-primarydbdeployer deploy single 8.0.22
2. 在從機上建立指向 MGR 主節點的復制通道,
change master to master_user='msandbox',master_password='msandbox', master_host='127.0.0.1',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';
在 master_retry_count 和 master_connect_retry 的設置上要考慮嘗試重連多久才切換復制源。
3. 在從機上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的兩個函數:
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
權重值大的被優先級選擇,可以配合MGR的選舉權重配置 asynchronous_connection_failover 的權重。當 MGR 節點切換,異步復制也能切換到新的主節點。
SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start?slave?for?channel?'mgr-single';
4. 檢查異步復制通道是否啟用 failover。
mysql SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+|?mgr-single?? |??1??????????????????????????????|+--------------+---------------------------------+1 row in set (0.01 sec
5. 把 MGR 的 primary 節點 kill 掉,這個從節點會在嘗試幾輪重連失敗后自動切換到次權重的復制源,其日志中會輸出切換信息。
注意:當主節點故障,一旦復制鏈路成功 failover 后,在新的復制鏈路沒有故障時,如果原主節點恢復,是不會回切的。如果當前復制鏈路發生故障,會再次選擇權重高的進行切換
mysql集群部署操作如下:
1、在MySQL集群中.當table引擎為NDBCLUSTER時才做集群,其他非NDBCLUSTER表和一般MySQL數據庫表一樣,不會共享數據。NDBCLUSTER表數據存儲在Data node服務器內存中,Data Node可以為1臺或多臺服務器,它們之間存放共享數據。Data Node服務器可以分組數據copy。
例如:2,3,4,5為四臺Data Node服務器ID. 2,3為組0; 4,5為組1; 2,3維持數據相同,4,5維持數據相同。 組0和組1維持數據不同。
2、sql node服務器中,非NDBCLUSTER數據存在本身數據庫中,table引擎為NDBCLUSTER時,數據存儲在Data Node中。當查詢NDBCLUSTER表時,它會從Data node集群中提起數據.
3、Manager server管理SQl node和Data node狀態。
group_replication_member_expel_timeout 指定組復制組成員在產生懷疑之后,從組中排除懷疑失敗的成員之前等待的時間(以秒為單位)。在產生懷疑之前的最初 5 秒檢測時間不計入該時間。直到并包括 MySQL 8.0.20 在內,group_replication_member_expel_timeout 默認值均為 0,這意味著沒有等待時間,并且在 5 秒鐘的檢測時間結束后,可疑成員應立即被驅逐。從 MySQL 8.0.21 開始,該值默認為 5,這意味著在 5 秒鐘的檢測時間后如果該節點還是不正常,那會在等 5 秒鐘,如果可疑成員還是不正常,超過這個時間將被驅逐。
為驗證該參數對集群影響,我們通過實驗模擬不同時長的網絡延遲,然后調整group_replication_member_expel_timeout 值觀察該參數值對集群驅逐故障節點的影響。
當前標題:mysql怎么復制集群 mysql怎么復制一個數據庫
文章來源:http://vcdvsql.cn/article44/ddsihee.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、用戶體驗、、微信公眾號、網站策劃、做網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯