- master服务器将数据的改变记录二进制日志,当master上的数据发生改变时,则将其改变写入二进制日志中.
- salve服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件,同时master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至slave节点本地的中继日志中.
- slave节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和master节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。
master 库操作
注意:
master
与slave
库的版本需要一致
master 配置
|
|
master启动服务
|
|
锁表导数据
|
|
导出数据拷贝
|
|
记录pos并解锁
|
|
授权
|
|
slave库操作
安装
|
|
配置文件
|
|
启动服务
|
|
创建密码并导入备份数据
|
|
连主库
|
|
查看salve状态
|
|
注意:
Slave_IO_Running: Yes, Slave_SQL_Running: Yes
这两个参数为Yes
表示正常。
========
问题1:
问题描述
由于master库在外网,slave库在内网,当master日志发生变化时,master与slave的连接有时会断开,导致外网的master的binlog无法发送给内网的slave.只有在slave发起连接时才能建立连接,保持日志传输。
master库状态
此时正在连接中
解决办法
所以我在slave库上写了个脚本,判断master库的pos与slave库的pos是否一致,如果不一致就重启slave
|
|
放入计划任务
|
|
查看日志
|
|
查看master,slave的pos是否一致
|
|