欢迎来到天天文库
浏览记录
ID:39988714
大小:357.84 KB
页数:13页
时间:2019-07-16
《高可用数据库架构设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MySQL数据库高可用架构设计目标:MySQL数据库服务器不受单点宕机的影响,即时A服务器挂掉或者磁盘损坏物理故障导致数据库不可用也不会导致整个系统处于不可用状态,因为还有另外一台备用的数据库服务器可以提供服务。派宝箱采取方案双机主从热备(MaterSlave模式)背景:双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。这样做的好处:1.可以做灾备,其中一个坏了可以切换到另一个。2.可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。 对于异地
2、热备,尤其适合灾备。原理:MySQLReplication双机热备+每天自动sqldump出物理文件备份双机主从自动热备实现数据库服务的高可用加sqldump导出数据文件的方式备份。双重保险!可能遇到的问题与挑战:主从数据库数据一致性问题宕机后主从切换的问题1复制概述 Mysql内建的复制功能(MySQLREPLICATION )是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服
3、务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。1.1mysql支持的复制类型: (1):基于语句的复制: 在主服务器上
4、执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时, 会自动选着基于行的复制。 (2):基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍.从mysql5.0开始支持 (3):混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。 1.2.复制解决的问题 MySQL复制技术有以下一些特点: (1) 数据分布(Datadistribution)
5、 (2) 负载平衡(loadbalancing) (3) 备份(Backups) (4) 高可用性和容错行Highavailabilityandfailover 1.3复制如何工作 整体上来说,复制有3个步骤: (1) master将改变记录到二进制日志(binarylog)中(这些记录叫做二进制日志事件,binarylogevents); (2) slave将master的binarylogevents拷贝到它的中继日志(relaylog);
6、 (3) slave重做中继日志中的事件,将改变反映它自己的数据。下图描述了复制的过程: 该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。 下一步就是slave将master的binarylog拷贝到它自己的中继日志。首先,slave开始一个工作线
7、程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlogdumpprocess。Binlogdumpprocess从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。 SQLslavethread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。
8、 此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程
此文档下载收益归作者所有