大部分时候当我们用到mysql的时候,都会用到mysql的主从配置,一方面可以帮助我们提高mysql的处理能力,另一方面当某一台服务器出现故障的时候,可能通过主从切换的方式继续提供服务,大大增强了我们服务的可靠性。
mysql是怎么实现主从的呢?
熟悉mysql的小伙伴都知道mysql有几种日志,分别是:错误日志,一般日志,慢查询日志,二进制日志。前三种日志在这里我就不做详细讲解了,那么二进制日志是什么呢,其实二进制日志是以事务的方式记录下了每一次用户的操作。每一次操作都有唯一的position编码。其实,mysql的主从同步便是通过日志文件的同步做到的。
常见的主从关系又有哪些呢?
一.m-sss
这种模式有一台主服务器,多台从服务器,很简单,只要一下几步:
1.赋予slave机器登陆master机器的mysql读取二进制日志的权限
2.验证slave机器是否可以正常登陆master机器
3.在master机器上打开二进制日志,需要加上server-id 数字随意,唯一标注该主机
4.制作master的完整备份,制作一个同步的初始化条件。
5.在slave上配置一下server-id 也给一个唯一标识
6.找到完整备份时slave的二进制日志的位置
7.通过change master 命令告诉slave机器master是谁,怎么登陆,从二进制文件的哪一行开始同步。
8.通过start slave;启动replication;
这种模式有明显的缺点,就是很多个机器都会读master的的二进制文件,这将造成master的IO压力非常大,于是有了下面的优化方案。
二、m-s-s
第一个m代表主服务器,第一个s代表中继服务器,第二个s代表从服务器,可以有多个
这样的结构有一个明显的好处是:只会有一台服务器去同步master的二进制文件,大大降低了master的io压力,注意,必须用log-slave-updates配置,这句话的意思是:当中继服务器同步master的二进制日志的时候也写进自己的二进制日志,这样从服务器才能通过读取中继服务器的二进制日志进行同步。而一般为了减少从服务器的压力,这时候从服务器的二进制日志时关闭的。
三、其他结构
网上有M-M结构,建议不要使用这样的结构,这样的结构会很容易导致数据的不一致性。