MySQL Group Replication搭建笔记

2020-07-29

MGR多主模式搭建

MGR是MySQL推出的新的MySQL集群模式,它解决了原来主从复制模式存在的问题,具备故障快速转移能力,集群中的每个server都拥有集群的全部数据。MGR分为单主模式和多主模式,本次要搭建的是后者。

搭建环境:
Windows 10
MySQL版本:8.0.17

1.创建配置文件

=================my.ini============

[client]
port = 3306
socket = D:/MySQL/group/data1/mysql/run/mysql.sock

[mysqld]
port = 3306
socket = D:/MySQL/group/data1/mysql/run/mysql.sock
pid_file = D:/MySQL/group/data1/mysql/run/mysql.pid
datadir = D:/MySQL/group/data1/mysql/data
basedir= "D:/MySQL/MySQL Server 8.0/"
relay-log = relay-log
default_storage_engine = InnoDB
max_allowed_packet = 512M
max_connections = 2048
open_files_limit = 65535

#skip-name-resolve # 注释掉是为了允许localhost登录
skip-host-cache
lower_case_table_names=1

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

innodb_buffer_pool_size = 1024M
innodb_log_file_size = 2048M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0

key_buffer_size = 64M

log-error = D:/MySQL/group/data1/mysql/log/mysql_error.log
log-bin = D:/MySQL/group/data1/mysql/binlogs/mysql-bin
slow_query_log = 1
slow_query_log_file = D:/MySQL/group/data1/mysql/log/mysql_slow_query.log
long_query_time = 5

tmp_table_size = 32M
max_heap_table_size = 32M
#query_cache_type = 0
#query_cache_size = 0

secure-file-priv= NULL

#MGR
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
#每个id都必须唯一的
server_id=1
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

#自动安装插件
plugin_load_add=group_replication.dll
plugin_load_add=mysql_clone.dll
transaction_write_set_extraction=XXHASH64
#必须是一个有效的UUID, 可以使用数据库的SELECT UUID()获取一个有效的UUID
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
#是否启动时就启动集群复制
group_replication_start_on_boot=OFF
group_replication_local_address= "127.0.0.1:33066"
group_replication_group_seeds= "127.0.0.1:33066,127.0.0.1:33067,127.0.0.1:33068,127.0.0.1:33069"
group_replication_ip_whitelist="127.0.0.1"
#指示插件是否引导组
group_replication_bootstrap_group=OFF
#多组模式
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
#插件配置
mysqlx_port = 33064
mysqlx_socket=D:/MySQL/group/data1/mysql/run/xplugin.sock

=================my.ini end============

2.初始化数据库

bin\mysqld.exe --defaults-file="D:\MySQL\group\data1\mysql\etc\my.ini" --initialize --user=mysql

3.启动数据库服务

bin\mysqld.exe --defaults-file="D:\MySQL\group\data1\mysql\etc\my.ini"

4.使用临时密码登录数据库

mysql -S D:\MySQL\group\data1\mysql\run\mysql.sock -uroot -P3306 -p
#初始化数据库后可以在error日志行“A temporary password is generated for ... ”下找到自动创建临时的root密码。

5.首次登录必须修改root密码后才能使用数据库

ALTER USER USER() IDENTIFIED BY '123456';

6.创建一个用于同步复制的user

#所有server上都执行
#如果SQL_LOG_BIN=1则记录操作过程,自动同步到其它节点
#查看系统变量:show variables like '%log_bin%';
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
mysql> SET SQL_LOG_BIN=1;

7.配置MGR

#如果配置文件中没有配置需要安装的插件,需要手动安装插件
#plugin_load_add=group_replication.so
#plugin_load_add=mysql_clone.so
#连接到服务执行:INSTALL PLUGIN group_replication SONAME 'group_replication.so';
#检查插件安装
#mysql> SHOW PLUGINS;

#第一个主节点,引导创建组
#mysql> reset master;
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

#剩余其它节点
#mysql> reset master;
mysql> START GROUP_REPLICATION;

#查询组状态
mysql> SELECT * FROM performance_schema.replication_group_members;
#查当前节点通信地址
mysql> SELECT @@group_replication_local_address;

#创建测试表
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');

mysql> SELECT * FROM t1;
mysql> SHOW BINLOG EVENTS;
mysql> SHOW DATABASES LIKE 'test';

ps: 每个server都安装上述的步骤执行,只是需要区别配置文件,并且第一个server作为引导启动的区别,即只有第一个引导server需要设置group_replication_bootstrap_group变量。

--===========================================================--
搭建注意事项:
1.若配置文件my.ini中设置了参数: skip-name-resolve,请将其注释掉。否则登录时会报类似错误:“ERROR 1130 (HY000): Host '127.0.0.1' is not allowed to connect to this MySQL server,从而导致使用“localhost”不能连接到数据库。

2.Windows下配置文件中要加载的插件改为:group_replication.dll,mysql_clone.dll。

3.若非第一个节点启动组同步复制时,报“This member has more executed transactions than those present in the group”的错误,需要执行“reset master”重置事务id。

  1. 新的server加入集群组报“error connecting to master 'rpl_user@hostname:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061”的错误,要么安装插件支持,要么执行:
    UPDATE mysql.user set host='%' where user='rpl_user';
    FLUSH PRIVILEGES;
    ALTER USER 'rpl_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

  2. 集群同步复制搭建成功需要所有的server的同步复制用户的加密方式保持一致,所有的操作在每个server上都有权限正确执行。

6.group_replication_group_seeds的配置可以只配置部分集群成员,配置的成员的有效性是在执行START GROUP_REPLICATION时才会去验证。当前的服务会按顺序的尝试连接到列表中的每一个成员,直到成功加入集群(实际上并不是按顺序连接到第一个)。因此配置的seeds必须至少有一个是有效的,否则加入集群会失败。

As no ONLINE member has the missing data for recovering in its binary logs, this member will use cloning as its recovery strategy.

参考:https://dev.mysql.com/doc/refman/8.0/en/group-replication.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343