最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL8.4組復制的實現步驟

 更新時間:2025年08月11日 11:47:17   作者:GzlAndy  
本文介紹MySQL 8.4的組復制技術,通過Paxos協議實現高可用性,支持單主和多主模式,解決傳統異步復制數據不一致問題,感興趣的可以了解一下

1 什么是組復制

  • 組復制主要解決傳統異步復制主機宕機可能造成主從節(jié)點數據不一致問題
  • MySQL Group Replication簡稱MGR
  • 原有gtid復制功能進行增強,支持模式模式
  • 組復制數據庫層面到了只要集群大多數主機可用,服務可用,也就是3服務器集群允許其中1宕機

  • 組復制提供了分布式狀態(tài)機復制,服務器之間具有很強協調性;
  • 當服務器屬于同一組,它們自動進行協調
  • 傳統的主從復制方式一個不等數據量,主節(jié)點執(zhí)行事務異步發(fā)送節(jié)點,從節(jié)點重新執(zhí)行;
  • 組復制采用整組寫入,避免單點問題
  • 組復制傳輸數據使用Paxos協議,Paxos協議保證了數據傳輸一致性原子;
  • 基于Paxos協議,組復制構建一個分布式狀態(tài)復制機制。這是實現多主復制核心技術
  • 組復制提供多寫方案
  • MGR保證數據庫服務連續(xù)可用但是存在以下問題
    • 一個成員不可用,連接到客戶不能自主轉移其他組成員
    • MySQL Router提供故障轉移能力

2 單主模式

2.1 什么是單主模式

  • 模式下,只有一個主服務器
  • 主服務器被設置讀寫模式
  • 組中其他所有成員設置只讀模式

2.2 單主模式部署示例

https://dev.mysql.com/doc/refman/8.4/en/group-replication-configuring-instances.html

2.2.1 準備MySQL實例10000

  • 創(chuàng)建目錄
mkdir -p /opt/mysql/10000/{data,log,tmp} 
  • 準備配置文件
vi /opt/mysql/10000/my.cnf
 
[mysql]
#設置mysql客戶端默認編碼
default-character-set=utf8
[mysqld]
port=10000
pid-file= /opt/mysql/10000/mysqld.pid
socket= /opt/mysql/10000/mysqld.sock
datadir= /opt/mysql/10000/data
log-error=/opt/mysql/10000/log/mysqld.log
tmpdir=/opt/mysql/10000/tmp
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#服務器唯一ID,默認是1
server-id=10000
#啟用二進制日志
log-bin=mysql-bin
#最大連接數
max_connections=1000
#設置默認時區(qū)
default-time_zone='+8:00'
# 0:區(qū)分大小寫
# 1:不區(qū)分大小寫
lower_case_table_names=1
user = mysql
#啟用全局事務標識符(GTID)模式
gtid_mode=on
#強制GTID的一致性。這意味著在執(zhí)行事務時,MySQL將確保所有涉及的服務器都使用相同的GTID集。
enforce_gtid_consistency=on
  • 初始化
chown -R mysql:mysql /opt/mysql/10000
mysqld --defaults-file=/opt/mysql/10000/my.cnf --initialize
mysqld --defaults-file=/opt/mysql/10000/my.cnf &
  • 初始化密碼
#查看臨時密碼
cat /opt/mysql/10000/log/mysqld.log|grep "A temporary password"
#登錄
mysql -uroot -p'EG+Pvd&jj0N=' --socket=/opt/mysql/10000/mysqld.sock
>ALTER USER 'root'@'localhost' identified by '123456';
  flush privileges;
  • 創(chuàng)建同步用戶
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
 >CREATE USER 'repl'@'%' IDENTIFIED  BY '123456';
  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  flush privileges;
  • 添加組復制配置
vi /opt/mysql/10000/my.cnf
#組復制設置
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "192.168.221.100:33061"
group_replication_group_seeds= "192.168.221.100:33061,192.168.221.100:33062,192.168.221.100:33063"
group_replication_bootstrap_group=off
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

2.2.2 復制MySQL實例10001

cp -rf /opt/mysql/10000 /opt/mysql/10001
sed -i "s#10000#10001#g" /opt/mysql/10001/my.cnf
rm -f /opt/mysql/10001/data/auto.cnf
sed -i  "s#group_replication_local_address= '192.168.221.100:33061'#group_replication_local_address= '192.168.221.100:33062'#g" /opt/mysql/10001/my.cnf
chown -R mysql:mysql /opt/mysql/10001
mysqld --defaults-file=/opt/mysql/10001/my.cnf &

2.2.3 復制MySQL實例10002

cp -rf /opt/mysql/10000 /opt/mysql/10002
sed -i "s#10000#10002#g" /opt/mysql/10002/my.cnf
rm -f /opt/mysql/10002/data/auto.cnf
sed -i  "s#group_replication_local_address= '192.168.221.100:33061'#group_replication_local_address= '192.168.221.100:33063'#g" /opt/mysql/10002/my.cnf
chown -R mysql:mysql /opt/mysql/10002
mysqld --defaults-file=/opt/mysql/10002/my.cnf &

2.2.4 配置組復制

  • 主庫實例10000執(zhí)行
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
> set global group_replication_recovery_get_public_key=on;
  CHANGE REPLICATION SOURCE TO SOURCE_USER='repl', SOURCE_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
  SET GLOBAL group_replication_bootstrap_group=ON;
  START GROUP_REPLICATION;
  SET GLOBAL group_replication_bootstrap_group=OFF;
  • 從庫實例10001執(zhí)行
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
> START GROUP_REPLICATION;
  • 從庫實例10002執(zhí)行
mysql -uroot -p'123456' --socket=/opt/mysql/10002/mysqld.sock
> START GROUP_REPLICATION;
  • 查看成員
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
> SELECT CHANNEL_NAME,MEMBER_ID,MEMBER_HOST,MEMBER_PORT, MEMBER_ROLE FROM performance_schema.replication_group_members;

2.2.5 組復制數據同步測試

  • 主庫實例10000插入數據
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
> create database test;
   use test;
   create table test (id int,name varchar(10));
   ALTER TABLE test ADD PRIMARY KEY id(id);
   insert into test values(1,'a'),(2,'b'),(3,'c');
  • 從庫實例10001查詢數據
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
>  use test;
   select * from test;
  • 從庫實例10002查詢數據
mysql -uroot -p'123456' --socket=/opt/mysql/10002/mysqld.sock
>  use test;
   select * from test;

2.2.6 組復制主庫宕機測試

  • kill主庫實例10000
  • 查看成員

3 多主模式

https://dev.mysql.com/doc/refman/8.4/en/group-replication-multi-primary-mode.html

3.1 什么是多主模式
  • 多主模式下,沒有成員具有特殊角色
  • 任何組成員加入復制讀背設置讀寫模式,可都以處理寫事物
3.2 多主模式部署示例
  • 關閉實例10000,10001,10002模式
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
>  stop GROUP_REPLICATION;
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=ON;
 
 
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
>  stop GROUP_REPLICATION;
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=ON;
 
mysql -uroot -p'123456' --socket=/opt/mysql/10002/mysqld.sock
>  stop GROUP_REPLICATION;
set global group_replication_single_primary_mode=off;
set global group_replication_enforce_update_everywhere_checks=ON;
  • 使用實例10000引導組復制
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
> SET GLOBAL group_replication_bootstrap_group=ON;
  START GROUP_REPLICATION;
  SET GLOBAL group_replication_bootstrap_group=OFF;
  • 實例10001,10002開啟組復制
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
> START GROUP_REPLICATION;

mysql -uroot -p'123456' --socket=/opt/mysql/10002/mysqld.sock
> START GROUP_REPLICATION;
  • 查看組成員
mysql -uroot -p'123456' --socket=/opt/mysql/10000/mysqld.sock
>  SELECT CHANNEL_NAME,MEMBER_ID,MEMBER_HOST,MEMBER_PORT, MEMBER_ROLE FROM performance_schema.replication_group_members;

到此這篇關于MySQL8.4組復制的實現步驟的文章就介紹到這了,更多相關MySQL8.4組復制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

福州市| 岐山县| 牙克石市| 兴海县| 襄垣县| 沂源县| 雷州市| 连州市| 乐都县| 大渡口区| 通道| 旺苍县| 禹州市| 进贤县| 安远县| 通河县| 彭山县| 高淳县| 双桥区| 沾化县| 武威市| 富源县| 颍上县| 乐都县| 镇坪县| 兰州市| 西青区| 泌阳县| 隆昌县| 南溪县| 措美县| 新兴县| 大埔县| 遂平县| 崇礼县| 庆安县| 东城区| 紫阳县| 黑河市| 松潘县| 怀柔区|