mysql负责高可用,可以参考如下几种方案:
1基于共享存储的方案SAN
方
案介绍:SAN(Storage Area
Network)简单点说就是可以实现网络中不同服务器的数据共享,共享存储能够为数据库服务器和存储解耦。使用共享存储时,服务器能够正常挂载文件系统
并 *** 作,如果服务器挂了,备用服务器可以挂载相同的文件系统,执行需要的恢复 *** 作,然后启动MySQL。共享存储的架构如下:
优点:
1可以避免存储外的其它组件引起的数据丢失。
2部署简单,切换逻辑简单,对应用透明。
3保证主备数据的强一致。
限制或缺点:
1共享存储是单点,若共享存储挂了,则会丢失数据。
2价格比价昂贵。
2基于磁盘复制的方案 DRBD
方
案介绍:DRBD(Distributed Replicated Block
Device)是一种磁盘复制技术,可以获得和SAN类似的效果。DBRD是一个以linux内核模块方式实现的块级别同步复制技术。它通过网卡将主服务
器的每个块复制到另外一个服务器块设备上,并在主设备提交块之前记录下来。DRBD与SAN类似,也是有一个热备机器,开始提供服务时会使用和故障机器相
同的数据,只不过DRBD的数据是复制存储,不是共享存储。DRBD的架构图如下:
优点:
1切换对应用透明
2保证主备数据的强一致。
限制或缺点:
1影响写入性能,由于每次写磁盘,实质都需要同步到网络服务器。
2一般配置两节点同步,可扩展性比较差
3备库不能提供读服务,资源浪费
3基于主从复制(单点写)方案
前面讨论的两种方案分别依赖于底层的共享存储和磁盘复制技术,来解决MYSQL服务器单点和磁盘单点的问题。而实际生产环境中,高可用更多的是依赖
MySQL本身的复制,通过复制为Master制作一个或多个热副本,在Master故障时,将服务切换到热副本。下面的几种方案都是基于主从复制的方
案,方案由简单到复杂,功能也越来越强大,实施难度由易到难,各位可以根据实际情况选择合适的方案。
Asynchronous Replication Automatic failover
其原理是在一条异步复制通道上配置多个可用复制源,当某个复制源不可用时(宕机、复制链路中断),且 slave 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步。
准备一个 MGR 集群和单实例,模拟复制链路切换,当 primary 故障,slave 自动切换到其他节点。dbdeployer deploy replication --topology=group 8022 --single-primarydbdeployer deploy single 8022
2 在从机上建立指向 MGR 主节点的复制通道,
change master to master_user='msandbox',master_password='msandbox', master_host='127001',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';
在 master_retry_count 和 master_connect_retry 的设置上要考虑尝试重连多久才切换复制源。
3 在从机上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的两个函数:
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
权重值大的被优先级选择,可以配合MGR的选举权重配置 asynchronous_connection_failover 的权重。当 MGR 节点切换,异步复制也能切换到新的主节点。
SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127001',23225,null,50);start slave for channel 'mgr-single';
4 检查异步复制通道是否启用 failover。
mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schemareplication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single | 1 |+--------------+---------------------------------+1 row in set (001 sec
5 把 MGR 的 primary 节点 kill 掉,这个从节点会在尝试几轮重连失败后自动切换到次权重的复制源,其日志中会输出切换信息。
注意:当主节点故障,一旦复制链路成功 failover 后,在新的复制链路没有故障时,如果原主节点恢复,是不会回切的。如果当前复制链路发生故障,会再次选择权重高的进行切换。
以上就是关于mysql 负载高可用 哪个方案最好全部的内容,包括:mysql 负载高可用 哪个方案最好、通常用什么模型来解决mysql高可用性、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)