mysql8.0.31 mgr搭建

不知為何就叫呵呵發表於2022-11-17

1.  mysql下載地址:MySQL :: Download MySQL Community Server

2.  mgr文件:MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication

3. 安裝例項:

  a)  解壓 tar -xvf mysql-8.0.31-linux-glibc2.17-x86_64-minimal.tar.xz

  b)   新增使用者

groupadd mysql
useradd -r -g mysql mysql
chown mysql:mysql -R /usr/local/mysql

 

  c)  初始化: ./bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql --initialize

    需要記住初始密碼,第一次登入需要

  d)  配置軟連線: 

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin

 

  e) 更改root密碼(授權遠端登入)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'
flush privileges;

  f) mysql開啟失敗時可能是目錄沒有許可權 chown mysql:mysql -R /usr/local/mysql/data

    或者log檔案沒有建立,需要手動建立

    初始化密碼登入失敗,需要注意跳脫字元,登入命令新增 -h127.0.0.1

4.  mgr配置:

  a)  my.cnf,注意 server-id 是組內唯一的,group_replication_local_address 為本機地址,group_replication_group_name 是組內相同的

[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#user=root

#開啟GTID,必須開啟
gtid_mode=ON
#強制GTID的一致性
enforce_gtid_consistency=ON
 
log_bin=binlog
#log_slave_updates=ON
#binlog格式,MGR要求必須是ROW,不過就算不是MGR,也最好用row
binlog_format=row
#server-id必須是唯一的
server-id = 2
#MGR使用樂觀鎖,所以官網建議隔離級別是RC,減少鎖粒度
transaction_isolation = READ-COMMITTED
#因為叢集會在故障恢復時互相檢查binlog的資料,
#所以需要記錄下叢集內其他伺服器發過來已經執行過的binlog,按GTID來區分是否執行過.
log-slave-updates=1
#binlog校驗規則,5.6之後的高版本是CRC32,低版本都是NONE,但是MGR要求使用NONE
binlog_checksum=NONE
#基於安全的考慮,MGR叢集要求複製模式要改成slave記錄記錄到表中,不然就報錯
master_info_repository=TABLE
#同上配套
relay_log_info_repository=TABLE

report_host = '192.168.229.188'
 
#組複製設定
#記錄事務的演算法,官網建議設定該引數使用 XXHASH64 演算法
transaction_write_set_extraction = XXHASH64
#plugin_load_add='group_replication.so'
#相當於此GROUP的名字,是UUID值,不能和叢集內其他GTID值的UUID混用,可用uuidgen來生成一個新的,
#主要是用來區分整個內網裡邊的各個不同的GROUP,而且也是這個group內的GTID值的UUID
group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
#IP地址白名單,預設只新增127.0.0.1,不會允許來自外部主機的連線,按需安全設定
group_replication_ip_whitelist = '127.0.0.1/8,192.168.0.0/16,192.168.229.189,192.168.229.190'
#是否隨伺服器啟動而自動啟動組複製,不建議直接啟動,怕故障恢復時有擾亂資料準確性的特殊情況
group_replication_start_on_boot = OFF
#本地MGR的IP地址和埠,host:port,是MGR的埠,不是資料庫的埠
group_replication_local_address = '192.168.229.188:33081'
#需要接受本MGR例項控制的伺服器IP地址和埠,是MGR的埠,不是資料庫的埠
group_replication_group_seeds = '192.168.229.188:33081,192.168.229.189:33081,192.168.229.190:33081'
#開啟引導模式,新增組成員,用於第一次搭建MGR或重建MGR的時候使用,只需要在叢集內的其中一臺開啟,
group_replication_bootstrap_group = OFF
#是否啟動單主模式,如果啟動,則本例項是主庫,提供讀寫,其他例項僅提供讀,如果為off就是多主模式了
#group_replication_single_primary_mode = ON
#多主模式下,強制檢查每一個例項是否允許該操作,如果不是多主,可以關閉
#loose-group_replication_enforce_update_everywhere_checks = OFF



[mysqld_safe]
log-error=/usr/local/mysql/log/mariadb.log
pid-file=/usr/local/mysql/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

  b)  進入mysql配置組複製連結登入憑證(所有例項都需要配置)

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';

  c)  安裝外掛

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

  d)  引導啟動 主節點

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
SELECT * FROM performance_schema.replication_group_members; ## 查詢組成員

 e)  新增 從節點

START GROUP_REPLICATION;

  f)  新增節點出現異常: This member has more executed transactions than those present in the group 可以嘗試 reset master; reset slave;

      或者:在欲加入的節點執行 reset master; 然後在組內任一節點查詢 show master status\G ,取值Executed_Gtid_Set,

          然後再加入節點執行 SET GLOBAL GTID_PURGED = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-197687:1000003-1000379'; ###Executed_Gtid_Set值

   節點無法連線時,可能是防火牆限制

     新增節點時異常:  Authentication requires secure connection. Error_code: MY-002061,另例項重啟後再次加入組時也需要重新執行    

CHANGE MASTER TO MASTER_USER='rpl', MASTER_PASSWORD='rpl123' FOR CHANNEL 'group_replication_recovery';

 

相關文章