一、主从同步的作用
1、数据分布
2、负载均衡(load balancing)
4、高可用性(high availability)和容错
二、主从同步原理
mysql(MariaDB)的主从复制其实很简单,只要搞懂了原理,配置一个主从复制就是三下五除二的工夫
1、二进制日志
想要做主从复制必须得有这个二进制日志,那二进制日志记录的是什么呢?二进制日志中保存的只是跟服务器修改相关的操作,也叫复制日志
二进制日志为了避免日志文件过大,要进行不停地滚动,其主要有两个功能:
(1)即时点恢复
(2)复制
因为二进制日志有即时点恢复功能,所以万一某天一个不小心失误把数据库删了,只要二进制日志文件保存完好,就可以把我们的数据恢复回来。可见二进制日志是非常重要的,因此二进制日志千万不要和你的数据库目录放到一起,而要另找一个位置保存
今天我们要做的是利用他的第二个功能完成主从复制
2、中继日志
中继日志和复制相关,中继日志是从服务器从主服务器上读取主服务器上二进制日志中的事件,每读一个过来,并保存到本地。
3、主从同步原理
原理详解:
1)主服务器发生数据更改操作,数据写入到数据文件和二进制文件中,然后去唤醒从服务器的I/O线程(IO thread)
2)从服务器的IO thread来请求主服务器并把从主服务器的binlog dump线程返回结果写入到本地中继日志中
3)从服务器的SQL thread每读一条中继日志,然后写一条到本地数据文件中
4)此过程中,从服务器只是同步主服务器的数据,所以他无需开启二进制日志,而且从服务器最好设为只读模式
5)主从复制并不是一个备份的过程,它只是一个数据同步的过程,因为,如果你在主服务器上删除一个库,那你会发现从服务器上也没有了
6)从服务器并不能负载主服务器的写操作,它只可以负载主服务器的读操作;因为,不管你主服务器写多少,从服务器都会通过它的中继日志和主服务器的二进制日志同步到它本地的
三、主从同步的实现
1、修改主服务器的配置文件,我这里的数据目录在/mydata/data下,为了安全,我把二进制日志放到了/mydata/binlogs下,别忘了给这几个目录设置属主和属组为mysql用户,mysql组
2、在从服务器上修改主配置文件,方法同上一步
3、查看从服务器的中继日志是否启动成功
4、在主服务器上创建有复制权限的账号
1
2
|
grant replication slave on *.* to
'moba'
@
'192.168.100.137'
identified by
'moba2015'
;
flush privileges;
|
5、在主服务器上查看其状态信息
6、从服务器连接主服务器
7、查看从服务器的状态信息,检查是否连接主服务器成功
这里的Slave_IO_Running和Slave_SQL_Running两个线程必须都为Yes才是正确的,出现了什么connecting啊还是no什么的都是没连接成功的。IO thread是去请求主服务器的二进制日志并写入到本地中继日志的,SQL thread是从中继日志写入到本地数据文件的。
8、在主服务器上创建一个数据库
9、在从服务器上启动复制线程,测试hlbrc这个库是否同步成功
1
|
mysql>start slave;
|
四、主从同步配置过程总结
1、主服务器
1)修改server-id
2)启用二进制日志
3)创建有复制权限的账号
2、从服务器
1)修改server-id
2)启用中继日志
3)连接主服务器
4)启程复制线程