欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL8.4組復(fù)制的實(shí)現(xiàn)步驟

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

1 什么是組復(fù)制

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

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

2 單主模式

2.1 什么是單主模式

  • 模式下只有一個(gè)主服務(wù)器;
  • 主服務(wù)器被設(shè)置讀寫模式
  • 組中其他所有成員設(shè)置只讀模式

2.2 單主模式部署示例

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

2.2.1 準(zhǔn)備MySQL實(shí)例10000

  • 創(chuàng)建目錄
mkdir -p /opt/mysql/10000/{data,log,tmp} 
  • 準(zhǔn)備配置文件
vi /opt/mysql/10000/my.cnf
 
[mysql]
#設(shè)置mysql客戶端默認(rèn)編碼
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
#服務(wù)器唯一ID,默認(rèn)是1
server-id=10000
#啟用二進(jìn)制日志
log-bin=mysql-bin
#最大連接數(shù)
max_connections=1000
#設(shè)置默認(rèn)時(shí)區(qū)
default-time_zone='+8:00'
# 0:區(qū)分大小寫
# 1:不區(qū)分大小寫
lower_case_table_names=1
user = mysql
#啟用全局事務(wù)標(biāo)識符(GTID)模式
gtid_mode=on
#強(qiáng)制GTID的一致性。這意味著在執(zhí)行事務(wù)時(shí),MySQL將確保所有涉及的服務(wù)器都使用相同的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 &
  • 初始化密碼
#查看臨時(shí)密碼
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;
  • 添加組復(fù)制配置
vi /opt/mysql/10000/my.cnf
#組復(fù)制設(shè)置
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 復(fù)制MySQL實(shí)例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 復(fù)制MySQL實(shí)例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 配置組復(fù)制

  • 主庫實(shí)例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;
  • 從庫實(shí)例10001執(zhí)行
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
> START GROUP_REPLICATION;
  • 從庫實(shí)例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 組復(fù)制數(shù)據(jù)同步測試

  • 主庫實(shí)例10000插入數(shù)據(jù)
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');
  • 從庫實(shí)例10001查詢數(shù)據(jù)
mysql -uroot -p'123456' --socket=/opt/mysql/10001/mysqld.sock
>  use test;
   select * from test;
  • 從庫實(shí)例10002查詢數(shù)據(jù)
mysql -uroot -p'123456' --socket=/opt/mysql/10002/mysqld.sock
>  use test;
   select * from test;

2.2.6 組復(fù)制主庫宕機(jī)測試

  • kill主庫實(shí)例10000
  • 查看成員

3 多主模式

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

3.1 什么是多主模式
  • 多主模式下,沒有成員具有特殊角色
  • 任何組成員加入復(fù)制時(shí)讀背設(shè)置讀寫模式,可都以處理寫事物
3.2 多主模式部署示例
  • 關(guān)閉實(shí)例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;
  • 使用實(shí)例10000引導(dǎo)組復(fù)制
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;
  • 實(shí)例10001,10002開啟組復(fù)制
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;

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

相關(guān)文章

  • MySQL插入emoji表情失敗問題的解決方法

    MySQL插入emoji表情失敗問題的解決方法

    emoji表情在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,但是最近在mysql中插入emoji表情遇到了問題,通過查找相關(guān)的資料終于解決了,所以將這次解決的過程分享出來,這篇文章主要就給大家介紹了MySQL插入emoji表情失敗問題的解決方法,需要的朋友可以參考。
    2017-05-05
  • MySQL無法輸入中文字符問題的解決辦法

    MySQL無法輸入中文字符問題的解決辦法

    MySQL無法輸入中文的問題大多是由于字符集不匹配所導(dǎo)致的,下面這篇文章主要給大家介紹了關(guān)于MySQL無法輸入中文字符問題的解決辦法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Mysql存儲過程中游標(biāo)的用法實(shí)例

    Mysql存儲過程中游標(biāo)的用法實(shí)例

    這篇文章主要介紹了Mysql存儲過程中游標(biāo)的用法,以商戶關(guān)聯(lián)數(shù)據(jù)的插入及更新為例分析了MySQL存儲過程中游標(biāo)的使用技巧,需要的朋友可以參考下
    2015-07-07
  • 關(guān)于MySQL 大批量插入時(shí)如何過濾掉重復(fù)數(shù)據(jù)

    關(guān)于MySQL 大批量插入時(shí)如何過濾掉重復(fù)數(shù)據(jù)

    這篇文章主要介紹關(guān)于MySQL 大批量插入時(shí)如何過濾重復(fù)數(shù)據(jù),比如線上庫有6個(gè)表存在重復(fù)數(shù)據(jù),其中2個(gè)表比較大,96萬+和30萬+,因?yàn)橹疤幚磉^相同的問題,就直接拿來了上次的Python去重腳本,腳本很簡單,就是連接數(shù)據(jù)庫,查出來重復(fù)數(shù)據(jù),循環(huán)刪除,需要的朋友可以參考下
    2021-09-09
  • MYSQL函數(shù)的使用梳理

    MYSQL函數(shù)的使用梳理

    本篇文章講解是是MySQL的函數(shù)方法,涵蓋所有的MySQL常見的方法,MySQL函數(shù),是一種控制流程函數(shù),屬于數(shù)據(jù)庫用語言,以下列出了這些函數(shù)的說明
    2022-05-05
  • mysql臨時(shí)表用法分析【查詢結(jié)果可存在臨時(shí)表中】

    mysql臨時(shí)表用法分析【查詢結(jié)果可存在臨時(shí)表中】

    這篇文章主要介紹了mysql臨時(shí)表用法,結(jié)合實(shí)例形式分析了MySQL將查詢結(jié)果存儲在臨時(shí)表中的相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • MySQL基于SSL安全連接的主從復(fù)制(過程詳解)

    MySQL基于SSL安全連接的主從復(fù)制(過程詳解)

    SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,這篇文章主要介紹了MySQL基于SSL安全連接的主從復(fù)制,需要的朋友可以參考下
    2023-04-04
  • 全面解析MySQL中的隔離級別

    全面解析MySQL中的隔離級別

    這篇文章主要介紹了MySQL中的隔離級別的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下。
    2021-01-01
  • mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解

    mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解

    這篇文章主要介紹了mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解,本文給大家分享SQL語句寫法,文末補(bǔ)充介紹了查詢sqlserver 數(shù)據(jù)庫中各表?xiàng)l數(shù)的語句,需要的朋友可以參考下
    2023-07-07
  • MySQL開啟慢查詢?nèi)罩緇og-slow-queries的方法

    MySQL開啟慢查詢?nèi)罩緇og-slow-queries的方法

    MySQL中提供了一個(gè)慢查詢的日志記錄功能,可以把查詢SQL語句時(shí)間大于多少秒的語句寫入慢查詢?nèi)罩?,日常維護(hù)中可以通過慢查詢?nèi)罩镜挠涗浶畔⒖焖贉?zhǔn)確地判斷問題所在
    2016-05-05

最新評論