国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL MGR+ Consul之數據庫高可用方案最棒實踐

2024-07-24 12:31:56
字體:
來源:轉載
供稿:網友
          MySQL MGR+ Consul之數據庫高可用方案最佳實踐
背景說明:
       基于目前存在很多MySQL數據庫單點故障,傳統的MHA,PXC等方案用VIP或者DNS切換的方式可以實現、基于數據庫的數據強一致性考慮,采用MGR集群,采用consul服務注冊發現實現應用端通過動態DNS 訪問MGR集群,實現數據庫高可用,自動化切換的方案
       MGR簡介
       MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引進的一個數據庫高可用與高擴展的解決方案,以插件形式提供,實現了分布式下數據的最終一致性,總結MGR特點如下:
高一致性:基于分布式paxos協議實現組復制,保證數據一致性;
高容錯性:自動檢測機制,只要不是大多數節點都宕機就可以繼續工作,內置防腦裂保護機制;
高擴展性:節點的增加與移除會自動更新組成員信息,新節點加入后,自動從其他節點同步增量數據,直到與其他節點數據一致;
高靈活性:提供單主模式和多主模式,單主模式在主庫宕機后能夠自動選主,所有寫入都在主節點進行,多主模式支持多節點寫入。
MGR原理說明:
組復制是一種可用于實現容錯系統的技術。 復制組是一個通過消息傳遞相互交互的 server 集群。通信層提供了原子消息(atomic message)和完全有序信息交互等保障機制
實現了基于復制協議的多主更新
復制組由多個 server成員構成,并且組中的每個 server 成員可以獨立地執行事務。但所有讀寫(RW)事務只有在沖突檢測成功后才會提交。只讀(RO)事務不需要在沖突檢測,可以立即提交。句話說,對于任何 RW 事務,提交操作并不是由始發 server 單向決定的,而是由組來決定是否提交。準確地說,在始發 server 上,當事務準備好提交時,該 server 會廣播寫入值(已改變的行)和對應的寫入集(已更新的行的唯一標識符)。然后會為該事務建立一個全局的順序。最終,這意味著所有 server 成員以相同的順序接收同一組事務。因此,所有 server 成員以相同的順序應用相同的更改,以確保組內一致。組復制是一種 share-nothing 復制方案,其中每個 server 成員都有自己的完整數據副本。
MGR的局限性:
僅支持InnodDB存儲引擎的表,并且每個表必須有主鍵ID, 用做wirte set的沖突檢測
必須啟用GTID特性,binlog日志格式必須為row模式
目前一個MGR集群最多支持9個節點
不支持外健的save point特性,無法做全局間的約束檢測和部分回滾
二進制日志不支持binlog event checksum
 
MGR集群環境搭建
mysql的安裝這里就做詳細說明(有需要的話,我把自動化安裝腳本放在博客上)
三臺mysql server 主機都安裝mysql服務并初始化密碼
修改配置文件,保證三臺mysql server的配置一樣(serverid、IP不一致)
vim /etc/my.cnf
##gtid配置
server_id = 1 ## 保證三臺主機的serverid 不一致,這里配置為1,11,111
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
innodb_buffer_pool_instances=4
innodb_buffer_pool_size=1G
innodb_flush_log_at_trx_commit=2
sync_binlog=0
#for parallel apply binlog
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
slave_preserve_commit_order=on
##mgr配置
transaction_write_set_extraction=XXHASH64
##表示將加入或者創建的復制組命名為8053c671-0622-11e8-a300-525400b9c5e8,可以自己指定
loose-group_replication_group_name=“8053c671-0622-11e8-a300-525400b9c5e8”
#設置server啟動時不自動啟動組復制
loose-group_replication_start_on_boot=off
#設置組復制的端口,并保證其集群可以正常訪問
loose-group_replication_local_address= “10.88.6.251:33091"
#當加入組時應該連接到這些服務器上進行配置
loose-group_replication_group_seeds=“10.88.6.251:33091,10.88.6.252:33091,10.88.6.253:33091"
loose-group_replication_bootstrap_group= off
loose-group_replication_single_primary_mode=ON ##開啟單主模式
#關閉多主模式
loose-group_replication_enforce_update_everywhere_checks=FALSE
#配置集群白名單
loose-group_replication_ip_whitelist="10.88.6.0/24"
 
mysql> INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Query OK, 0 rows affected (0.16 sec)
#此引導應僅由單個 sever 獨立完成,該 server 啟動組并且只啟動一次。 這就是為什么引導配置選項的值不保存在配置文件中的原因。 如果將其保存在配置文件中,則在重新啟動時,server 會自動引導具有相同名稱的第二
個組。 這將導致兩個不同的組具有相同的名稱 mysql> SET GLOBAL group_replication_bootstrap_group=ON;  Query OK, 0 rows affected (0.00 sec)
mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected (1.78 sec)
 
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
Query OK, 0 rows affected (0.00 sec)
 
mysql>SELECT * FROM performance_schema.replication_group_members/G;
CHANNEL_NAME: group_replication_applier
   MEMBER_ID: a7495a32-398b-11e9-bec1-080027857522
 MEMBER_HOST: mnode1
 MEMBER_PORT: 3309
MEMBER_STATE: ONLINE
 
Server mnode2、server mnode3
 
mysql> SET SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%' IDENTIFIED BY 'Workhard@345';
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SET SQL_LOG_BIN=1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='pan@345' FOR CHANNEL 'group_replication_recovery';
 
到此為止MGR集群已經搭建完畢、在啟動集群的同時可以同時觀察其成員的加入的整個過程。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兴市| 武山县| 新昌县| 浑源县| 泾源县| 隆子县| 崇文区| 鹤庆县| 永康市| 莎车县| 商城县| 浏阳市| 靖安县| 绍兴市| 天峨县| 阿拉善右旗| 娄底市| 南通市| 韶山市| 潢川县| 深水埗区| 柞水县| 铅山县| 绍兴市| 洛南县| 罗山县| 虞城县| 宝兴县| 通化县| 金塔县| 甘德县| 封丘县| 新泰市| 敦化市| 安仁县| 璧山县| 环江| 呼图壁县| 儋州市| 大厂| 通榆县|