使用mysql 8.0 做高可用的時候發生這樣的問題:
我有三個資料庫服務器SQL1,SQL2,SQL3組成一個group_replication集群,由于網路不穩定,SQL3退出了集群,使用start group_replication想讓他重新加入的時候報錯:
This member has more executed transactions than those present in the group
我的理解是:SQL3退出集群之前有transaction在本地執行了,還沒有同步到SQL1、SQL2就退出了,SQL3上有SQL1和SQL2沒有的事務導致了SQL3不能加入集群。
網上查過這個問題很多的解決方法是reset master.具體做法是:
先關閉replication,
把SQL1或SQL2的資料手動還原到SQL3上,使得三臺機子的資料庫內容一致,
然后三個機子都reset master再重新建立group_repliction。
現在的問題是,以上操作的時候對于比較大的資料庫而言,需要備份還原資料操作耗時較大,而且資料備份到reset master之前 不能去對資料庫執行寫操作否則資料庫內容會不一致。所以,在生產中應該不適合使用這樣的方法。
那么有沒有什么方法,可以在不關閉SQL1和SQL2集群的情況下把SQL3加入群集呢?我的想法是哪里可以設定讓SQL3加入時把他本地多的transaction同步給SQL1和SQL2,但是在官方檔案里查了很久沒有找到相關的內容,還請懂的朋友不吝賜教,謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/18320.html
標籤:MySQL
上一篇:mysql基本查找編程求助
