centos9下mysql8.0双主双从集群部署
#创作灵感#
整理一下近年完成的项目,以虚拟环境为基础,更加简洁明了的梳理成技术手册,无论玫瑰,还是余香都是旅途的风景。
1、环境准备
centos9虚拟机最小化安装2CPU 2G内存 20G空间 host文件配置如下
防火墙可以使用firewall-cmd放行,演示环境中已提前关闭。
| master1 | 192.168.189.137 |
| master2 | 192.168.189.138 |
| slave1 | 192.168.189.139 |
| slave2 | 192.168.189.140 |
mysql8.0安装步骤:
注意此处不可使用安装完后克隆主机,mysql内部有固定id,克隆可能造成后续无法正常部署主从集群!!!可使用ansible或shell的群发功能简化步骤。
1、安装mysql镜像源
安装地址:https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
2、安装该镜像源
使用yum安装即可
3、安装mysql
yum install -y mysql-community-server
4、启动mysqld进程并修改密码
systemctl start mysqld
grep password /var/log/mysqld.log
#复制刚得到的初始密码,执行下方命令修改mysql.root用户密码为Liumuquan@123
mysqladmin -uroot -p'初始密码' password 'Liumuquan@123'
2、my.cnf文件配置
master1配置
使用vim配置my.cnf文件在文件末尾添加需要设定的参数
log-bin=/var/lib/mysql/binlog
#启动二进制日志并声明所在位置
server-id=1
#在这个集群中该mysql服务器编号为1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#声明忽略主从运行时复制的库,此处忽略了两个mysql默认库
binlog-do-db=mydb2
#声明开启主从复制的库为mydb2
binlog_format=statement
#设置二进制日志格式(记录方式)为statement,此格式为以sql语句为准记录数据库操作
expire_logs_days=7
#日志有效期设置,自动清除7天前的日志
slave_skip_errors=1062
#主从复制中跳过错位代码是1062的错误,这是一条关于从索引冲突的错误,此选项慎用可能会产生完整性影响
log-slave-updates
#作为从服务器时,有写入操作也更新二进制文件(这个设置方便我们进行双主互为主从设置)
auto-increment-increment=2
#二进制日志记录时,记录编号AT XX中XX部分增长幅度为2,结合下一条设置可以避免AT编号重复
auto-increment-offset=1
#二进制日志记录时,从AT 1 开始记录,本机记录为1、3、5、7...以单数作为编号
重启master1的mysql
master2配置
使用vim配置my.cnf文件在文件末尾添加需要设定的参数
master1与master2配置的不同地方在:server-id 和 auto-increment-offset
log-bin=/var/lib/mysql/binlog
server-id=3
#在这个集群中该mysql服务器编号为3
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-do-db=mydb2
binlog_format=statement
expire_logs_days=7
slave_skip_errors=1062
log-slave-updates
auto-increment-increment=2
auto-increment-offset=2
#二进制日志记录时,从AT 2开始记录,本机记录为2、4、6、8...以单数作为编号
重启master2的mysql
slave1配置
使用vim配置my.cnf文件在文件末尾添加需要设定的参数
server-id=2
#在这个集群中该mysql服务器编号为2
relay-log=mysql-relay
#启动中继日志,从库会读取主库发送过来的二进制日志,并将其写入中继日志文件中,中继日志前缀为mysql-relay
重启slave1的mysql
slave2配置
与slave1只有server-id不同
server-id=4
relay-log=mysql-relay
重启slave2的mysql
注:作为从服务器加入集群应该默认开启中继日志,但稳妥起见此处还是需要声明
3、创建同步账号并授权
在master1与master2上操作
创建主主同步账号repl_user
主从同步账号slave_sync_user
create user 'repl_user'@'%' identified with mysql_native_password by 'Liumuquan@123';
create user 'slave_sync_user'@'%' identified with mysql_native_password by 'Liumuquan@123';
#创建两个用户并指定验证密码方式为mysql_native_password
grant replication slave on *.* to 'repl_user'@'%';
grant replication slave on *.* to 'slave_sync_user'@'%';
#赋予从库复制权限,其中%为通配符,表示任何ip,mysql5.7可以直接使用grant创建同时进行赋权
4、配置主从同步
master1(主)------slave1(从)
登录master1的mysql查看查看并记录二进制位置与偏移量,后续会用到。

登录slave1的mysql进行主从配置
mysql> change master to master_host='192.168.189.137',
-> master_user='slave_sync_user',
-> master_password='Liumuquan@123',
-> master_log_file='binlog.000002',
-> master_log_pos=1215;
Query OK, 0 rows affected, 8 warnings (0.02 sec)
#后两个参数为刚在master1上记录下的
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
使用命令检查主从关系是否配置正常

master2(主)------slave2(从)
登录master2的mysql查看查看并记录二进制位置与偏移量

登录slave2的mysql进行主从配置
mysql> change master to master_host='192.168.189.138',
-> master_user='slave_sync_user',
-> master_password='Liumuquan@123',
-> master_log_file='binlog.000004',
-> master_log_pos=1215;
Query OK, 0 rows affected, 8 warnings (0.11 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
使用命令检查主从关系是否配置正常(图略)
master1(主)------master2(从)
登录master1的mysql查看查看并记录二进制位置与偏移量

登录master2的mysql进行主从配置
mysql> CHANGE MASTER TO MASTER_HOST='192.168.189.137',
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='Liumuquan@123',
-> MASTER_LOG_FILE='binlog.000002',
-> MASTER_LOG_POS=1215;
Query OK, 0 rows affected, 8 warnings (0.08 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
使用命令检查主从关系是否配置正常(图略)
master2(主)------master1(从)
登录master2的mysql查看查看并记录二进制位置与偏移量

登录master1的mysql进行主从配置
mysql> CHANGE MASTER TO MASTER_HOST='192.168.189.137',
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='Liumuquan@123',
-> MASTER_LOG_FILE='binlog.000004',
-> MASTER_LOG_POS=1215;
Query OK, 0 rows affected, 8 warnings (0.15 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
使用命令检查主从关系是否配置正常(图略)
至此主从集群已经配置完成。
5、测试集群同步
在master1的mysql下创建名为mydb2的库,在mydb2中,创建表,插入数据。
观察master2,slave1,slave2是否同步数据。
更多推荐


所有评论(0)