1 环境介绍
Centos 7,MySQL 5.7
master: 192.168.10.154
slave: 192.168.10.24
2 配置
2.1 master机器配置
(1)修改mysql的配置文件my.cnf,添加下面binlog的复制配置
[mysqld]
#============binlog复制配置=====================================
# 二进制日志命名
log-bin=mysql-bin
# 二进制日志的格式,有三种:statement/row/mixed
binlog_format=row
# 为服务器设置一个独一无二的id便于区分
server-id=1
# 重要配置,开启该选项,MySQL每次在提交事务前会将二进制日志同步到磁盘上,保证在服务器崩溃时不会丢失事假。
sync_binlog=1
(2)创建复制账号,用于slave机器获取master机器上binlog文件
grant replication slave, replication client on *.* to 'repl'@'%' identified by '1234';
刷新数据库权限
flush privileges;
(3)查看master状态,并记录下binlog日志文件名以及position
show master status;
示例结果如下:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2.2 slave机器配置
(1)在slave机器的mysql的my.cnf上添加下面配置:
[mysqld]
# 唯一id,必需选项
server-id=2
# 二进制日志
log_bin=mysql-bin
# 指定中继日志的位置和命名,可以不指定/var/lib/mysql,则使用默认存储路径
relay_log=/var/lib/mysql/mysql-relay-bin
# 允许备库将其重放的事件也记录到自身的二进制日志中
log_slave_updates=1
# 是否只读
read_only=1
(2)配置连接的master服务,这里填上mysql主库的对应信息:
change master to master_host='192.168.10.154', master_port=13306, master_user='repl', master_password='1234', master_log_file='mysql-bin.000001', master_log_pos=154;
(3)开启从库
start slave;
(4)验证从库状态
show slave status;
成功会得到以下类似结果:
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.154
Master_User: repl
Master_Port: 13306
Connect_Retry: 60
Master_log_file: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: 9c0fc196aa6d-relay-bin.000002
Relay_Log_Pos: 836
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
...
当从库的IO线程和SQL线程的状态Slave_IO_Running和Slave_SQL_Running都是yes时,说明主从模式配置成功。