欢迎来到天天文库
浏览记录
ID:8816440
大小:230.00 KB
页数:7页
时间:2018-04-08
《rhel6:mysql主从复制及高可用性》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1、MYSQL复制概述Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,
2、然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。mysql支持的复制类型:1.基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。2.基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍.从mysql5.0开始支持3.混合类型的复制:默认采用基于语
3、句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。复制解决的问题MySQL复制技术有以下一些特点:(1)数据分布(Datadistribution)(2)负载平衡(loadbalancing)(3)备份(Backups)(4)高可用性和容错行Highavailabilityandfailover复制如何工作整体上来说,复制有3个步骤:(1)master将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents);(2)slave将master的binarylog
4、events拷贝到它的中继日志(relaylog);(3)slave重做中继日志中的事件,将改变反映它自己的数据。下图描述了复制的过程:该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。下一步就是slave将master的binarylog拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打
5、开一个普通的连接,然后开始binlogdumpprocess。Binlogdumpprocess从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。SQLslavethread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。复制配置:1)server1(192.16
6、8.7.201)和server2(192.168.7.202)安装好mysql并修改配置文件:yum-yinstallmysql-*servicemysqldstartchkconfigmysqldonvi/etc/my.cnf:添加如下内容:[mysqld]log-bin=MySQL-bin//启用二进制日志server-id=1//数据库ID号,为1时表示为Master,其中master_id必须为1到231之间的一个正整数值,每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了;##在server2上配置为s
7、erver-id=2修改后在server1和server2主机上重启mysqld服务2)server1和server2相互设置为主从同步(双主)在Server1主机上的设置://建立一个帐户cluster,并且允许从任何地址上来登陆,密码是cluster。在Server2主机上的设置:在server2和server1上执行相反的操作,使其互为主从,具体操作如下图所示:在Server2主机上的设置:在Server1主机上的设置:可以在my.cnf文件中添加“binlog_do_db=数据库名”配置项(可以添加多个)来指定要同步的
8、数据库,有关my.cnf中有关其他同步的配置项请自行查看相关文档。若主MYSQL服务器已经存在,只是后期才搭建从MYSQL服务器,在置配数据同步前应先将主MYSQL服务器的要同步的数据库拷贝到从MYSQL服务器上(如先在主MYSQL上备份数据库,再用备份在从MYSQL服务器上
此文档下载收益归作者所有