Назад | Перейти на главную страницу

Нужна помощь в настройке MySql-Cluster с двумя хостами

Спасибо за ваш ответ.

Мне нужна ваша помощь, чтобы настроить сервер 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.