MySQL8.0輕鬆搞定GTID組複製

KunlunDB發表於2022-01-21

前言


之前文章介紹了MySQL8.0主從複製,以及衍生出來的主主複製(可點如下連結檢視)。


今天來聊一聊MySQL8.0的組複製。

 

主從複製技術僅解決了資料同步的問題 ,如果主伺服器當機,意味著資料庫管理員需要介入,應用系統可能需要修改資料庫連線地址或者重啟才能實現。

 

組複製只要不是大多數節點壞掉就可以繼續工作 ,有自動檢測機制,當不同節點產生資源爭用衝突時,不會出現錯誤,按照先到者優先原則進行處理。 比如,3臺伺服器的叢集,允許其中1臺當機。

 

組複製工作模式:

  • 單主模式,其中只有一個伺服器接受更新,單主是系統自動選舉出來的。

  • 多主模式,其中所有伺服器都可以接受更新。


崑崙資料庫儲存節點的單個分片,採用的是單主模式的組複製。

 

在單主模式下,當主節點當機時,將自動選擇新的主節點,選舉方法如下圖所示:


 


MySQL8.0輕鬆搞定GTID組複製

在多主模式下,每個節點都可以寫資料,因此不存在節點選舉,如果組成員發生故障,業務切換節點即可。如下圖所示:


 


MySQL8.0輕鬆搞定GTID組複製

 

下面介紹在安裝好MySQL8的centos8虛擬機器上,實現單主模式組複製,以及多主模式組複製的過程:

 


虛擬機器列表:

    G1:   192.168.25.150G2:   192.168.25.151G3:   192.168.25.152



    一、G1配置


    1.1.  修改主機名,並重啟生效

      vim /etc/hosts192.168.25.150         centos8-0192.168.25.151         centos8-1192.168.25.152         centos8-2


      1.2.  關閉防火牆並設定開機不啟動

        systemctl stop firewalld.servicesystemctl disable firewalld.service



        1.3.  關閉Selinux並設定開機不啟動

          setenforce 0vim /etc/selinux/configSELINUX=disabled



          1.4.  刪除auto.cnf,重啟自動生成server-uuid

            rm -f /var/lib/mysql/auto.cnf



            1.5.  設定配置檔案

              vim /etc/my.cnf# 新增[mysqld]#binlog預設已經開啟,不用設定#伺服器ID,每臺機器不能重複server_id=1#全域性事物標識GTID開關gtid_mode=>


              1.6.  重啟MySQL

                systemctl restart mysqld.service



                1.7.  登入mysql,新增用於同步的資料庫賬號

                  mysql> set sql_log_bin=0;  #不記錄二進位制日誌mysql> create user 'kunlun'@'%' identified by '123456';mysql> grant replication slave on *.* to 'kunlun'@'%';mysql> flush privileges;mysql> set sql_log_bin=1;mysql> change master to master_user='kunlun', master_password='123456' for channel 'group_replication_recovery';


                    

                  1.8.  啟動組複製功能   

                    ## 第一個主需要開啟bootstrap_group,啟動複製服務後,再關閉mysql> set global group_replication_bootstrap_group=on; mysql> start group_replication;mysql> set global group_replication_bootstrap_group=off;
                     

                    1.9.  檢視組員情況
                      mysql> select * from performance_schema.replication_group_members;+-------------+-------------+--------------+-------------+| MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE |+-------------+-------------+--------------+-------------+| centos8-   |        3306 | ONLINE       | PRIMARY     |+-------------+-------------+--------------+-------------+
                       


                      二、G2,G3配置


                      重複1.1-1.9步驟


                      步驟1.5配置檔案, G2,G3分別修改如下

                        server_id=2group_replication_local_address="192.168.25.151:13306"server_id=3group_replication_local_address="192.168.25.152:13306"



                        步驟1.8只需啟動複製服務

                          mysql>start group_replication;


                           

                          步驟1.9檢視組員情況
                            mysql> select * from performance_schema.replication_group_members;+-------------+-------------+--------------+-------------+| MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE |+-------------+-------------+--------------+-------------+| centos8-   |        3306 | ONLINE       | PRIMARY     || centos8-1   |        3306 | ONLINE       | SECONDARY   || centos8-2   |        3306 | ONLINE       | SECONDARY   |+-------------+-------------+--------------+-------------+

                            至此,單主模式的組複製已經搭建成功。



                            三、多主模式配置


                            3.1.  設定配置檔案,G1,G2,G3增加兩項配置

                              vim /etc/my.cnfgroup_replication_single_primary_mode=offgroup_replication_enforce_update_everywhere_checks=on



                              3.2.  重啟MySQ L

                                systemctl restartmysqld.service



                                3.3.  G1啟動組複製功能   
                                  ## 第一個主需要開啟bootstrap_group,啟動複製服務後,再關閉mysql> set global group_replication_bootstrap_group=on; mysql> start group_replication;mysql> set global group_replication_bootstrap_group=off;


                                  3.4.  G2,G3只需啟動複製服務

                                    mysql>start group_replication;


                                    3.5.  檢視組員情況
                                      mysql> select * from performance_schema.replication_group_members;+-------------+-------------+--------------+-------------+| MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE |+-------------+-------------+--------------+-------------+| centos8-   |        3306 | ONLINE       | PRIMARY     || centos8-1   |        3306 | ONLINE       | PRIMARY     || centos8-2   |        3306 | ONLINE       | PRIMARY     |+-------------+-------------+--------------+-------------+
                                       

                                      至此,多主模式的組複製已經搭建成功。


                                      THE END


                                      來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011764/viewspace-2853172/,如需轉載,請註明出處,否則將追究法律責任。

                                      相關文章