Общие вопросы
Использование раздела Облачные VDS в панели управленияИспользование образа с панелью управления NetAngelsСпециальные образы VDS для быстрого развертывания (LAMP)Как клонировать виртуальные машиныГостевой агентПриватная сетьКак поправить настройки sshd?Как включить защиту от DDoS через CloudflareVDS как промежуточный сервер для выхода в интернетМонтирование диска в VDSУстановка сервера MinecraftЗащита от DDoS атакИнструкция по настройке исходящего SMTP для тарифов VDS StartСервер для веб-конференций, совещаний и онлайн лекцийВосстановление отдельных файлов в виде архиваНастройка сети на VDSУстановка Windows из ISO-образа на VDSSSH-доступ к хостинг-аккаунтуКак настроить отправку почты с сайтаАвтоматизация обновления SSL-сертификата через API NetAngelsВыпуск SSL сертификата на VDS c помощью утилиты dehydratedКак подключить SSL-сертификат для сайта на облачном VDS с панелью управления NetAngelsКонсольные команды. Работа с данными.Консольные команды. Работа с MySQL, создание и загрузка дампа.Консольные команды. Анализ состояния сервера
Установка и настройка MySQL/MariaDB на VDS. Создание кластеров MySQL

Установка и настройка MySQL/MariaDB на VDS. Создание кластеров MySQL

В данной статье рассмотрен процесс установки MySQL и MariaDB на пустой вновь созданный VDS, а так же как настройка репликации master-slave и master-master между двумя серверами MySQL/MariaDB.

Все действия в консоли сервера в рамках данной статьи производятся от имени суперпользователя root.

Показать все разделы

Установка MySQL

На свежеустановленном VDS в консоли запускаем команды:

# apt-get update
# apt-get install -y mysql-server mysql-client

В процессе установки вам будет предложено задать пароль для аккаунта root@localhost в MySQL.

Установка MariaDB

С основными отличиями MariaDB от MySQL можно ознакомиться на официальном сайте. Рассмотрим краткую выдержку:

  • Расширение механизмов хранения данных
  • Улучшенная производительность
  • Расширения и новые возможности
  • Улучшенное тестирование
  • Меньше ошибок и предупреждений
  • Настоящий Open Source проект

Если вам больше нравится MariaDB, а не MySQL, инструкции по установке MariaDB выглядят следующим образом.

Показать установку

Сначала пропишем настройки репозитория MariaDB (для Debian Wheezy):

# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# echo 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/debian wheezy main' > /etc/apt/sources.list.d/mariadb.list
# echo 'Package: *' > /etc/apt/preferences.d/mariadb
# echo 'Pin: origin ftp.osuosl.org' >> /etc/apt/preferences.d/mariadb
# echo 'Pin-Priority: 1000' >> /etc/apt/preferences.d/mariadb

Если вы ставите MariaDB на Ubuntu 12.04, то вторая строчка будет выглядеть так:

# echo 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu precise main' > /etc/apt/sources.list.d/mariadb.list

А для Ubuntu 14.04 так:

# echo 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main' > /etc/apt/sources.list.d/mariadb.list

Производим установку MariaDB:

# apt-get update
# apt-get install mariadb-server

Так же, как и в случае MySQL, на этом этапе вам будет предложено установить пароль для root@localhost.

Разрешаем доступ к MySQL/MariaDB с других серверов

По-умолчанию конфигурационный файл MySQL /etc/mysql/my.cnf содержит инструкции, предписывающие, что сервер будет доступен для подключения к нему только внутри вашего VDS на loopback-интерфейсе или через unix-сокет. Если вы планируете подключаться к MySQL с других серверов, а это вам точно потребуется для настройки репликации, необходимо внести изменения в my.cnf.

Показать настройку доступа
# nano /etc/mysql/my.cnf

В этом файле нужно найти строчку

bind-address           = 127.0.0.1

И поставить символ комментария (#) в начало этой строки, после чего сохранить изменения. Для применения изменений перезапускаем mysql:

# /etc/init.d/mysql restart

Устанавливаем пароль для доступа mysql-пользователем root к базе данных при подключении с других серверов:

# echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Passw0rd' WITH GRANT OPTION;" | mysql -u root -p

Здесь ключ -p в конце требуется указывать только если при установке MySQL вы задавали пароль для root@localhost.

Настраиваем репликацию master-slave

Для репликации master-slave вам потребуется два сервера с MySQL или MariaDB. Желательно, чтобы на обоих серверах стояла одна и та же версия СУБД: успешность и стабильность репликации между MySQL и MariaDB мы не проверяли. Мы подразумеваем, что для обоих серверв с MySQL/MariaDB проделаны все описанные выше шаги, включая разрешение доступа с других серверов.

Показать подробности настройки

Итак, настроим репликацию. Для этого отредактируем на обоих серверах файл конфигурации:

# nano /etc/mysql/my.cnf

Убедимся, что строка, начинающаяся с bind-address, закомментирована, то есть выглядит так:

#bind-address           = 127.0.0.1

Убираем значок комментария (#) в строке с server-id. Каждый сервер в кластере должен иметь уникальное значение server-id, например на master сервере указываем:

server-id               = 1

На slave сервере соответственно:

server-id               = 2

Также понадобится добавить или изменить параметры auto_increment_offset и auto_increment_increment.

На мастере:

auto_increment_offset = 1
auto_increment_increment = 2

На slave:

auto_increment_offset = 2
auto_increment_increment = 2

На master сервере раскомментируем строку log_bin:

log_bin                 = /var/log/mysql/mysql-bin.log

На обоих серверах раскомментируем строку binlog_do_db и впишем туда список баз данных, участвующих в репликации. Например, пусть у нас требуется настроить репликацию для БД с именем testdb. Тогда в binlog_do_db пишем:

binlog_do_db            = testdb

На slave сервере так же потребуется после binlog_do_db добавить строки:

relay-log = /var/log/mysql/mysql-relay-bin
relay-log-index = /var/log/mysql/mysql-relay-bin.index

Теперь сохраняем измененный конфигурационный файл my.cnf на обоих серверах и перезапускаем MySQL, чтобы изменения вступили в силу. Для этого в консоли обоих серверов выполняем:

# /etc/init.d/mysql restart

Добавляем на master сервере пользователя для репликации (вместо 193.107.0.2 следует подставить ip-адрес slave сервера):

mysql-master:~# echo "GRANT replication slave ON *.* TO 'replication'@'193.107.0.2' IDENTIFIED BY 'ReplicaPass';" | mysql -u root -p

Если на master сервере в базе testdb уже есть какие-то данные, то копируем их на slave. Для этого на master заходим в консоль MySQL:

mysql-master:~# mysql -u root -p

Блокируем БД от записи в командной строке mysql:

> FLUSH TABLES WITH READ LOCK;
> SET GLOBAL read_only = ON;

По завершении команд остаёмся в командной строке mysql и переводим клиента mysql в фоновый (background) режим, для чего на клавиатуре нажимаем сочетание клавиш ctrl+z. После этого мы оказываемся в командной строке bash:

[1]+  Stopped                 mysql
mysql-master:~#

Производим дамп базы данных testdb и возвращаем консоль mysql из фонового режима назад:

mysql-master:~# mysqldump testdb > testdb_dump.sql
mysql-master:~# fg

Мы снова оказались в консоли mysql. Смотрим статус мастера:

> show master status;

Нам показывается таблица вида:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | testdb       |                  |
+------------------+----------+--------------+------------------+

Из этой таблицы нам потребуются значения столбцов File и Position, в данном случае соответственно mysql-bin.000001 и 107. Запоминаем или записываем их и разрешаем запись в базу:

> SET GLOBAL read_only = OFF;

Завершаем сеанс работы с mysql на мастере (ctrl+d или командой exit в консоли mysql) и импортируем сделанный ранее дамп testdb_dump.sql в MySQL на slave сервере. Для этого в консоли slave сервера выполняем:

mysql-slave:~# mysqladmin create testdb

А в консоли master сервера:

mysql-master:~# mysql -uroot -p -h 193.107.0.2 testdb < testdb_dump.sql

Вместо 193.107.0.2 подставьте ip адрес slave сервера.

Теперь на slave сервере запускаем репликацию (в командной строке подставляем вместо 193.107.0.1 ip-адрес мастера, а в полях MASTER_LOG_FILE и MASTER_LOG_POS значения, запомненые ранее):

mysql-slave:~# echo "CHANGE MASTER TO MASTER_HOST = '193.107.0.1', MASTER_USER = 'replication', \
    MASTER_PASSWORD = 'ReplicaPass', MASTER_LOG_FILE = 'mysql-bin.000001', \
    MASTER_LOG_POS = 107;" | mysql -u root -p
mysql-slave:~# echo "START SLAVE;" | mysql -u root -p

Репликация запущена. Посмотреть статус репликации можно командой:

mysql-slave:~# echo "SHOW SLAVE STATUS\G" | mysql -uroot -p

Репликация мастер-мастер заключается в симметричной настройке репликации мастер-слейв. То есть, в данном случае потребуется добавить репликацию со слейва на мастер точно таким же способом.

Тарифы на облачные VDS и VPS

С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
18 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты