MySQL主从复制
Mysql复制
Mysql内建的复制功能是构建大型、高性能应用程序的基础。Mysql支持单向、异步复制,复制过程中一台服务器充当主服务器,而另外一个或多个服务器充当从服务器。复制解决的基本问题是让一台服务器的数据和另外的服务器保持同步。主服务器和从服务器可以位于不同的网络拓扑中,还能对整台服务器、特定的数据库、甚至特定的表进行复制。
总体来说,复制有3个步骤:
1、主服务器把数据更改记录到二进制日志中。(这叫做二进制日志事件)
2、从服务器把主服务器的二进制日志拷贝到自己的中继日志中。
3、从服务器重放中继日志中的事件,把更改应用到自己的数据上。
第一步是在主服务器上记录二进制日志。在每个更新数据的事务完成之前,主服务器都会将数据更改记录到二进制日志中。即使事务在执行期间是交错的,mysql也会串行地将事务写入到二进制日志中。在把事件写入二进制日志之后,主服务器告诉存储引擎提交事务。
第二步是从服务器把主服务器的二进制日志拷贝到自己的硬盘上,进入所谓的“中继日志”中。首先,它启动一个工作线程,叫I/O线程,这个I/O线程开启一个普通的客户端连接,然后启动一个特殊的二进制日志转储进程(它没有相应的SQL命令)。这个转储进程从主服务器的二进制日志中读取数据。它不会对事件进行轮询。如果3跟上了主服务器,就会进入休眠状态并等待有新的事件发生时主服务器发出的信号。I/O线程把数据写入从服务器的中继日志中。
第三步SQL线程读取中继日志,并且重放其中的事件,然后更新从服务器的数据。由于这个线程能跟上I/O线程,中继日志通常在操作系统的缓存中,所以中继日志的开销很低。SQL线程执行事件也可以被写入从服务器自己的二进制日志中,它对于有些场景很实用。
本篇主要讲解Mysql的主从复制、半同步复制、基于SSL复制。
环境介绍:
系统:CentoS6.4-x86 主服务器:node1:192.168.184.143 从服务器:node2: 192.168.184.144 Mysql版本:mysql-5.5.14
主从复制:
思路解析:
主服务器:创建具有复制权限的用户账号;设置server-id;启动二进制日志。
从服务器:启动中继日志;设置server-id;启动复制线程。
1、创建主从服务器并实现双机互信
主服务器:
[root@centos64_1 ~]# ssh-keygen -t rsa -P ‘‘ [root@centos64_1 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
从服务器:
[root@centos64_2 ~]# ssh-keygen -t rsa -P ‘‘ [root@centos64_2 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
2、编辑主从服务器的hosts文件
[root@centos64_1 ~]# vi /etc/hosts 192.168.184.143 centos64_1 192.168.184.144 centos64_2
同样在node2上。
3、查看时间并同步时间
[root@centos64_1 ~]# date;ssh centos64_2 ‘date‘ [root@centos64_2 ~]# date;ssh centos64_1 ‘date‘
注意:必须保证时间一致,这样主从复制才不会实现时间间隔。
4、安装Mysql:(主从服务器)
略
5、配置主服务器
(1)编辑配置文件(主要信息)
[root@centos64_1 ~]# vi /etc/my.cnf server-id = 1 #标识自己的ID号 log-bin=mysql-bin #二进制日志,默认是启动的 binlog_format=mixed #使用混合模式
(2)建立复制账号权限
mysql> GRANT REPLICATION SLAVE ON *.* TO rpuser@‘192.168.%.%‘ IDENTIFIED BY ‘rpuser‘; mysql> flush privileges;
6、配置从服务器
(1)编辑配置文件
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。