原理
1.当master上的数据发生改变时,biglog日志会记录数据变更的sql语句
2.slave通过I/O请求从master读取binlog日志并将读取到的内容写到slave本地的relay-log(中继日志)文件中
3.slave启动SQL线程,读取relay-log(中继日志)文件,并解析成sql语句执行

实现
mysql5.7
1.修改master主服务器
修改my.cnf文件(我的my.cnf在/etc/mysql目录下)
[mysqld]
server_id=3333
log-bin=mysql-bin
server_id(或server-id,这里在centos7系统下测试都可行):唯一标识,同一局域网中不能相同
log-bin:开启二进制日志(重点)
这里我在修改my.cnf文件的时候提示该文件是readonly的,完成编辑后先
:set noreadonly
设置为不只读,在保存并退出(:wq)
改完配置后重启mysql服务
service mysql restart
2.修改slave从服务器
同样是修改my.cnf文件
[mysqld]
server_id=3334
log-bin=mysql-slave-bin
relay_log=mysql-relay-log
这里多了一个relay_log指定的是从服务器的中继日志
改完配置后同样重启mysql服务
3.进入master主服务器的mysql命令行

记住File和Position的值,在从服务器要用到(到这里暂时不需要操作mysql主库)
4.进入slave从库设置主服务器信息
change master to master_host='172.18.0.3',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000004',master_log_pos=9090,master_connect_retry=30;
master_host: Master 的IP地址
master_user: 在 Master 中授权的用于数据同步的用户
master_password: 同步数据的用户的密码
master_port: Master 的数据库的端口号
master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。
设置好之后(start slave)启动从服务同步

查看从服务是否配置成功

只有当Slave_IO_Running和Slave_SQL_Running都为Yes时才算成功,否则就是失败了
网友评论