美文网首页
主从复制-简单实现

主从复制-简单实现

作者: 余于鱼不是鱼鱼鱼 | 来源:发表于2021-07-20 10:52 被阅读0次


原理

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时才算成功,否则就是失败了

相关文章

网友评论

      本文标题:主从复制-简单实现

      本文链接:https://www.haomeiwen.com/subject/zutwpltx.html