MySQL8.0 主从部署(一主两从)
准备部署环境
服务器名称 | 操作系统版本 | 管理IP | 数据库版本 |
---|---|---|---|
mysql-001(主) | centos 7.9 | 192.168.2.21 | MySQL 8.0.30 |
mysql-002(从) | centos 7.9 | 192.168.2.2 | MySQL 8.0.30 |
mysql-003(从) | centos 7.9 | 192.168.2.7 | MySQL 8.0.30 |
安装MySQL8.0
部署手册参考《MySQL 8.0 安装指导》:MySQL 8.0 安装指导
主节点添加主从同步账户
用户创建和授权,相关命令如下:
mysql> CREATE USER 'replicate_user'@'%' IDENTIFIED BY '*********'; #创建用户,实际密码替换*
mysql> alter user 'replicate_user'@'%' identified with mysql_native_password by '*********'; #修改密码
mysql> grant all privileges on *.* to 'replicate_user'@'%' with grant option; #修改权限
mysql> flush privileges; #刷新权限
配置二进制日志binlog以及添加server-id
1、主从所有节点
[root@server1 /]$ systemctl stop mysqld
[root@server1 /]$ vim /etc/my.cnf
2、主节点/etc/my.cnf配置内容
log-bin=mysql-bin
server-id=xxx
3、从节点/etc/my.cnf配置内容
server-id=xxx
只有主节点需要配置log-bin;主从节点配置的server-id必须配置且数值不同;
主节点配置如下;
从节点配置如下:
重置主节点MySQL偏移量
mysql> reset master; #重置偏移量,如果不重置,从节点也会创建replicate_user同步用户
mysql> show master status; #查看master信息
获取信息如下,从节点配置会用到:
bin-log文件:mysql-bin.000001
Position:157
注册从节点
登陆从节点数据库配置
mysql> stop slave;
mysql> reset slave;
mysql> change master to master_host='192.168.2.21',master_user='replicate_user',master_port=3306,master_password='********',master_log_file='mysql-bin.000001',master_log_pos=157;
参数解释:
master_host : 主节点IP
master_user : 主从同步账户
master_port : 主节点mysql服务的端口号
master_password : 主从同步账户的密码
master_log_file : master节点获取的二进制文件名字
master_log_pos : master节点获取的Position值
启动从节点slave
1、从节点启动
mysql> start slave;
mysql> show slave status \G
从节点结果如下:
这两项参数 为 YES说明搭建成功了:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2、修改从节点为只读;
默认数据库实例是可读写,为保持数据一致性,建议从库配置为只读。
mysql> set global read_only=1; #read_only=1,普通用户只读,超级用户可读写
或者
mysql> set global super_read_only=1; #super_read_only=1,超级用户只读
mysql> show global variables like '%read_only%'; #查询只读状态
配置结果如下:
主从同步测试
1、主节点创建test_mysql库,从节点查看是否同步;
主节点:
2、从节点查询:
通过主从数据库查询结果可知,主从同步配置正常。