建设部官方网站,seo课,宁波网站推广厂家电话,建站模板源码0. 参考文章
官方文档#xff1a;
MySQL :: MySQL 8.0 Reference Manual :: 18.2 Getting Started
博客#xff1a;
MGR 单主模式部署教程#xff08;基于 MySQL 8.0.28#xff09; - 墨天轮 (modb.pro)
mysql MGR单主模式的搭建 - 墨天轮 (modb.pro)
MySQL 5.7 基于…0. 参考文章
官方文档
MySQL :: MySQL 8.0 Reference Manual :: 18.2 Getting Started
博客
MGR 单主模式部署教程基于 MySQL 8.0.28 - 墨天轮 (modb.pro)
mysql MGR单主模式的搭建 - 墨天轮 (modb.pro)
MySQL 5.7 基于组复制(MySQL Group Replication) - 运维小结 - 散尽浮华 - 博客园 (cnblogs.com)
1. 前提条件
硬件条件
三台同一局域网内具有互通能力的 Linux 服务器也可以在同一台 Linux 机器上开三个 Docker
能力前提
会 Mysql 服务端和客户端的安装和使用会基本的 Mysql 配置 2. 配置过程
2.1 基础环境准备
修改Linux配置文件
文件路径/etc/hosts在其中加入下列三行配置
每行为对应服务器的 IP 地址和 host name。
不要照抄这个配置需要按照后续介绍查询自己每台机器的配置。 host name
每台服务器/机器/Docker有自己的 host name具体获取方法可能有区别我使用的是机器默认的 host name没有做修改一般是与你终端上显示的名字相同
比如我这台服务器的 host name 为 dellr740 IP 地址
输入以下命令可获取一个列表其中 192.168 为首的 IP 一般是本机在本地局域网的地址。
ip addr show网络连接
需要确保三台机器之间能够通过上述 IP 相互访问可以在每台机器上 ping 其它两台机器试试。
ping 192.168.1.4
...2.2 主节点配置
mysql server 配置文件
主节点参考配置如下以下的配置只是MGR相关的配置mysql 运行的基本配置需要自己设置。
我会对其中关键的参数做解释。
# 不同节点需要调整的配置
server_id1
loose_group_replication_local_address 192.168.1.4:33061# 需要根据服务器地址进行更改的配置
loose-group_replication_ip_whitelist 192.168.1.14, 192.168.1.4, 192.168.1.13
loose_group_replication_group_seeds dellr740:33061, east11713:33061, e117:33061# 可以直接复制的配置无需修改
plugin_load_addgroup_replication.soloose_group_replication_group_nameaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
loose_group_replication_start_on_bootoff
disabled_storage_enginesMyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY
gtid_modeON
enforce_gtid_consistencyON
binlog_checksumNONE
log_binbinlog
log_slave_updatesON
binlog_formatROW
master_info_repositoryTABLE
relay_log_info_repositoryTABLE
transaction_write_set_extractionXXHASH64
loose_group_replication_bootstrap_groupoff
loose_group_replication_recovery_get_public_keyON
下列两项配置在每台机器上不一样
# 三台机器不同就行
server_id1# 本机的 IP 地址30061不需要更改这是 MGR 提供给内部互联的端口
loose_group_replication_local_address 192.168.1.4:33061下列两项配置需要根据自己机器的配置进行调整
# 这一项记录三台机器的 IP
loose-group_replication_ip_whitelist 192.168.1.14, 192.168.1.4, 192.168.1.13# 这一项记录三台机器的 host_name:端口按道理使用ip:端口也是可以的
loose_group_replication_group_seeds dellr740:33061, east11713:33061, e117:33061下面这项配置表明MGR需要使用此插件所以需要自己安装 group_replication.so 插件我是选择的编译安装。
plugin_load_addgroup_replication.soMGR用户初始化
启动主节点的 mysql sever并使用客户端进入 msyql。
输入以下语句创建组复制的用户
SET SQL_LOG_BIN0;CREATE USER rpl_user% IDENTIFIED WITH mysql_native_password BY password;
GRANT REPLICATION SLAVE ON *.* TO rpl_user%;
GRANT BACKUP_ADMIN ON *.* TO rpl_user%;
FLUSH PRIVILEGES;SET SQL_LOG_BIN1;输入以下语句开启组复制
SET GLOBAL group_replication_bootstrap_groupON;
START GROUP_REPLICATION USERrpl_user, PASSWORDpassword;
SET GLOBAL group_replication_bootstrap_groupOFF;SELECT * FROM performance_schema.replication_group_members;若开启成功会显示如下类似数据表 2.3 从节点配置
mysql server 配置文件
配置文件同主节点几乎相同只需要修改其中前两项保证 IP 地址是本机的且 server_id 与另外的机器不同即可。
# 不同节点需要调整的配置
server_id2
loose_group_replication_local_address 192.168.1.13:33061# 需要根据服务器地址进行更改的配置
loose-group_replication_ip_whitelist 192.168.1.14, 192.168.1.4, 192.168.1.13
loose_group_replication_group_seeds dellr740:33061, east11713:33061, e117:33061# 可以直接复制的配置无需修改
plugin_load_addgroup_replication.soloose_group_replication_group_nameaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
loose_group_replication_start_on_bootoff
disabled_storage_enginesMyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY
gtid_modeON
enforce_gtid_consistencyON
binlog_checksumNONE
log_binbinlog
log_slave_updatesON
binlog_formatROW
master_info_repositoryTABLE
relay_log_info_repositoryTABLE
transaction_write_set_extractionXXHASH64
loose_group_replication_bootstrap_groupoff
loose_group_replication_recovery_get_public_keyON
从节点加入集群
启动从节点的 mysql sever并使用客户端进入 msyql。
输入以下语句创建组复制的用户
SET SQL_LOG_BIN0;
CREATE USER rpl_user% IDENTIFIED WITH mysql_native_password BY password;
GRANT REPLICATION SLAVE ON *.* TO rpl_user%;
GRANT BACKUP_ADMIN ON *.* TO rpl_user%;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN1;
CHANGE REPLICATION SOURCE TO SOURCE_USERrpl_user, SOURCE_PASSWORDpassword FOR CHANNEL group_replication_recovery;输入以下语句开启组复制
START GROUP_REPLICATION USERrpl_user, PASSWORDpassword;SELECT * FROM performance_schema.replication_group_members;若开启成功会显示如下类似数据表 3. 问题汇总
错误信息可以在 mysql 客户端看到一些也可以在 mysql server 的终端看到或者是终端输出的错误日志中
MY-001045
从节点的密码设置与主节点不一致如果是复制我上述的语句不会出现这个错误
MY-002005
主机名和 /etc/hosts中名字不一致正确的主机名可以用以下语句产生的图中看到。
SELECT * FROM performance_schema.replication_group_members;ERROR 3098 (HY): The table does notcomply with the requirements by anexternal plugin .
mysql只支持 innodb 作为 MGR 的存储引擎如果需要使用自己的存储引擎需要修改 MGR 插件的源码
plugin/group_replication/src/observer_trans.cc:143
plugin/group_replication/src/asynchronous_channels_state_observer.cc:202
if (param-tables_info[table].db_type ! DB_TYPE_INNODB) {
// 暴力改法不建议但是可行改成
if (false) {Debug 模式 MGR 源码报错
编译安装的时候记得把 MGR 插件也编译成 debug 模式就行了。