Mysql8.0一主二从搭建过程

1、三台服务器为相同版本cent7.9,相同版本的Mysql8.0。IP分别为10.0.0.140(master)10.0.0.141(slave)、10.0.0.142(slave)。

2、三台服务器均关闭Selinux和firewall。

临时关闭selinux

setenforce 0

永久关闭

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

关闭防火墙

systemctl stop firewalld
永久关闭

systemctl disable firewalld

3、主节点创建同步账号

create user 'repl'@'%' identified BY '12345678Dd.';                
alter user 'repl'@'%' identified with mysql_native_password by '12345678Dd.'; 
grant all privileges on *.* to 'replicate_user'@'%' with grant option;    
flush privileges;

这里创建的名为repl同步账号,并且支持mysql_native_password的验证方式

4、10.0.0.140(master)
停止mysqld

systemctl stop mysqld

编辑/etc/my.cn文件,添加

log-bin=mysql-bin(仅仅只是在master节点添加,从节点不添加)
server-id=100(这个值可以自己定义)

10.0.0.141

停止mysqld

编辑/etc/my.cn文件,添加

server-id=200(这个值跟master和别的slave不相同)

10.0.0.142

编辑/etc/my.cn文件,添加

server-id=300(这个值跟master和别的slave不相同)

三台服务器启动mysqld

5、master节点

use mysql

reset master; #重置偏移量,如果不重置,从节点也会创建replicate_user同步用户

mysql> show master status; #查看master信息

获取信息如下,从节点配置会用到:

bin-log文件:mysql-bin.000001

Position:157

6、从节点配置

use mysql

stop slave;

reset slave;

change master to master_host='10.0.0.140',master_user='repl',master_port=3306,master_password='Aa11111111@',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

start slave;

show slave status \G

如果看到

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

说明复制成功,但是我的Slave_IO_Running显示 connect,不是Yes,查看日志发现

Fatal error: The replica I/O thread stops because source and replica have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

原因为:我使用Vm部署的系统,并且采用了克隆的形式得到另外两台服务器,所有三台服务器的mysql UUID一致了。

解决:编辑auto.cnf文件,vi /home/mysql/auto.cnf(根据实际的配置),将UUID修改成别的,之后重启mysql,重新查看show slave status \G 发现

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

7、修改从节点为只读;

默认数据库实例是可读写,为保持数据一致性,建议从库配置为只读。

set global super_read_only=1; #super_read_only=1,超级用户只读

show global variables like '%read_only%'; #查询只读状态

8、测试

主库新建数据库,从库可以看到,从库新建表,报错1290 - The MySQL server is running with the --super-read-only option so it cannot execute this statement。说明主从复制成功,且从库只有读的权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值