Спасибо за ваш ответ.
Мне нужна ваша помощь, чтобы настроить сервер MySQL-Clustering следующим образом.
I have two hosts as, 1] 192.168.1.107 2] 192.168.1.125 Each hosts have node entries as, On host: 192.168.1.107: ======================= 1] MGMT Node 2] DATA Node 3] MYSQL[API] Node On host: 192.168.1.125: ======================= 1] MGMT Node 2] DATA Node 3] MYSQL[API] Node
Оба сервера размещены за «балансировщиком нагрузки» для управления входящими подключениями. Таким образом, входящие соединения или запросы к серверу будут управляться (распределяться) балансировщиком нагрузки для управления трафиком на сервере.
Балансировщик нагрузки уже настроен таким образом, например, если один сервер выходит из строя или не работает (из-за сбоя системы), тогда балансировщик нагрузки будет отвечать за пересылку всех входящих запросов или все запросы или соединения должны отвечать живым (сервером) .
My current configuration files are as follows: ---------------------------------------------- "my.cnf" On host: 192.168.1.107: ================================ # The MySQL server [mysql_cluster] ndb-connectstring=192.168.1.107:1186 [ndbd] connect-string=192.168.1.107:1186,192.168.1.125:1186 [ndb_mgm] connect-string=192.168.1.107:1186 [ndb_mgmd] config-file=/var/lib/mysql-cluster/config.ini [mysqld] ndbcluster ndb-connectstring=192.168.1.107 "my.cnf" On host: 192.168.1.125: ================================ # The MySQL server [mysql_cluster] ndb-connectstring=192.168.1.125:1186 [ndbd] connect-string=192.168.1.125:1186,192.168.1.107:1186 [ndb_mgm] connect-string=192.168.1.125:1186 [ndb_mgmd] config-file=/var/lib/mysql-cluster/config.ini [mysqld] ndbcluster ndb-connectstring=192.168.1.125 AND "config.ini" On host: 192.168.1.107: ==================================== [NDBD DEFAULT] NoOfReplicas=2 # Number of replicas DataMemory=3500M # How much memory to allocate for data storage IndexMemory=1000M # How much memory to allocate for index storage datadir=/usr/local/mysql/data # Directory for this data node's datafiles #MaxNoOfConcurrentOperations=1048576 #MaxNoOfConcurrentTransactions= 1048576 #MaxNoOfLocalOperations=1048576 #MaxNoOfConcurrentIndexOperations=16384 #MaxNoOfConcurrentScans=500 #LockPagesInMainMemory=Y # TCP/IP options: [TCP DEFAULT] portnumber=2202 # This the default; however, you can use any # Management process options: [NDB_MGMD DEFAULT] datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles [NDB_MGMD] hostname=192.168.1.107 # Hostname or IP address of MGM node # Options for data node "A": [NDBD] id=3 # (one [NDBD] section per data node) hostname=192.168.1.107 # Hostname or IP address # Options for data node "B": [NDBD] id=4 hostname=192.168.1.125 # Hostname or IP address # SQL node options: [MYSQLD] id=5 hostname=192.168.1.107 "config.ini" On host: 192.168.1.125: ==================================== [NDBD DEFAULT] NoOfReplicas=2 # Number of replicas DataMemory=3500M # How much memory to allocate for data storage IndexMemory=1000M # How much memory to allocate for index storage datadir=/usr/local/mysql/data # Directory for this data node's datafiles #MaxNoOfConcurrentOperations=1048576 #MaxNoOfConcurrentTransactions= 1048576 #MaxNoOfLocalOperations=1048576 #MaxNoOfConcurrentIndexOperations=16384 #MaxNoOfConcurrentScans=500 #LockPagesInMainMemory=Y # TCP/IP options: [TCP DEFAULT] portnumber=2202 # This the default; however, you can use any # Management process options: [NDB_MGMD DEFAULT] datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles [NDB_MGMD] hostname=192.168.1.125 # Hostname or IP address of MGM node # Options for data node "A": [NDBD] id=3 # (one [NDBD] section per data node) hostname=192.168.1.107 # Hostname or IP address # Options for data node "B": [NDBD] id=4 hostname=192.168.1.125 # Hostname or IP address # SQL node options: [MYSQLD] id=5 hostname=192.168.1.125
Что касается приведенной выше конфигурации, я пытаюсь настроить серверы как
Для создания репликации между двумя узлами данных. Означает, что если один сервер выходит из строя или выходит из строя, то автоматически те же данные должны обслуживаться другим живым сервером.
Короче говоря, узлы «A» и «B» должны иметь репликацию данных между ними, и одни и те же данные должны обслуживаться, если один из них выйдет из строя. Все входящие запросы или соединения обрабатываются балансировщиком нагрузки.
Я попытался реализовать то же самое с приведенной выше конфигурацией, используя следующие шаги на обоих серверах, но есть некоторые проблемы, такие как,
On host 192.168.1.107 ===================== 1] [root@ns mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini 2009-09-07 17:48:24 [MgmSrvr] INFO -- NDB Cluster Management Server. mysql-5.1.34 ndb-7.0.6 2009-09-07 17:48:24 [MgmSrvr] INFO -- Loaded config from '//mysql-cluster/ndb_1_config.bin.1' 2] [root@ns mysql-cluster]# /usr/local/mysql/bin/ndbd 2009-09-07 17:49:36 [ndbd] INFO -- Configuration fetched from '192.168.1.107:1186', generation: 1 3] [root@ns mysql-cluster]# mysqld_safe --ndbcluster --ndb-connectstring=192.168.1.107 & [1] 12189 [root@ns mysql-cluster]# 090907 17:50:17 mysqld_safe Logging to '/var/lib/mysql/ns.err'. 090907 17:50:17 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql OUT PUT OF (ndb_mgm -e show): ============================= [root@ns mysql-cluster]# ndb_mgm -e show Connected to Management Server at: 192.168.1.107:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 @192.168.1.107 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master) id=4 (not connected, accepting connect from 192.168.1.125) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.107 (mysql-5.1.34 ndb-7.0.6) [mysqld(API)] 1 node(s) id=5 @192.168.1.107 (mysql-5.1.34 ndb-7.0.6) After that the same steps carried out, On on host 192.168.1.125: ========================= 1] [root@test mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini 2009-09-07 17:55:24 [MgmSrvr] INFO -- NDB Cluster Management Server. mysql-5.1.34 ndb-7.0.6 2009-09-07 17:55:24 [MgmSrvr] INFO -- Loaded config from '//mysql-cluster/ndb_1_config.bin.1' 2] [root@test mysql-cluster]# /usr/local/mysql/bin/ndbd 2009-09-07 17:55:59 [ndbd] INFO -- Configuration fetched from '192.168.1.125:1186', generation: 1 3] [root@test mysql-cluster]# mysqld_safe --ndbcluster --ndb-connectstring=192.168.1.125 & [2] 5276 [root@test mysql-cluster]# 090907 17:56:30 mysqld_safe Logging to '/var/lib/mysql/test.testmachine.com.err'. 090907 17:56:30 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql OUT PUT OF (ndb_mgm -e show): ============================= [root@test mysql-cluster]# ndb_mgm -e show Connected to Management Server at: 192.168.1.125:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=3 (not connected, accepting connect from 192.168.1.107) id=4 @192.168.1.125 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.125 (mysql-5.1.34 ndb-7.0.6) [mysqld(API)] 1 node(s) id=5 @192.168.1.107 (mysql-5.1.34 ndb-7.0.6)
Приведенный выше результат показывает, что оба узла данных с каждого сервера не могут связываться друг с другом. Поэтому, пожалуйста, сообщите мне правильную конфигурацию или правильные шаги для идеальной реализации моего сценария.
Жду твоего ответа.
у вас есть фундаментальная проблема в дизайне кластера. Для кластеризации MySQL требуется 3 сервера. Предположим, что провод, соединяющий 2 сервера, оборван, но обе машины все еще работают. Если они оба продолжат работу, они будут получать разные данные и не будут синхронизироваться.
Таким образом, с двумя машинами они оба должны выключиться, чтобы предотвратить сценарий разделения мозга, когда каждый узел в кластере имеет разные данные.
Вы можете добавить третью машину, на которой работает только узел управления (который требует ограниченных ресурсов), который работает с узлами данных, чтобы решить, как справиться с ошибкой. Если узел управления уходит, но оба узла данных все еще работают, они продолжат работу.
Вот инструкции для конфигурации 2 узлов данных + 1 узла управления: http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html
Пытаться этот учебник по howtoforge.