Цель этой статьи — рассказать, как установить и настроить кластер MySQL на основе двух серверов. И помните, что MySQL по-прежнему может продолжать работать, когда на каком-либо сервере возникают проблемы или он не работает.
Уведомление! Хотя это кластер MySQL на базе 2-х серверов, в качестве узла управления должен быть дополнительный третий сервер, но этот сервер можно отключить после завершения запуска кластера. При этом следует отметить, что не рекомендуется выключать сервер, служащий узлом управления, после завершения запуска кластера. Хотя теоретически возможно построить MySQL-кластер всего на двух серверах, при такой архитектуре при выходе из строя одного сервера кластер не может продолжать нормально работать, тем самым теряется смысл кластера. По этой причине третий сервер должен работать в качестве узла управления. Кроме того, у многих друзей может не быть реальной среды из трех серверов, поэтому они могут рассмотреть возможность проведения экспериментов на VMWare или других виртуальных машинах.
Ниже предполагается ситуация с этими тремя службами:
Сервер1: mysql1.vmtest.net 192.168.0.1
Сервер2: mysql2.vmtest.net 192.168.0.2
Сервер3: mysql3.vmtest.net 192.168.0.3
Серверы Server1 и Server2 служат серверами, которые фактически настраивают кластер MySQL. Требования к Серверу3 в качестве узла управления ниже. В системе Сервер3 требуются лишь небольшие изменения, и нет необходимости устанавливать MySQL. Сервер3 может использовать компьютер с более низкой конфигурацией и одновременно запускать другие службы на Сервере3. 2. Установите MySQL на Сервер1 и Сервер2.
================================Из [url]/u/info_img/2009-05/30/url] Загрузите mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz. Примечание. Это должна быть максимальная версия MySQL. Стандартная версия не поддерживает развертывание кластера. Следующие шаги необходимо выполнить один раз на Сервере1 и Сервере2.
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# компакт-диск /usr/local/
# группируем MySQL
# useradd -g MySQL MySQL
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# компакт-диск MySQL
# скрипты/mysql_install_db --user=mysql
# chown -R корень.
# chown -R данные MySQL
# chgrp -R MySQL.
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld Не запускайте MySQL сейчас!
Установите и настройте сервер узла управления (Server3)
==================================== В качестве сервера узла управления Server3 требуются два файла: ndb_mgm и ndb_mgmd: Загрузите mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz из [url]/u/info_img/2009-05/30/url]
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# мв бин/ndb_mgm.
# мв бин/ndb_mgmd.
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
#cd
# rm -rf /usr/src/mysql-mgm Теперь начните создавать файл конфигурации для этого сервера узла управления:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini Добавьте в config.ini следующее содержимое:
[NDBD ПО УМОЛЧАНИЮ]
NoOfReplicas=2
[MYSQLD ПО УМОЛЧАНИЮ]
[NDB_MGMD ПО УМОЛЧАНИЮ]
[TCP ПО УМОЛЧАНИЮ]
#ManagementServer
[NDB_MGMD]
HostName=192.168.0.3 #IP-адрес сервера узла управления Server3
# Механизмы хранения
[НДБД]
HostName=192.168.0.1 #IP-адрес кластера MySQL Server1
DataDir = /var/lib/mysql-кластер
[НДБД]
HostName=192.168.0.2 #IP-адрес кластера MySQL Server2.
DataDir=/var/lib/mysql-кластер
# Следующие два [MYSQLD] могут заполнять имена хостов Server1 и Server2.
# Однако, чтобы быстрее заменить сервер в кластере, рекомендуется оставить это поле пустым, иначе после замены сервера эту конфигурацию необходимо будет изменить.
[МYSQLD]
[MYSQLD] После сохранения и выхода запустите сервер узла управления Server3:
# После запуска узла управления с помощью ndb_mgmd следует отметить, что это только служба узла управления, а не терминал управления. Поэтому вы не увидите никакой выходной информации о запуске. 4. Настройте сервер кластера и запустите MySQL.
============================ Следующие изменения необходимо внести как на Сервер1, так и на Сервер2:
# vi /etc/my.cnf
[mysqld]
ндбкластер
ndb-connectstring=192.168.0.3 IP-адрес #Server3
[mysql_cluster]
ndb-connectstring=192.168.0.3 #После сохранения IP-адреса Server3 и выхода создайте каталог данных и запустите MySQL:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial
# /etc/rc.d/init.d/mysqld start Вы можете добавить /usr/local/mysql/bin/ndbd в /etc/rc.local для запуска. Примечание. Параметр --initial необходимо использовать только при первом запуске ndbd или после внесения изменений в config.ini Server3! 5. Проверьте рабочее состояние
================ Вернитесь на сервер узла управления Server3 и запустите терминал управления:
# /usr/bin/ndb_mgm Введите команду show, чтобы просмотреть текущий рабочий статус: (Ниже приведен пример вывода статуса)
[root@mysql3 root]# /usr/bin/ndb_mgm
-- Кластер NDB -- Клиент управления --
ndb_mgm> покажи
Подключен к серверу управления по адресу: localhost:1186.
Конфигурация кластера
--------------------------
[ndbd(NDB)] 2 узла(ов)
id=2 @ 192.168.0.1 (Версия: 4.1.9, Группа узлов: 0, Мастер)
id=3 @ 192.168.0.2 (Версия: 4.1.9, Группа узлов: 0)
[ndb_mgmd(MGM)] 1 узел(и)
id=1 @ 192.168.0.3 (Версия: 4.1.9)
[mysqld(API)] 2 узла(ов)
идентификатор=4 (Версия: 4.1.9)
идентификатор=5 (Версия: 4.1.9)
ndb_mgm>
Если вышеуказанных проблем нет, начните тестирование MySQL сейчас: Обратите внимание, что в этом документе не устанавливается пароль root для MySQL. Рекомендуется самостоятельно установить пароль root MySQL для Server1 и Server2. На Сервере1:
# /usr/local/mysql/bin/mysql -u root -p
> использовать тест;
> СОЗДАТЬ ТАБЛИЦУ ctest (i INT) ENGINE = NDBCLUSTER;
> INSERT INTO ctest () ЗНАЧЕНИЯ (1);
> SELECT * FROM ctest; Вы должны увидеть возвращаемую информацию по 1 строке (возвращаемое значение 1). Если все вышеперечисленное в порядке, переключитесь на Сервер2 и повторите описанный выше тест, чтобы наблюдать эффект. В случае успеха выполните INSERT на Сервере2, а затем переключитесь обратно на Сервер1, чтобы проверить, работает ли он нормально. Если проблем нет, поздравляем с успехом! 6. Разрушающий контроль
============== Отключите сетевой кабель Сервера1 или Сервера2 и посмотрите, работает ли нормально другой сервер кластера (вы можете использовать запрос SELECT для проверки). После завершения теста снова вставьте сетевой кабель. Если у вас нет доступа к физическому серверу, то есть вы не можете отключить сетевой кабель, вы также можете протестировать следующим образом: На Сервере1 или Сервере2:
# ps aux | grep ndbd увидит всю информацию о процессе ndbd:
корень 5578 0,0 0,3 6220 1964 ? С 03:14 0:00 ndbd
корень 5579 0,0 20,4 492072 102828 R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd, а затем завершите процесс ndbd, чтобы уничтожить сервер кластера MySQL:
# kill -9 5578 После 5579 для проверки используйте запрос SELECT на другом сервере кластера. А если вы выполните команду show в терминале управления сервера узла управления, вы увидите статус поврежденного сервера. После завершения теста вам останется только перезапустить процесс ndbd поврежденного сервера:
#ndbdВнимание! Как упоминалось ранее, на данный момент нет необходимости добавлять параметр --initial! На этом этапе настройка кластера MySQL завершена!