Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

Установка и настройка 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

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище