mysql集群的几种方案

mysql集群的几种方案,第1张

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 后,在新的复制链路没有故障时,如果原主节点恢复,是不会回切的。如果当前复制链路发生故障,会再次选择权重高的进行切换

"可以采用开源的MyCat解决方案,优点是免费,缺点是出现问题可能要自己解决或者去社区寻找解决方案;

也可以采用北京万里开源软件有限公司的集群解决方案,后端使用开源的MySQL存储数据,优点是有任何问题他们都可以帮忙解决,而且不用担心系统后续的扩展、集群高可用等情况,他们的工程师还开发过MySQL核心代码,找他们可以睡个安稳觉,缺点是不免费,他们还有自己的国产数据库GreatDB,100%兼容MySQL。

对于初创企业,可以考虑选择免费的开源解决方案,毕竟遇到的问题可能有限,如果要想长期稳定发展,还是选择万里开源这样的公司比较靠谱一些。"

问题1:

首先认清楚:集群是个物理形态,分布式是个工作方式。

分布式:一个业务分拆多个子业务,部署在不同的服务器上;

集群:同一个业务,部署在多个服务器上。

问题2:

跨机房要根据网络线上IP数据同步 如果同步到当前 *** 作电脑必须 对方IP必须能通 ,然后在进行相关 *** 作!(比如日志同步数据 、工具同步数据、触发器存储过程同步数据等)

问题3:

oralce、MySQL等(具体要看你做那些分布式 *** 作)

读写分离、主从复制

应用程序对于数据库而言都是写少读多,这样就可以这样设计:

主库:只负责写数据(写库,DML->insert\delete\update)

从库:只负责读数据(读库,select)

这样就可以解决如下问题:

1主从分开后,在业务请求高并发时,只在从服务器上执行查询工作,降低主服务器的压力。

2主从分开后,当主服务器有问题时,可迅速切换到从服务器,不会影响线上环境。

3备份在从服务器进行,以避免备份期间影响主服务器服务。

以上就是关于mysql集群的几种方案全部的内容,包括:mysql集群的几种方案、单机MySQL数据库怎么做成分布式数据库集群、分布式数据库 与 集群数据库 之间的关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10186313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存