0%

mysql主从搭建

使用mysql 8版本,搭建一主一从

  • 主节点:192.168.226.130,mysql端口:3306
  • 从节点:192.168.226.137,mysql端口:3306
  • 主节点mysql同步用户:repl,密码:repl.123

主节点配置

主节点配置文件:

1
2
3
4
5
6
# 在mysqld部分下添加

# binlog文件名
log-bin=binlog
# master节点id
server-id=1000
1
2
# 重启主节点
systemctl restart mysql

root用户操作主节点,添加repl用户

1
2
3
CREATE USER 'repl'@'192.168.226.%' IDENTIFIED BY 'repl.123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.226.%';
flush privileges;

添加用户repl,限制可从192.168.226.0/24网段访问,从节点在此网段内

1
2
reset master;
show master status;

因为是首次初始化master,执行了reset master,将binlog清空,在此命令之前的操作不会同步;已建立主从关系的master节点不可执行,否则主从同步出错

从节点配置

从节点配置文件:

1
2
3
4
5
6
7
# 在mysqld部分下添加

# 从节点id
server-id=1001
# 从节点开启只读
read_only=1
super_read_only=1
1
2
# 重启从节点
systemctl restart mysql

root用户操作从节点,设置从192.168.226.130主节点同步:

1
2
3
4
5
6
7
stop slave;
reset slave;
# mysql 8, 需要指定GET_MASTER_PUBLIC_KEY=1加密传输
# binlog.000001157来自主节点`show master status`执行结果
CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.226.130',SOURCE_PORT=3306,SOURCE_USER='repl',SOURCE_PASSWORD='repl.123',SOURCE_LOG_FILE='binlog.000001',SOURCE_LOG_POS=157,GET_MASTER_PUBLIC_KEY=1;
start slave;
show slave status;