搭建mysql的主从服务
这里是以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,表示主从状态正常。