还是同步问题,谁能提供一种多个服务器同步的模式? 具体要求如下:
 
 有N台服务器的同一个数据库参与同步,假设为A、B、C、D、E、F、G,所有服务器的数据必须是互相同步可读可写的,即一个改变其他的全部都会更新。之前以为 一台从服务器可以对应多个主服务器,在my.ini中加了多个master的配置,结果发现只有一个有效,后来才知道一台服务器只能对应一台主服务器。    后来也考虑过 A->B->C->D->E->F->G->A, 即环状的链式模式,但这样又不能保证某个节点异常情况下的连通性,若一个断掉,就变成单向的了。    有一些资料说上面那种方式可以在节点出现异常时,用change master to来改变异常节点后面的指向。如C断掉了,就将D的master指向B。这样做不容易啊,因为要采取额外措施检测异常还有改变节点角色,有没有其他行得通的方法。如果谁做过上面这种方式的,请详细指导一下,不胜感激。

解决方案 »

  1.   

    你这样的需求就是要用到mysql cluster,用ndb cluster引擎
      

  2.   

    参考手册http://dev.mysql.com/doc/refman/5.1/zh/ndbcluster.html
      

  3.   

    windows平台不支持MySQL Cluster,我用的是windows平台的。
      

  4.   

    http://www.mysql.com/support/supportedplatforms/cluster.html
    Beginning with MySQL Cluster NDB 7.1.3, MySQL Cluster is also available for production use on Microsoft Windows platforms
      

  5.   

    我尝试用 mysql Cluster集群,进行配置时一启动就出了问题:
    先看配置吧:Management (MGMD) node
     192.168.3.27
     
    MySQL server (SQL) node “A”
     192.168.3.28
    MySQL server (SQL) node “B”
     192.168.3.29
     
    Data (NDBD) node "A"
     192.168.3.28
    Data (NDBD) node "B"
     192.168.3.29 
    config.ini的配置如下:
    [ndbd default]
    # Options affecting ndbd processes on all data nodes:
    NoOfReplicas=2   
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data 
    DataMemory=80M    
    IndexMemory=18M[tcp default]
    SendBufferMemory=2M
    ReceiveBufferMemory=2M[NDB_MGMD DEFAULT]
    PortNumber=1186
    Datadir=C:\mysql\mysql-cluster[ndb_mgmd]
    # Management process options:
    nodeid=1
    HostName=192.168.3.27                
    DataDir=C:\mysql\bin\cluster-logs
    [ndbd]
    # Options for data node "A":                                
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
    HostName=192.168.3.28[ndbd]
    # Options for data node "B":
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
    HostName=192.168.3.29[mysqld]
    # SQL node options:
    HostName=192.168.3.28[mysqld]
    # SQL node options:
    HostName=192.168.3.29启动Management node:进入bin目录后,用命令:ndb_mgmd -f config.ini
    C:\mysql\bin>ndb_mgmd -f config.ini
    MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9
    2010-12-07 09:40:30 [MgmtSrvr] ERROR    -- Could not determine which nodeid to u
    se for this node. Specify it with --ndb-nodeid=<nodeid> on command line应该是缺少了nodeid这一项,我就在下面位置添加了nodeid:
    [ndb_mgmd]
    nodeid=1[ndbd]
    nodeid=2[ndbd]
    nodeid=3[mysqld]
    nodeid=4[mysqld]
    nodeid=5然后用启动:C:\mysql\bin>ndb_mgmd -f config.ini --ndb-nodeid=1
    MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9
    2010-12-07 09:49:20 [MgmtSrvr] ERROR    -- The hostname this node should have ac
    cording to the configuration does not match a local interface. Attempt to bind '
    192.168.3.27' failed with error: 34 'Result too large'这才刚开始呢,后面就走不下去了,虚心请教!
      

  6.   

    我尝试用 mysql Cluster集群,进行配置时一启动就出了问题:
    先看配置吧:Management (MGMD) node
     192.168.3.27
     
    MySQL server (SQL) node “A”
     192.168.3.28
    MySQL server (SQL) node “B”
     192.168.3.29
     
    Data (NDBD) node "A"
     192.168.3.28
    Data (NDBD) node "B"
     192.168.3.29 
    config.ini的配置如下:
    [ndbd default]
    # Options affecting ndbd processes on all data nodes:
    NoOfReplicas=2   
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data 
    DataMemory=80M    
    IndexMemory=18M[tcp default]
    SendBufferMemory=2M
    ReceiveBufferMemory=2M[NDB_MGMD DEFAULT]
    PortNumber=1186
    Datadir=C:\mysql\mysql-cluster[ndb_mgmd]
    # Management process options:
    nodeid=1
    HostName=192.168.3.27                
    DataDir=C:\mysql\bin\cluster-logs
    [ndbd]
    # Options for data node "A":                                
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
    HostName=192.168.3.28[ndbd]
    # Options for data node "B":
    DataDir=D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
    HostName=192.168.3.29[mysqld]
    # SQL node options:
    HostName=192.168.3.28[mysqld]
    # SQL node options:
    HostName=192.168.3.29启动Management node:进入bin目录后,用命令:ndb_mgmd -f config.ini
    C:\mysql\bin>ndb_mgmd -f config.ini
    MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9
    2010-12-07 09:40:30 [MgmtSrvr] ERROR    -- Could not determine which nodeid to u
    se for this node. Specify it with --ndb-nodeid=<nodeid> on command line应该是缺少了nodeid这一项,我就在下面位置添加了nodeid:
    [ndb_mgmd]
    nodeid=1[ndbd]
    nodeid=2[ndbd]
    nodeid=3[mysqld]
    nodeid=4[mysqld]
    nodeid=5然后用启动:C:\mysql\bin>ndb_mgmd -f config.ini --ndb-nodeid=1
    MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9
    2010-12-07 09:49:20 [MgmtSrvr] ERROR    -- The hostname this node should have ac
    cording to the configuration does not match a local interface. Attempt to bind '
    192.168.3.27' failed with error: 34 'Result too large'这才刚开始呢,后面就走不下去了,虚心请教!