搭建mysql的主从服务

发布时间 2023-10-19 09:16:00作者: 一先生94

这里是以mysql5.7版本为例。

准备好三台mysql服务器:192.168.1.115(主),192.168.1.116(从),192.168.1.117(从) 默认端口都是3306

1.部署mysql:

  首要前提:三台机器的server-id 一定得设置成不同数值。 

192.168.1.115:
server-id:1

192.168.1.116:
server-id:2

192.168.1.117:
server-id:3

  修改完server-id以后记得重启一下mysql

当然,还有一些参数可以修改:

[mysqld]
#开启二进制日志
log-bin=mall-mysql-bin
#设置server-id,和从不能一样
server-id=1
# 设置使用的二进制日志格式(row-行级别;statement=语句级别;mixed-混合级别)
binlog-format=mixed
#同步的数据库名称,如果不配置,表示同步所有的库
## binlog-do-db=db1
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
# 二进制日志过期清理时间,默认为0,表示不自动清理
expire_logs_days=7
#忽略主从复制中遇到的所有错误活指定的错误类型,避免slave端复制中断
## 如:1062错误码代表主键重复;1032错误码代表主从数据库数据不一致
slave_skip_errors=1062

  上述中,server-id,log-bin需要设置不一致。

2.创建用户:

  在主库中,创建一个用户用于同步主从数据。并赋予权限

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

3.查看Master状态记住file和position

show master status;

  记住File和Position,后面需要用到。此时一定不要操作Master库,否则将会引起Master状态的变化,File和Position字段也将会进行变化。

4.从节点配置、启动同步

  进入到Slave库myslq客户端,执行如下命令:(注意master-bin.000004的master_log_pos位置要一样)

change master to master_host='192.168.1.115', master_user='slave', master_password='123456', master_port=3306, master_log_file='mall-mysql-bin.000003', master_log_pos=154, master_connect_retry=30;

  上述参数的解析:

命令说明:master_host :Master库的地址,指的是容器的独立ip
master_port:Master的端口号,指的是容器的端口号 master_user:用于数据同步的用户
master_password:用于同步的用户的密码 master_log_file:指定 Slave
从哪个日志文件开始复制数据,即上文中提到的 File 字段的值 master_log_pos:从哪个 Position
开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

4.1.开启主从复制

  首先前提在从库中:

start slave;

4.2.查看状态

show slave status\G

  Slave_IO_Running 和 Slave_SQL_Running是查看主从是否运行的关键字段,默认为YES,表示主从状态正常。