一、主从同步的原因
为了减轻服务器处理海量并发访问所产生的性能问题,其中最主流的方案之一就是读写分离。
二、MySQL主从同步流程图
三、主从库如何同步
1、 Master主服务器将对数据的操作记录到二进制日志中(Binary log),MySQL将事务串行(交叉执行)的写入二进制日志;
2、Slave从服务器将二进制日志(Binary log)copy到中继日志当中(Relay log)。首先,slave开始一个工作线程——I/O线程。
- slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接;
- 开始binlog dump process;
- 如果binlog dump process已经跟上master,它会睡眠并等待master产生新的事件。
- I/O线程将这些事件写入中继日志;
- SQL slave thread(SQL从线程)从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致
四、为什么需要中继日志(Relay log)
由于网络等原因,Binary log不可能一口气存到 I/O thread中,所以Relay log中用来缓存Binary log的事件。(Relay log存储在从服务器slave缓存中,开销比较小)
五、需要注意的点
- master和slave连接,slave会在master中打开一个连接,使得master也开始一个线程;
- 复制在slave上是串行化的,即master上的并行更新操作不能在slave上并行操作
六、主从同步优点
- 主库写,从库读,降低服务器压力;
- 在从主服务器进行备份,避免备份期间影响主服务器服务,保证数据安全;
- 当主服务器出现问题时,可以切换到从服务器,提高性能
七、主从同步数据库设置
1、连接上MySQL
2、在主服务器Master中做相关配置
设置server-id,log-bin,log-bin-index
重启主服务器数据库
show master status
创建repl账户并赋给权限,并刷新
3、从服务器进行相关配置
修改配置文件
设置server-id,relay-log-index,relay-log
重启从服务器数据库
进行设置
start slave
show slave status (/G,将内容竖向显示)
4、验证
主库File和position与从库一致,则证明主从同步了
5、(附加)数据库可设置一个用来远程访问的账户(%代表远程访问)