欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Mysql組復(fù)制

          組復(fù)制是一種可用于實(shí)現(xiàn)容錯(cuò)系統(tǒng)的技術(shù)。 復(fù)制組是一個(gè)通過消息傳遞相互交互的 server 集群。通信層提供了原子消息(atomic message)和完全有序信息交互等保障機(jī)制。 這些是非常強(qiáng)大的功能,我們可以據(jù)此架構(gòu)設(shè)計(jì)更高級(jí)的數(shù)據(jù)庫復(fù)制解決方案。

          MySQL 組復(fù)制以這些功能和架構(gòu)為基礎(chǔ),實(shí)現(xiàn)了基于復(fù)制協(xié)議的多主更新。復(fù)制組由多個(gè) server成員構(gòu)成,并且組中的每個(gè) server 成員可以獨(dú)立地執(zhí)行事務(wù)。但所有讀寫(RW)事務(wù)只有在沖突檢測(cè)成功后才會(huì)提交。只讀(RO)事務(wù)不需要在沖突檢測(cè),可以立即提交。換句話說,對(duì)于任何 RW 事務(wù),提交操作并不是由始發(fā) server 單向決定的,而是由組來決定是否提交。準(zhǔn)確地說,在始發(fā) server 上,當(dāng)事務(wù)準(zhǔn)備好提交時(shí),該 server 會(huì)廣播寫入值(已改變的行)和對(duì)應(yīng)的寫入集(已更新的行的唯一標(biāo)識(shí)符)。然后會(huì)為該事務(wù)建立一個(gè)全局的順序。最終,這意味著所有 server 成員以相同的順序接收同一組事務(wù)。因此,所有 server 成員以相同的順序應(yīng)用相同的更改,以確保組內(nèi)一致。
          在不同 server 上并發(fā)執(zhí)行的事務(wù)可能存在沖突。 根據(jù)組復(fù)制的沖突檢測(cè)機(jī)制,對(duì)兩個(gè)不同的并發(fā)事務(wù)的寫集合進(jìn)行檢測(cè)。如在不同的 server 成員執(zhí)行兩個(gè)更新同一行的并發(fā)事務(wù),則會(huì)出現(xiàn)沖突。排在最前面的事務(wù)可以在所有 server 成員上提交,第二個(gè)事務(wù)在源 server 上回滾,并在組中的其他 server 上刪除。 這就是分布式的先提交當(dāng)選規(guī)則。

          復(fù)制組能夠以一種自動(dòng)優(yōu)先選擇的單主模式運(yùn)行,在某個(gè)時(shí)間只有一個(gè)服務(wù)器接受更新 。但是對(duì)于更高優(yōu)先級(jí)的用戶,組能夠以多主模式部署,所有的服務(wù)器都能夠接受更新,即使他們是同時(shí)發(fā)生的。

          組 復(fù)制中存在著一種內(nèi)建的組成員關(guān)系服務(wù)用來保持組的視圖一致,并且在任意時(shí)間對(duì)于組中的所有的服務(wù)器都可用。MySQL服務(wù)器能夠退出或者加入組 中,而且視圖也會(huì)相應(yīng)的更新。有時(shí)服務(wù)器可能會(huì)意外的退出組(故障),在這種情況下失敗檢測(cè)機(jī)制檢測(cè)這種情況并且告知復(fù)制組視圖發(fā)生了變化,這所有的一切 都是自動(dòng)實(shí)現(xiàn)的。

          組復(fù)制是一種 share-nothing 復(fù)制方案,其中每個(gè) server 成員都有自己的完整數(shù)據(jù)副本。

          MySQL 組復(fù)制協(xié)議:

          Mysql組復(fù)制

          在單主模式下部署組復(fù)制

          組中的每個(gè) server 實(shí)例可以在獨(dú)立的物理機(jī)器上運(yùn)行,也可以在同一臺(tái)機(jī)器上運(yùn)行。 本節(jié)介紹如何在一臺(tái)物理機(jī)上創(chuàng)建具有三個(gè) MySQL Server 實(shí)例的復(fù)制組。 這意味著需要三個(gè)數(shù)據(jù)目錄,每個(gè) server 實(shí)例一個(gè),每個(gè)實(shí)例都需要單獨(dú)配置。

          組架構(gòu)圖:

          Mysql組復(fù)制

          第一步部署 MySQL 服務(wù)器的三個(gè)實(shí)例。

          安裝好MySQL服務(wù)之后首先要進(jìn)行配置文件修改(三臺(tái)都要,注意server-id和loose-group_replication_local_address對(duì)應(yīng)每臺(tái)主機(jī)),在原有配置基礎(chǔ)上增加以下內(nèi)容:

          server5:(刪除之前的配置)

          [root@server5 ~]# cd /var/lib/mysql

          [root@server5 mysql]# rm -fr *

          [root@server5 mysql]# vim /etc/my.cnf

          server-id=5 (三臺(tái)主機(jī)Id不同即可)
          gtid_mode=ON
          enforce-gtid-consistency=true
          master_info_repository=TABLE
          relay_log_info_repository=TABLE
          binlog_checksum=NONE
          log_slave_updates=ON
          log_bin=binlog
          binlog_format=ROW

          transaction_write_set_extraction=XXHASH64 #指示Server必須為每個(gè)事務(wù)收集寫集合,并使用XXHASH64哈希算法將其編碼散列.
          loose-group_replication_group_name="9433c640-cace-11e8-8a9d-525400c143b6" #表示將加入或者創(chuàng)建的復(fù)制組命名,可以自己指定.(這里加的是server6的uuid)
          loose-group_replication_start_on_boot=off #設(shè)置為Server啟動(dòng)時(shí)不自動(dòng)啟動(dòng)組復(fù)制.
          loose-group_replication_local_address="172.25.0.121:24901"#綁定本地的172.25.0.121以及25901端口接受其他組成員的連接,IP地址必須為其他組成員可正常訪問.
          loose-group_replication_group_seeds="172.25.0.121:24901,172.25.0.122:24901,172.25.0.123:24901" #本行為告訴服務(wù)器當(dāng)服務(wù)器加入組時(shí),應(yīng)當(dāng)連接到這些IP種子服務(wù)器進(jìn)行配置。本設(shè)置可以不是全部的組成員服務(wù)地址.
          loose-group_replication_bootstrap_group= off #配置是否自動(dòng)引導(dǎo)組.

          loose-group_replication_single_primary_mode=FALSE #設(shè)置組自動(dòng)選擇一個(gè)server來處理讀/寫工作。這個(gè)server是主(PRIMARY),所有其他的都是從.
          loose-group_replication_enforce_update_everywhere_checks=on #多主模式下為多主更新啟用或禁用嚴(yán)格一致性檢查。
          loose-group_replication_ip_whitelist=""172.25.0.0/24,127.0.0.1/8""#開啟白名單,認(rèn)情況下只允許白名單連接到復(fù)制組如果是其他IP則需要配置。

          #使用的loose-前綴是指示Server啟用時(shí)尚未加載復(fù)制插件 也將繼續(xù)啟動(dòng)

          Mysql組復(fù)制

          Mysql組復(fù)制

          重啟數(shù)據(jù)庫并設(shè)置密碼

          [root@server5 mysql]# /etc/init.d/mysqld restart

          [root@server5 mysql]# grep password /var/log/mysqld.log

          [root@server5 mysql]# mysql_secure_installation

          [root@server5 mysql]# mysql -u root -p

          mysql> SET SQL_LOG_BIN=0; #以下操作不寫入日志

          mysql> grant replication slave on *.* to user@'%' identified by 'Westos+123'; #創(chuàng)建復(fù)制用戶及密碼

          mysql> flush privileges;

          mysql> SET SQL_LOG_BIN=1;

          mysql> change master to master_user='user',master_password='Westos+123' for channel 'group_replication_recovery';

          #這個(gè)復(fù)制跟普通的change master命令有區(qū)別,并不需要指定master是誰,但需要指定通道為’group_replication_recovery’。

          mysql> install plugin group_replication soname 'group_replication.so';#安裝組復(fù)制插件

          mysql> show plugins;

          Mysql組復(fù)制

          mysql> set global group_replication_bootstrap_group=ON;

          mysql> start group_replication;

          mysql> set global group_replication_bootstrap_group=OFF;

          mysql> select * from performance_schema.replication_group_members;

          #此引導(dǎo)應(yīng)僅由單個(gè) sever 獨(dú)立完成,該 server 啟動(dòng)組并 且只啟動(dòng)一次。 這就是為什么引導(dǎo)配置選項(xiàng)的值不保存在配置文件中的原因。 如果將其保 存在配置文件中,則在重新啟動(dòng)時(shí),server 會(huì)自動(dòng)引導(dǎo)具有相同名稱的第二個(gè)組。 這將導(dǎo)致兩個(gè)不同的組具有相同的名稱.

          Mysql組復(fù)制

          server6和server7中

          修改配置文件后,重啟數(shù)據(jù)庫并設(shè)置密碼

          [root@server7 mysql]# vim /etc/my.cnf

          Mysql組復(fù)制

          mysql> SET SQL_LOG_BIN=0;

          mysql> GRANT REPLICATION SLAVE ON *.* TO user@'%' IDENTIFIED BY 'Westos+123';

          mysql>flush privileges;

          mysql> reset master;

          mysql> SET SQL_LOG_BIN=1;

          mysql>change master to master_user='user',master_password='Westos+123' for channel 'group_replication_recovery';

          mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';

          mysql> START GROUP_REPLICATION;

          mysql> SELECT * FROM performance_schema.replication_group_members;

          Mysql組復(fù)制

          server6中配置相同

          Mysql組復(fù)制

          配置過程常見的錯(cuò)誤:
          1,來源IP沒有在白名單列表中,所以連接拒絕
          2,沒有配置同步賬號(hào)跟密碼,使用的是空密碼進(jìn)行同步。 需要為復(fù)制通道group_replication_recovery設(shè)置同步信息:CHANGE MASTER TO MASTER_USER=’mysqlsync’, MASTER_PASSWORD=’mysqlsync_password’ FOR CHANNEL ‘group_replication_recovery’;
          3,刪除validate_password密碼驗(yàn)證插件。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)