当前位置: 首页 > news >正文

论坛是做网站还是app好互联网推广是做什么的

论坛是做网站还是app好,互联网推广是做什么的,马蹄室内设计网站,visual composer wordpress前言 本篇文章介绍MySQL8.0.27版本的组复制详细搭建过程,教你如何快速搭建一个三节点的单主模式组复制集群。 实际上,MySQL组复制是MySQL的一个插件 group_replication.so,组中的每个成员都需要配置并安装该插件,配置和安装过程…

前言

本篇文章介绍MySQL8.0.27版本的组复制详细搭建过程,教你如何快速搭建一个三节点的单主模式组复制集群。

实际上,MySQL组复制是MySQL的一个插件 group_replication.so,组中的每个成员都需要配置并安装该插件,配置和安装过程见下文。

官方参考文档:group-replication-deploying-in-single-primary-mode.html

1 部署规划

集群包含三个节点,node1作为主库,node2和node3作为从库。主库可以接收可读可写,两个从库只能读取数据。

主机名ip地址成员角色版本号服务器版本
node1192.168.131.10primaryMySQL8.0.27RHEL7.9
node2192.168.131.20secondaryMySQL8.0.27RHEL7.9
node3192.168.131.30secondaryMySQL8.0.27RHEL7.9

2 准备安装环境

准备安装环境的步骤三个节点node1、node2和node3都需要执行。

1)关闭防火墙

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# systemctl disable firewalld
#或者
[root@node1 ~]# iptables -F

2)关闭selinux

[root@node1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@node1 ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

3 配置组复制实例

配置组复制实例的步骤三个节点node1、node2和node3都需要执行。

3.1 解压二进制包并创建软连接

[root@node1 local]# tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[root@node1 local]# ln -s mysql-8.0.27-linux-glibc2.12-x86_64 mysql

3.2 编辑 node1 配置文件

[root@node1 local]# vim /etc/my.cnf

添加如下配置:

[mysqld]
#Server Settingsbasedir=/usr/local/mysql
datadir=/data/mysql/3306/data
user=mysql
port=3306
socket=/data/mysql/3306/data/mysql.sock
log_error=/data/mysql/3306/data/mysqld.err
log_timestamps=system
skip_name_resolve=TRUE
report_host="192.168.131.10"
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
sql_require_primary_key=ON#Replication Frameworkserver_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
super_read_only=ON
binlog_transaction_dependency_tracking=WRITESET#Group Replication Settingsplugin_load_add='group_replication.so'
loose_group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose_group_replication_start_on_boot=off
loose_group_replication_local_address= "192.168.131.10:33061"
loose_group_replication_group_seeds= "192.168.131.10:33061,192.168.131.20:33061,192.168.131.30:33061"
loose_group_replication_bootstrap_group=off
loose_group_replication_recovery_get_public_key=ON#Multi-Source Replication Settingsreplica_parallel_workers=4
replica_parallel_type=LOGICAL_CLOCK
slave_preserve_commit_order=1[client]
socket=/data/mysql/3306/data/mysql.sock

注意, 需要手动将下面三个系统变量修改为自己实际环境中的配置:report_hostloose_group_replication_local_addressloose_group_replication_group_seeds

系统变量loose_group_replication_group_name为集群名称,必须为一个唯一值,可以通过select uuid()生成。

3.3 编辑 node2 配置文件

除了修改下面三个系统变量,其他和node1配置保持一致:

report_host="192.168.131.20"
server_id=2
loose_group_replication_local_address= "192.168.131.20:33061"

3.4 编辑 node3 的配置文件

除了修改下面三个系统变量,其他和node1配置保持一致:

report_host="192.168.131.30"
server_id=3
loose_group_replication_local_address= "192.168.131.30:33061"

3.5 创建数据目录

[root@node1 local]# mkdir -p /data/mysql/3306/data

3.6 添加环境变量

[root@node1 ~]# vim /etc/profile
#添加
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin[root@node1 ~]# source /etc/profile

3.7 添加mysql用户和组

[root@node1 ~]# cd /usr/local/
[root@node1 local]# groupadd mysql
[root@node1 local]# useradd -g mysql mysql
[root@node1 local]# passwd mysql

3.8 初始化实例

[root@node1 local]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure

使用 --initialize-insecure 初始化选项时,新安装的mysql实例 root 用户登录不需要密码,输入mysql后直接回车可以登录到mysql客户端中。但是要注意,在生产环境中注意要及时修改密码,或者使用 --initialize 选项进行初始化,临时密码保存在错误日志中。

3.9 配置systemd系统管理mysql service

1)创建systemd服务配置文件

[root@node1 ~]# vim /usr/lib/systemd/system/mysqld.service

添加:

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network-online.target
After=syslog.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysqlType=notify# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE = 65536Restart=on-failureRestartPreventExitStatus=1# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1PrivateTmp=false

2)配置生效

[root@node1 ~]# systemctl daemon-reload
[root@node1 bin]# systemctl start mysqld

4 启动组复制

主要在node1上执行。

4.1 查看插件是否加载成功

3个节点都确认一下组复制插件 group_replication.so 是否安装成功:

mysql> select * from information_schema.plugins where plugin_name = 'group_replication'\G
*************************** 1. row ***************************PLUGIN_NAME: group_replicationPLUGIN_VERSION: 1.1PLUGIN_STATUS: ACTIVEPLUGIN_TYPE: GROUP REPLICATIONPLUGIN_TYPE_VERSION: 1.4PLUGIN_LIBRARY: group_replication.so
PLUGIN_LIBRARY_VERSION: 1.10PLUGIN_AUTHOR: Oracle CorporationPLUGIN_DESCRIPTION: Group Replication (1.1.0)PLUGIN_LICENSE: GPLLOAD_OPTION: ON
1 row in set (0.00 sec)

4.2 在node1上执行初始化组复制

首次启动一个组复制的过程称为引导(bootstrapping),使用 group_replication_bootstrap_group 系统变量来引导一个组复制。

需要注意的是,引导应该只由其中一个节点完成,且仅执行一次。

这就是为什么此变量没直接写死在配置文件中的原因。如果它保存在配置文件中,那么MySQl Service在重新启动时,服务器将自动引导具有相同名称的第二个组复制。这将导致两个具有相同名称的不同组。

因此,为了安全地引导组复制,需要在启动组复制后再次关闭此系统变量:

mysql> set global group_replication_bootstrap_group=on;
mysql> start group_replication;
mysql> set global group_replication_bootstrap_group=off;

组启动成功后,通过视图 performance_schema.replication_group_members,查看组复制成员信息。此时可以看到组已经创建,并且有一个成员:

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | f40395ea-c132-11ee-9249-000c29c00092 | 192.168.131.10 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+

4.3 在引导成员node1上创建复制用户并赋权

创建的用户主要用于下一步配置恢复通道。

mysql>
create user rpl_user@'%' identified by 'rpl_123';
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,执行后会写入从节点的binlog,造成与组复制的事务不一致,导致添加节点失败,报错信息如下:

2024-02-03T00:33:18.335943+08:00 0 [ERROR] [MY-011526] [Repl] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 13fc049e-c133-11ee-a377-000c29df1f85:1 > Group transactions: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-10'
2024-02-03T00:33:18.336062+08:00 0 [ERROR] [MY-011522] [Repl] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'

解决办法有两个:

  1. 最保险的办法是重建这个从库;
  2. 也可以在主库上插入空会话,直到组复制事务大于从库的事务,最后再重新添加节点。
SET GTID_NEXT='13fc049e-c133-11ee-a377-000c29df1f85:1';
BEGIN; COMMIT;
SET GTID_NEXT=AUTOMATIC;

4.4 配置node1的恢复通道

在MySQL组复制中,恢复通道(recovery channel)主要用于处理从库的启动和数据同步过程。通过为恢复通道配置用户凭证,可以确保从库能够正确地连接到主库并获取复制所需的数据。

mysql> change master to master_user='rpl_user', master_password='rpl_123' for channel 'group_replication_recovery';

创建测试数据:

mysql> 
create database mgrtest;
create table mgrtest.demo(id int primary key,c1 varchar(10));
insert into mgrtest.demo values(1,'a'),(2,'b');

5 添加节点node2和node3

在 node2 和 node3 上执行

1)配置恢复通道

mysql> change master to master_user='rpl_user', master_password='rpl_123' for channel 'group_replication_recovery';

2)启动组复制

mysql> start group_replication;

3)查看集群节点信息

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 13fc049e-c133-11ee-a377-000c29df1f85 | 192.168.131.20 |        3306 | ONLINE       | SECONDARY   | 8.0.27         | XCom                       |
| group_replication_applier | 248563ac-c133-11ee-a387-000c29551477 | 192.168.131.30 |        3306 | ONLINE       | SECONDARY   | 8.0.27         | XCom                       |
| group_replication_applier | f40395ea-c132-11ee-9249-000c29c00092 | 192.168.131.10 |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+

4)验证测试数据

mysql> select * from mgrtest.demo;
+----+------+
| id | c1   |
+----+------+
|  1 | a    |
|  2 | b    |
+----+------+

【关联文章】

1)MySQL组复制的介绍
2)MySQL单主模式部署组复制
3)MySQL组复制的管理

http://www.yidumall.com/news/30999.html

相关文章:

  • 东莞网站建设免费服务器精准营销策略都有哪些
  • 建设外国商城网站企业网站设计优化公司
  • java web开发网站开发今日头条极速版最新
  • ps怎么做电商网站网站交换链接友情链接的作用
  • 动漫制作专业专升本去哪个专业新手怎么入行seo
  • 昆明双鼎网站制作免费外链工具
  • 广州外贸网站咨询重庆百度推广电话
  • 做网站要学些什么软件品牌营销成功案例
  • 从事网站建设的职业厦门专业做优化的公司
  • 吕梁做网站公司外贸营销型网站设计
  • ui界面设计思路网络公司优化关键词
  • 自己做的网站 网站备案流程免费下载百度seo
  • 扬州网站建设制作网页怎么制作
  • 做网站备完备案需要干什么网红营销
  • 网站后台的文章怎么做微信营销工具
  • 网站开发企业培训心得总结百家港 seo服务
  • 微网站开发一般费用多少钱建站abc
  • 我国政府网站建设的现状2345网址导航桌面版
  • WordPress去掉文章摘要小程序seo推广技巧
  • 十大黄金软件app搜索引擎优化的策略主要有
  • 济南seo网站建站小红书关键词检测
  • 四省网站建设广州网站优化方案
  • 企业管理系统官网企业网站优化服务公司
  • 网站建设管理意见seo建站网络公司
  • 建设网站建设费用优化关键词的作用
  • 泰安房产交易网seo引擎搜索网址
  • 网站开发环境配置难营销型网站建设
  • b2c典型网站seo实战培训王乃用
  • 海外商城网站建设seo培训机构
  • 网站系统优化站长统计推荐