当前位置:网站首页>Lamp架构——mysql集群及组复制(3)
Lamp架构——mysql集群及组复制(3)
2022-07-21 05:20:00 【多于少的区别】
一、实验环境设置
msql组复制,实施简单,但要求较高,同步采用的是分布式文件系统协议,比半同步更严谨更慢,是一种全同步方案,mysql分布式集群(京东在用),当前最多支持九个节点。
组复制要求较高,而且与之前架构配置不同,所以设置一个干净的实验环境。
关闭所有节点mysql进程单主模式适合大于写的场景,因为只有master可以写。
多主模式的每个节点不但可读可写,也都可以同步。
1.节点1server5组复制配置
清空节点server5的数据库目录
修改配置文件并初始化33061是组复制监听端口
组复制校验特别严谨,要求必须是一致的,slave端有多余的日志时,也会报错。
初始化数据库,启动数据库,并修改密码
[[email protected] mysql]# mysqld --initialize --user=mysql
[[email protected] mysql]# /etc/init.d/mysqld start
[[email protected] mysql]# mysql -p
使用命令行修改数据库登陆密码
mysql> alter user [email protected] identified by 'westos';
禁止记录二进制日志,创建组复制用户,并赋予权限,再开启二进制日志记录,设置组复制
mysql> SET SQL_LOG_BIN=0;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER [email protected]'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO [email protected]'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SET SQL_LOG_BIN=1;
Query OK, 0 rows affected (0.00 sec)
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
Query OK, 0 rows affected, 2 warnings (0.04 sec)
mysql> show plugins;
第一条指令只在第一个启动节点上运行
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
查看组以及组成员
mysql> SELECT * FROM performance_schema.replication_group_members;
2.节点2server6配置
清空数据库目录
[[email protected] mysql]# pwd
/data/mysql
[[email protected] mysql]# rm -fr *
编辑配置文件/etc/my.cnf
[[email protected] mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=2
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.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "172.25.254.16:33061"
group_replication_group_seeds= "172.25.254.15:33061,172.25.254.16:33061,172.25.254.17:33061"
group_replication_bootstrap_group=off
group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8"
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
初始化数据库,并启动数据库,修改管理员密码关闭记录二进制日志,创建用户并赋予复制权限,创建完成后,正常开启二进制日志的记录
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER [email protected]'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO [email protected]'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;
配置组复制,查看安装插件
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
mysql> show plugins;
启动组复制
因为server5已经是该组复制的引导节点,所以不需要再执行引导再指令,直接启动组复制即可自动加进去。
查找启动失败原因,查看日志修改配置文件
[[email protected] mysql]# vim /etc/my.cnf
group_replication_allow_local_disjoint_gtids_join=1
参数为1或ON都是开启的意思
在配置文件修改参数是需要重启生效的,也可用set_global命令热生效
启动组复制
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
节点一:server5查看组成员
3.节点3server7配置
清空数据目录
修改配置文件/etc/my.cnf
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
server_id=3
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.so'
transaction_write_set_extraction=XXHASH64
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address= "172.25.254.17:33061"
group_replication_group_seeds= "172.25.254.15:33061,172.25.254.16:33061,172.25.254.17:33061"
group_replication_bootstrap_group=off
group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8"
group_replication_single_primary_mode=OFF
group_replication_enforce_update_everywhere_checks=ON
group_replication_allow_local_disjoint_gtids_join=1
~
初始化并修改管理员密码关闭二进制日志记录,创建组复制用户并赋予权限
配置组复制,并启动
节点1(server5)查看组复制成员
三个节点的状态一定是online的,如果不是就是报错。现在三个节点都是主,也就是多主模式,当前组允许down一个节点。
二、测试
激活组复制后,对数据库是有要求的,innodb引擎创建表结构需要主键。节点1插入表数据
mysql> CREATE DATABASE test;
mysql> use test;
mysql> desc t1;
mysql> INSERT INTO t1 VALUES (1, 'Luis');
查看节点2和节点3
在节点二,往t1表插入数据,保证主键的值唯一
查看另外两个节点数据是否同步在节点三上,往t1表插入数据,保证主键的值唯一
查看另外两个节点的数据是否同步
以上设置的mysql组复制其实就是mysql的分布式集群
数据库在企业的地位很高,企业的数据库就是企业的灵魂,现在数据不仅在mysql数据库,还有newsql,比如tidb就是一种。分布式数据库才能真正解决瓶颈,自带高可用、负载均衡。分布式主要问题就是解决单体的限制,分而治之,打破了单体的性能瓶颈,无论是硬件还是软件,单机都是有性能上限的,分布式可以通过水平扩容节点达到整体性能的提升。传统mysql主从还是有用的,包括组复制还是基于mysql主从,还是基于二进制日志,只不过校验逻辑边的更复杂。
边栏推荐
- .jar系统服务维护常用命令
- 2021-06-22
- Motion recovery structure (3D reconstruction task3-1)
- loadrunner清除浏览器缓存
- How to write the use case of APP login function?
- File download, how to write the use case?
- How to do smoke test
- LVM disk multi partition expansion (fdisk, vgdata, lvdata, DF, resize2fs, lvextend, partprobe)
- Possible solutions to the black screen before the pop-up language selection interface when using xencenter to create a virtual machine
- Class inheritance experiment report
猜你喜欢
JMeter之上传文件和下载文件
LVM disk multi partition expansion (fdisk, vgdata, lvdata, DF, resize2fs, lvextend, partprobe)
Pycharm 2019使用设置,让你用起来更便捷!
Install and upgrade sysstat to version 11.5.5
根据进程名一键批量结束进程(chromedriver.exe)
Variable usage method of BeanShell of JMeter
Is it feasible to enter software testing at the age of 28?
Datagrip 2021 uses settings that make it smoother to use
[first acquaintance with JMeter and thread group]
Centos7配置MySQL多实例
随机推荐
loadrunner清除浏览器缓存
JMeter之WebService(soap)请求
win7系统忘记登录密码怎么办?(不用启动盘情况下)
The solution of "the client page cannot be loaded" after running CS project with idea
LAMP架构——mysql路由器(读写分离器)
基础的md5加密
JMeter之响应断言
软件测试面试题与答案【一】
“cannot get hvm parameter CONSOLE_EVTCHN (18): -22!”的解决方法
Calculation of Jacobian matrix (3D reconstruction task2-4)
搭建服务器内网yum仓库
场景法练习
Solve the essential matrix from the basic matrix to obtain the parameters of the camera (3D reconstruction task1-5)
【Jmeter配置元件之csv数据文件配置】
sysstat安装并升级到11.5.5版本
用例练习1
Chessboard coverage problem
How to do app installation test?
Day01 software testing foundation summary
Twincat3 uses FIFO to collect the position information of three axes, generate XML files, and solve common error reports