
- 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是否一致
  | 
  |