首页 > 数据库 >mysql部署MGB

mysql部署MGB

时间:2024-04-13 23:12:59浏览次数:22  
标签:MGB group 部署 loose replication 24901 mysql --

基础环境

node0:192.168.110.50  -->master节点

node1:192.168.110.60

node2:192.168.110.70

MySQL版本->MySQL 8.0.36

在每台电脑上配置host名

cat > /etc/hosts <<-'EOF' 
192.168.31.230 n0
192.168.31.231 n1
192.168.31.232 n2
EOF

修改对应主机的主机名

hostnamectl set-hostname n0   # node0
hostnamectl set-hostname n1  # node1
hostnamectl set-hostname n2  # node2

临时关闭selinux防火墙->每台

临时关闭selinux防火墙,开启后端口将无法访问,开发环境可以这样用

setenforce 0

放行端口->每台

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=24901/tcp --permanent
firewall-cmd --reload

安装MySQL官方 Yum 安装源->每台

cd /home/
wget --no-check-certificate https://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm
yum localinstall -y mysql80-community-release-el7-5.noarch.rpm

安装MySQL->每台

yum install -y mysql-community-server   
# 如果出现密钥相关的错误,需要加上--nogpgcheck
yum install -y mysql-community-server --nogpgcheck

调整配置文件

mysql配置文件地址 

vi /etc/my.conf

master 配置文件

#使用mysql_native_password密码策略,防止navicat连不上mysql8 
default_authentication_plugin=mysql_native_password
#设置MySQL插件所在目录,因为MGR基于插件,所以必须设置插件路径
plugin_dir=/usr/lib64/mysql/plugin
#服务器编号,Master=1
server_id=1
#开启binlog的GTID模式
gtid_mode=ON
#开启后MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行
enforce_gtid_consistency=ON
#关闭binlog校验
binlog_checksum=NONE
#定义用于事务期间哈希写入提取的算法,组复制模式下必须设置为 XXHASH64。
transaction_write_set_extraction=XXHASH64
#确定组复制恢复时是否应该应用 SSL,通常设置为“开”,但默认设置为“关”。
loose-group_replication_recovery_use_ssl=ON
#该服务器的实例所在复制组的名称,必须是有效的 UUID,所有节点必须相同。
loose-group_replication_group_name="bbbbbbbb-bbbb-cccc-dddd-eeeeeeeeeeee"
#确定服务器是否应该在服务器启动期间启动组复制。
loose-group_replication_start_on_boot=OFF
#大坑2:
#为复制组中其他的成员提供的网络地址,指定为“主机:端口”的格式化字符串。
#很多人想当然认为端口应该是3306,起始不然,MGR需要开启新端口24901同步交换
#所以这里不要写错,同时,前面我们配置了hosts文件做了主机名与IP的映射,这里直接写主机名即可
loose-group_replication_local_address="n0:24901"
#用于建立新成员到组的连接组成员列表。 #这个列表指定为由分隔号间隔的组成员网络地址列表,类似 host1:port1、host2:port2 的格式。
#同样采用n0~n2的主机名替代
loose-group_replication_group_seeds="n0:24901,n1:24901,n2:24901"
#配置此服务器为引导组,这个选项必须仅在一台服务器上设置,
#并且仅当第一次启动组或者重新启动整个组时。成功引导组启动后,将此选项设置为关闭。
loose-group_replication_bootstrap_group=OFF

slave1 配置文件

default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin
#设置唯一的服务器编号
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
#这个参数决定primary节点到secondary节点的请求是否为基于 RSA 密钥对的密码交换所需的公钥
loose-group_replication_recovery_get_public_key=ON
loose-group_replication_recovery_use_ssl=ON
loose-group_replication_group_name="bbbbbbbb-bbbb-cccc-dddd-eeeeeeeeeeee"
loose-group_replication_start_on_boot=OFF
#设置本机地址n1:24901
loose-group_replication_local_address="n1:24901"
loose-group_replication_group_seeds="n0:24901,n1:24901,n2:24901"
loose-group_replication_bootstrap_group=OFF

slave2 配置文件

default_authentication_plugin=mysql_native_password
plugin_dir=/usr/lib64/mysql/plugin
#设置唯一的服务器编号
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
#这个参数决定primary节点到secondary节点的请求是否为基于 RSA 密钥对的密码交换所需的公钥
loose-group_replication_recovery_get_public_key=ON
loose-group_replication_recovery_use_ssl=ON
loose-group_replication_group_name="bbbbbbbb-bbbb-cccc-dddd-eeeeeeeeeeee"
loose-group_replication_start_on_boot=OFF
#设置本机地址n2:24901
loose-group_replication_local_address="n2:24901"
loose-group_replication_group_seeds="n0:24901,n1:24901,n2:24901"
loose-group_replication_bootstrap_group=OFF

启动mysql服务器->每台

systemctl start mysqld

初始化mysql数据库->每台

获取mysql数据库初始密码

grep 'temporary password' /var/log/mysqld.log
运行结果:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: =vjvyerPc5o=

连接mysql

mysql -uroot -p'=vjvyerPc5o='

修改初始化密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'asAS123456!';

设置主从账户

#创建rpl_user账户,此账户用于实现主从数据同步
CREATE USER rpl_user@'%' IDENTIFIED BY 'asAS123456!';
#赋予主从同步权限
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

创建远程连接用户,用于navcate登录

create user 'remote'@'%' identified with mysql_native_password by 'asAS123456!';

赋予新建的远程用户所有数据库资源的访问权限

grant all privileges on *.* to remote@'%';

生效配置

FLUSH PRIVILEGES;

删除已产生的Binlog

#一定要RESET MASTER,它会删除刚才已产生的Binlog
#因为刚才Binglog包含创建用户这种高权限操作,用于主从同步的rpl_user账户是没有权限执行的
#这就会导致RelayLog重放无法正确执行,导致从属服务器卡死在"RECEVERING"状态
#利用RESET MASTER删除这些无法执行的binlog,就没问题了
RESET MASTER;

安装MGR插件->每台

# 需要在mysql环境里执行
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

master节点配置MGR

# 临时开启group_replication_bootstrap_group的权限
SET GLOBAL group_replication_bootstrap_group=ON;
# 开启GROUP_REPLICATION; START GROUP_REPLICATION;
# 关闭开启的group_replication_bootstrap_group的权限 SET GLOBAL group_replication_bootstrap_group=OFF;

slave节点配置

#指定主从账户与指定通信频道
CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="asAS123456!" FOR CHANNEL 'group_replication_recovery';
#开启组网数据同步
START GROUP_REPLICATION;

查看主从配置详情

SELECT * FROM performance_schema.replication_group_members;

注意:

当master宕机后,重启会变成salve,这个时候会出现节点状态为重连,需要在原master节点上配置如下信息

#指定主从账户与指定通信频道
CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="asAS123456!" FOR CHANNEL
'group_replication_recovery';
#开启组网数据同步
START GROUP_REPLICATION;

 

标签:MGB,group,部署,loose,replication,24901,mysql,--
From: https://www.cnblogs.com/caixiaozi/p/18132433

相关文章

  • MYSQL 主从同步失败:Slave_SQL_Running: No
    SHOWSLAVESTATUS\G;显示Slave_SQL_Running:No 解决方法:从主服务器查询:  SHOWMASTERSTATUS在从服务器上:changemastertomaster_host='169.254.60.151', #主库的IP地址master_user='slave', #在主库上创建的复制账号master_password='???????',......
  • Docker mysql 配置文件读取失败 [Warning] World-writable config file '/etc/mysql/c
    这个警告表明MySQL正在忽略/etc/mysql/conf.d/my.cnf这个配置文件,因为它被设置为了全世界可写。这个警告是基于安全性的考虑。当配置文件被设置为全世界可写时,任何人都可以修改它,这可能会导致安全风险,因为恶意用户可以更改MySQL的配置,从而影响数据库的行为和安全性。为了......
  • MySQL 8 显示错误代码2058
    在使用mysql-uroot-P3307-proot和SQLyong连接MySQL时报错1.在MySQL8.3CommandLineClient登录点击查看代码Enterpassword:****WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis14Serverversion:8.3.0MySQLCommunitySer......
  • MySQL-09-mysql 存储过程入门介绍
    拓展阅读MySQL00ViewMySQL01Rulermysql日常开发规范MySQL02truncatetable与delete清空表的区别和坑MySQL03Expression1ofORDERBYclauseisnotinSELECTlist,referencescolumnMySQL04EMOJI表情与UTF8MB4的故事MySQL05MySQL入门教程(MySQLtutor......
  • 如何找到相应程序的bin目录?(以MySQL为例)
    用win+R打开[运行]接着输入services.msc打开[服务] 在[名称]当中找到相应的程序,双击进入,如MySQL 就可以找到相应程序的bin目录啦......
  • FastAPI-MySQL-Cookie代码实现
    连接数据库fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ormimportsessionmakerfromurllib.parseimportquote_pluspassword='123456'encoded_password=quote_plus(password)SQLALCHEM......
  • 16、数据库加固-mysql 加固
    1.修改DBA登录密码shell下执行:mysqladmin-urootpassword非首次修改:mysqladmin-urootpassword-p原密码在mysql下执行:updateusersetpassword=password('密码')whereuser='root';flushprivileges;2.删除默认数据库和用户删除测试库showdatabases......
  • MySQL安装教程
    MySQL安装1.安装1).双击官方下来的安装包文件2).根据安装提示进行安装安装MySQL的相关组件,这个过程可能需要耗时几分钟,耐心等待。输入MySQL中root用户的密码,一定记得记住该密码2.配置安装好MySQL之后,还需要配置环境变量,这样才可以在任何目录下连接MySQL。......
  • 安装 MySQL 5.7
    安装MySQL5.7‍CentOS查看系统中是否自带安装MySQL[root@localhost~]#yumlistinstalled|grepmysql[root@localhost~]#[root@node01~]#yumlistinstalled|grepmysqlmysql-libs.x86_645.1.71-1.el6@anaconda-CentOS-201311272149.x86_64/6.5[r......
  • 允许任意地址访问 MySQL 数据库 adonis 的新用户
    问题ayear@DESKTOP-GPCA3B0:~/AdonisJS$nodeace.jsmigration:run[error]Host'DESKTOP-GPCA3B0'isnotallowedtoconnecttothisMySQLserveratPacket.asError(/home/ayear/AdonisJS/node_modules/.pnpm/[email protected]/node_modules/mysql2/......