Поиск по сайту:

Как установить и настроить кластер MySQL на CentOS 7


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка узла управления
    1. А. Загрузите программное обеспечение кластера MySQL
    2. Б. Установка и удаление пакетов
    3. С. Установить MySQL-кластер
    4. Д. Настроить кластер MySQL
    5. Э. Запустите узел управления

    1. А. Войдите в систему как пользователь root и загрузите программное обеспечение MySQL Cluster.
    2. Б. Установка и удаление пакетов
    3. С. Установить MySQL-кластер
    4. Д. Настроить узел данных
    5. Э. Повторите шаги 2.A - 2.D на сервере db3.

    1. А. Войдите и загрузите MySQL Cluster
    2. Б. Установка и удаление пакетов
    3. С. Установить MySQL-кластер
    4. Д. Настройте узел SQL
    5. Э. Повторите шаги 3.A - 3.D на сервере db5.

    MySQL Cluster предназначен для предоставления базы данных, совместимой с MySQL, с высокой доступностью и низкой задержкой. Технология MySQL Cluster реализована с помощью механизмов хранения NDB (Network DataBase) и NDBCLUSTER и обеспечивает кластеризацию без совместного использования и автоматическое разделение для систем баз данных MySQL. В архитектуре без общего доступа каждый из узлов имеет свою память и диск, использование общего хранилища, такого как NFS, SAN, не рекомендуется и не поддерживается.

    Чтобы реализовать MySQL Cluster, мы должны установить три типа узлов. Каждый тип узла будет установлен на своем собственном сервере. Компоненты:

    1. Узел управления — NDB_MGMD/MGM
        Сервер управления кластером используется для управления другим узлом кластера. Мы можем создавать и настраивать новые узлы, перезапускать, удалять или создавать резервные копии узлов в кластере с узла управления.

    2. Узлы данных — NDBD/NDB
        Это уровень, на котором происходит процесс синхронизации и репликации данных между узлами.

    3. Узлы SQL — MySQLD/API
        Интерфейсные серверы, используемые приложениями для подключения к кластеру базы данных.

    В этом руководстве я проведу вас через установку и настройку кластера MySQL с CentOS 7. Мы настроим узел управления, два узла данных и два узла SQL.

    Предпосылки

    • Операционная система: CentOS 7, 64-разрядная версия.
    • 5 серверов CentOS или виртуальных машин. Я буду использовать имена хостов и IP-адреса, как показано ниже:

      • Узел управления
        db1=192.168.1.120
      • Узлы данных
        db2=192.168.1.121
        db3=192.168.1.122
      • Узлы SQL
        db4=192.168.1.123
        db5=192.168.1.124

      Шаг 1. Настройка узла управления

      Первым шагом является создание \Узел управления\ с CentOS 7 db1 и IP-адресом 192.168.1.120. Убедитесь, что вы вошли на сервер db1 как пользователь root.

      А. Загрузите программное обеспечение MySQL Cluster.

      Я скачаю его с сайта MySQL с помощью wget. Я использую «Red Hat Enterprise Linux 7/Oracle Linux 7 (x86, 64-разрядная версия), пакет RPM», который совместим с CentOS 7. Затем извлеките файл tar.

      cd ~
      wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
      tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

      B. Установка и удаление пакетов

      Перед установкой пакета rpm для MySQL Cluster необходимо установить perl-Data-Dumper, необходимый для сервера MySQL-Cluster. И вам нужно удалить mariadb-libs, прежде чем мы сможем установить MySQL Cluster.

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. Установите кластер MySQL

      Установите пакет MySQL Cluster с помощью этих команд rpm:

      cd ~
      rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

      Убедитесь, что нет ошибки.

      D. Настройте кластер MySQL

      Создайте новый каталог для файлов конфигурации. Я буду использовать каталог \/var/lib/mysql-cluster\.

      mkdir -p /var/lib/mysql-cluster

      Затем создайте новый файл конфигурации для управления кластером с именем \config.ini\ в каталоге mysql-cluster.

      cd /var/lib/mysql-cluster
      vi config.ini

      Вставьте конфигурацию ниже:

      [ndb_mgmd default]
      # Directory for MGM node log files
      DataDir=/var/lib/mysql-cluster
       
      [ndb_mgmd]
      #Management Node db1
      HostName=192.168.1.120
       
      [ndbd default]
      NoOfReplicas=2      # Number of replicas
      DataMemory=256M     # Memory allocate for data storage
      IndexMemory=128M    # Memory allocate for index storage
      #Directory for Data Node
      DataDir=/var/lib/mysql-cluster
       
      [ndbd]
      #Data Node db2
      HostName=192.168.1.121
       
      [ndbd]
      #Data Node db3
      HostName=192.168.1.122
       
      [mysqld]
      #SQL Node db4
      HostName=192.168.1.123
       
      [mysqld]
      #SQL Node db5
      HostName=192.168.1.124

      Сохраните файл и выйдите.

      E. Запустите узел управления

      Затем запустите узел управления с помощью следующей команды:

      ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini

      Результат должен быть похож на этот:

      MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
      2016-03-22 19:26:08 [MgmtSrvr] INFO     -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
      2016-03-22 19:26:08 [MgmtSrvr] INFO     -- Successfully created config directory

      Узел управления запущен, теперь вы можете использовать команду \ndb_mgm\ для мониторинга узла:

      ndb_mgm
      show

      Вы можете видеть, что узел управления был запущен с: mysql-6.6 и ndb-7.4.

      Шаг 2. Настройка узлов данных кластера MySQL.

      Мы будем использовать 2 сервера CentOS для узлов данных.

      1. db2=192.168.1.121
      2. db3=192.168.1.122

      A. Войдите в систему как пользователь root и загрузите программное обеспечение MySQL Cluster.

      Войдите на сервер db2 с помощью ssh:

      ssh 

      Затем загрузите пакет MySQL Cluster и распакуйте его:

      cd ~
      wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
      tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

      B. Установка и удаление пакетов

      Установите perl-Data-Dumper и удалите mariadb-libs:

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. Установите кластер MySQL

      Теперь мы можем установить пакеты MySQL Cluster для узлов данных с помощью следующих команд rpm:

      cd ~
      rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

      Убедитесь, что нет ошибки.

      D. Настройка узла данных

      Создайте новый файл конфигурации в каталоге /etc с помощью редактора vi:

      vi /etc/my.cnf

      Вставьте конфигурацию ниже:

      [mysqld]
      ndbcluster
      ndb-connectstring=192.168.1.120     # IP address of Management Node
       
      [mysql_cluster]
      ndb-connectstring=192.168.1.120     # IP address of Management Node

      Сохраните файл и выйдите.

      Затем создайте новый каталог для данных базы данных, которые мы определили в файле конфигурации узла управления \config.ini\.

      mkdir -p /var/lib/mysql-cluster

      Теперь запустите узел данных/ndbd:

      ndbd

      Результаты:

      2016-03-22 19:35:56 [ndbd] INFO     -- Angel connected to '192.168.1.120:1186'
      2016-03-22 19:35:56 [ndbd] INFO     -- Angel allocated nodeid: 2

      Узел данных db2 подключен к узлу управления с IP-адресом 192.168.1.120.

      E. Повторите шаги 2.A - 2.D на сервере db3.

      Поскольку у нас есть 2 узла данных, повторите шаги 2.A — 2.D на нашем втором узле данных.

      Шаг 3 — Настройка узла SQL

      Этот шаг содержит настройку узла SQL, который обеспечивает доступ приложения к базе данных. Мы используем 2 сервера CentOS для узлов SQL:

      1. db4=192.168.1.123
      2. db5=192.168.1.124

      A. Войдите в систему и загрузите MySQL Cluster

      Войдите на сервер db4 как пользователь root:

      ssh 

      И загрузите пакет MySQL Cluster:

      cd ~
      wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
      tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar

      B. Установка и удаление пакетов

      Установите perl-Data-Dumper и удалите библиотеки mariadb, конфликтующие с MySQL Cluster.

      yum -y install perl-Data-Dumper
      yum -y remove mariadb-libs

      C. Установите кластер MySQL

      Установите сервер MySQL Cluster, клиент и общий пакет с помощью команд rpm ниже:

      cd ~
      rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
      rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm

      D. Настройте узел SQL

      Создайте новый файл my.cnf в каталоге /etc:

      vi /etc/my.cnf

      И вставьте конфигурацию ниже:

      [mysqld]
      ndbcluster
      ndb-connectstring=192.168.1.120       # IP address for server management node
      default_storage_engine=ndbcluster     # Define default Storage Engine used by MySQL
       
      [mysql_cluster]
      ndb-connectstring=192.168.1.120       # IP address for server management node

      Сохраните файл и выйдите из редактора.

      Запустите узел SQL, запустив сервер MySQL:

      service mysql start

      E. Повторите шаги 3.A - 3.D на сервере db5.

      Повторите шаги 3.A - 3.D на втором сервере SQL (db5).

      Шаг 4. Мониторинг кластера

      Чтобы увидеть состояние кластера, мы должны войти в узел управления db1.

      ssh 

      Мы можем использовать команду ndb_mgm, чтобы увидеть статус кластера:

      ndb_mgm
      ndb_mgm> show

      Еще одна полезная команда:

      ndb_mgm -e "all status"
      ndb_mgm -e "all report memory"

      Шаг 5 — Тестирование кластера

      Чтобы выполнить тест на нашем новом кластере MySQL, мы должны войти в систему на серверах SQL Nodes db4 или db5.

      Войдите на сервер db4:

      ssh 

      Измените пароль MySQL по умолчанию, который хранится в файле \.mysql_secret\ в корневом каталоге:

      cd ~
      cat .mysql_secret

      это мой образец:

      # The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T

      Теперь измените пароль с помощью команды ниже:

      mysql_secure_installation

      Введите свой старый пароль mysql, а затем введите новый и нажмите клавишу ВВОД, чтобы подтвердить все.

      Если все сделано, вы можете войти в оболочку MySQL со своим паролем:

      mysql -u root -p

      После входа в систему создайте нового пользователя root с хостом \@\, чтобы мы могли получить доступ к MySQL извне.

      CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';

      Замените aqwe123 собственным безопасным паролем! Теперь вы можете увидеть нового пользователя root с хостом \@\ в списке пользователей MySQL:

      select user, host, password from mysql.user;

      И предоставьте новому пользователю root права на чтение и запись с удаленного узла:

      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;

      Теперь попробуйте создать новую базу данных на сервере db4, и вы также увидите базу данных на db5.

      Это всего лишь пример результата тестирования репликации данных кластера.

      Кластер MySQL успешно настроен на CentOS 7 с 5 серверными узлами.

      Заключение

      MySQL Cluster — это технология, обеспечивающая высокую доступность и избыточность для баз данных MySQL. Он использует NDB или NDBCLUSTER в качестве механизма хранения и обеспечивает кластеризацию без общего доступа и автоматическое разделение для баз данных MySQL. Для реализации кластера нам нужны 3 компонента: узел управления (MGM), узлы данных (NDB) и узлы SQL (API). Каждый узел должен иметь свою память и диск. Не рекомендуется использовать сетевое хранилище, такое как NFS. Чтобы установить MySQL Cluster в минимальной системе CentOS 7, нам нужно удалить пакет mariadb-libs, mariadb-libs конфликтует с MySQL-Cluster-server, и вы должны установить пакет perl-Data-Dumper, он необходим MySQL-Cluster. -сервер. Кластер MySQL легко установить и настроить на нескольких серверах CentOS.