mysql怎么连接集群 mysql集群解决方案( 二 )


2010-05-05 13:20:19 [MgmtSrvr] INFO-- Loaded config from '/usr/local/mysql/mysql-cluster/ndb_1_config.bin.1'
8,启动Data (NDBD) node "A"及 Data (NDBD) node "B":
[root@www local]# /usr/local/mysql/bin/ndbd
2010-05-05 13:20:30 [ndbd] INFO-- Configuration fetched from '192.168.0.10:1186', generation: 1
9,启动MySQL server (SQL) node
[root@www local]# /etc/init.d/mysql.server start
10,所有的节点都已经起动完成了
[root@www local]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]2 node(s)
id=2 @192.168.0.30(mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=3 @192.168.0.40(mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.10(mysql-5.1.44 ndb-7.1.3)
[mysqld(API)] 1 node(s)
id=4 @192.168.0.20(mysql-5.1.44 ndb-7.1.3)
mysql集群的几种方案Asynchronous Replication Automatic failover
其原理是在一条异步复制通道上配置多个可用复制源,当某个复制源不可用时(宕机、复制链路中断),且 slave 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步 。
准备一个 MGR 集群和单实例 , 模拟复制链路切换,当 primary 故障,slave 自动切换到其他节点 。dbdeployer deploy replication --topology=group 8.0.22 --single-primarydbdeployer deploy single 8.0.22
2. 在从机上建立指向 MGR 主节点的复制通道,
change master to master_user='msandbox',master_password='msandbox', master_host='127.0.0.1',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','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start slave for channel 'mgr-single';
4. 检查异步复制通道是否启用 failover 。
mysql SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single|1|+--------------+---------------------------------+1 row in set (0.01 sec
5. 把 MGR 的 primary 节点 kill 掉,这个从节点会在尝试几轮重连失败后自动切换到次权重的复制源 , 其日志中会输出切换信息 。
注意:当主节点故障,一旦复制链路成功 failover 后,在新的复制链路没有故障时,如果原主节点恢复,是不会回切的 。如果当前复制链路发生故障,会再次选择权重高的进行切换
如何在Windows系统中配置Mysql群集 MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内存中”和“磁盘中”数据库的 Cluster。通过无共享体系结构,系统能够使用廉价的硬件 , 而且对软硬件无特殊要求 。此外 , 由于每个组件有自己的内存和磁盘,不存在单点故障 。MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括 MySQL 服务器,NDB Cluster 的数据节点,管理服务器,以及(可能存在的)专门的数据访问程序 。

推荐阅读