设为首页 收藏本站
查看: 496|回复: 0

[经验分享] MySql主从复制简单案例实现

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-15 09:43:10 | 显示全部楼层 |阅读模式
mysql的主从复制原理

    在mysql主从复制架构中,有一台服务器作为MASTER服务器,该服务器负责所有的读请求和写请求。另外一台或多台作为slave服务器。当master上的某个应用程序发起写请求时,该请求会被内核响应并在内核中执行,然后在将其数据写入到磁盘中去。并且将此次的操作以事件的形式记录到二进制文件中去。此时master上的Binlog  dump thread等待slave上的I/O thread连接请求。一旦slave I/O thread连接上了master的Binlog dump thread,则Binlog dump thread会将本地二进制文件中更新的事件复制给slave。当slave上的I/O thread接受从master复制过来的二进制文件中的事件时,会将其事件写入到slave上的中继日志文件中。然后slave会调用本地的SQL thread重新应用(或回放)中继日志中的事件,然后在将其数据写入到slave上的磁盘中。这就是mysql的主从复制功能。

由于slave上更新的数据不能复制给master,因此,对于slave而言,不能执行写操作。


mysql的三中复制模式:

1)异步模式(mysql默认复制模式)、半同步和同步复制模式。(这里用到的是异步复制模式)


mysql主从复制具有以下功能:

1、实现mysql数据库的高可用性

2、可以辅助实现数据备份

3、可以异地容灾

4、实现服务器分摊负载,即通过mysql的读写分离来实现分摊负载。(这里只是简单的主从复制)


主从复制实现如下图所示:

wKioL1Usu2rDqCW4AAFc_qmsMKU151.jpg

上图原理说明:

1.Binlog dump thread:接受slave  I/O thread的连接请求,并将master上的二进制文件中更新的事件复制给slave I/O thread。

2.slave I/O thread:接受Binlog dump thread复制过来的时间,并将其写入到slave上的中继日志文件中。

3.slave SQL thread:读取中继日志文件中的事件重新应用(或回放),并将其数据写入到磁盘中去。


mysql的主从复制需要注意的事项:

一个master可以用于多个slave,而一个slave只能属于某一个master,在主从架构中,如果只有一个slave,那么在slave上重新回放中继日志文件中的事件会引起数据库的改变,因此,这个过程也会以事件的形式写入到二进制日志文件中去。由于二进制日志是用来做及时点还原的,且master保存着一份完整的数据,因此在slave上不需要开启二进制日志功能,但是master上必须要开启。如果有多个slave的情况下,在这多个slave中,有一个slave即当做master的slave又可以当做其他slave的master,那么此时这个slave上必须开启二进制日志功能。即此时这个slave即充当slave又充当master。


下面开始配置:

1.实验环境:

我用的是2台Centos 6.5x86_64

IP地址分别为:

master.fpj.com   192.168.3.85

slave.fpj.com    192.168.3.86

mysql的安装我这里就不说了,可以用编译安装,也可以yum直接安装,我这边用yum直接安装,版本是mysql-5.1.73(里面修改的datadir目录这里就不写出来了)。


2.配置主mysql服务

1)启用二进制日志

2)定义serverID

3)创建具有复制权限的帐号

wKioL1Uso5_ByULWAABITNqb9q0310.jpg


wKiom1UspULgdgpOAAByKV4qhxY765.jpg

3.配置从mysql服务

1.关闭二进制日志,启动中继日志
2.定义server-id
3.使用有复制权限的帐号连接Master服务器
4.启动I/O线程和sql线程

wKioL1UsrmKQ1O1dAAAvlMDr5XU991.jpg


wKiom1Usr_eDK33zAACelW5WfuY438.jpg

这里我直接start slave;直接启动I/O,SQL线程,也可以一个个启动;


下面就来查看下从服务器的状态:


4.我就来测试下master服务上新建一个fpjtest数据库:



最后去从服务器上看看 fpjtest有没有同步过来:




看上图已经同步过来了,说明mysql主从复制已经实现。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-57327-1-1.html 上篇帖子: phpMyAdmin安装 下篇帖子: Mysql常用操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表