Статьи

Руководство для начинающих по репликации MySQL в Amazon EC2

В этой статье мы рассмотрим, как настроить репликацию MySQL в Amazon EC2. Это довольно простое введение в репликацию, предназначенное для начинающих. Мы расскажем, как запустить экземпляр Amzon, установить лампу и настроить репликацию.

Что такое репликация

Репликация — это не что иное, как создание нескольких копий одного и того же сервера баз данных или выбранных баз данных или только выбранных таблиц. Прежний называется master, а позже — slave-серверы. Мы также можем иметь несколько главных серверов. Репликация может использоваться для обеспечения высокой доступности, масштабируемости, а также для повышения производительности приложений.

MySQL поддерживает одностороннюю репликацию, при которой обновления на главных серверах будут отправляться на подчиненные серверы, а не в обратном направлении. Если нам нужна двухсторонняя синхронизация, нам может потребоваться перейти на кластеры. Данные на главном сервере будут обновляться клиентскими приложениями. Наша цель — обновить эти изменения и на нашем подчиненном сервере. Чтобы репликация работала, мы должны включить двоичное ведение журнала на главном сервере. Основным механизмом репликации является передача журналов от главного к подчиненному. Когда на главном сервере выполняется операция DML, эта информация добавляется в двоичный журнал. Наши подчиненные серверы получат эту информацию и обновят подчиненные базы данных.

Запуск экземпляров EC2

Прежде чем перейти к репликации, нам нужно иметь два экземпляра EC2. Я обычно получаю доступ к aws через консоль управления AWS . Войдите в консоль управления. Перейдите на вкладку EC2 и нажмите кнопку Launch instance. В списке AMI сообщества выберите свежий образ Ubuntu 10.10 и запустите экземпляр.

Запустите новый экземпляр

Запустите новый экземпляр

Сделайте то же самое, чтобы запустить еще один экземпляр. Подключитесь к обоим экземплярам, ​​используя ssh в двух терминалах.

ssh -i your_key.pem [email protected]

Теперь нам нужно установить mysql на обоих серверах. Я люблю устанавливать лампы, чем просто MySQL. Tasksel — хорошая утилита для установки многих приложений. Итак, первая интал тасксел

sudo apt-get install tasksel

Запустите утилиту tasksel, выберите лампу и установите. Он автоматически установит все нужные нам пакеты. Теперь наша среда готова. Перейдем к части репликации.

Важные параметры для репликации

идентификатор сервера — этот параметр используется в репликации для однозначной идентификации главного и подчиненных устройств. Каждому серверу будет присвоено уникальное значение этому параметру.
log_bin — этот параметр указывает базовое имя двоичного файла журнала.
binlog_do_db — Определяет имена базы данных для регистрации. Мы можем указать несколько баз данных или оставить этот параметр пустым для регистрации всех баз данных;
binlog_ignore_db — Определяет базы данных, которые должны быть исключены из журнала. Пропускная
сеть — Это еще один важный параметр, который вы должны прокомментировать. В противном случае ваш главный сервер не позволит работать в сети.
связывать-адрес— Адрес, к которому вы хотите привязать свой сервер. Оставьте его прокомментированным или укажите 0.0.0.0 (будет принимать запросы на подключение со всех адресов).
Теперь перейдем к реальной части репликации. Прежде всего мы настроим мастер-сервер. Я предполагаю, что ваши два сервера работают в одном регионе. Отредактируйте комментарий к файлу конфигурации mysql (my.cnf), если он есть, или добавьте следующую строку

server-id		= 1

Удостоверьтесь, что пропускает сеть , прокомментирована.
Для bind-адреса либо укажите публичный IP-адрес первого экземпляра, либо прокомментируйте его. Прокомментируйте следующую строку или добавьте его, если он не существует.

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

Хорошо, теперь наш главный сервер почти готов. Вы также можете указать binlog_do_db, если хотите выполнять репликацию только для выбранных баз данных.

binlog_do_db= my_database

Перезапустите mysql и войдите на сервер.

ubuntu@ip-10-117-45-207:~$ sudo service mysql restart
ubuntu@ip-10-117-45-207:~$ mysql -u root -p

Создать пользователя репликации

Рекомендуется создать отдельного пользователя для репликации MySQL, к которому подчиненные могут проходить аутентификацию. Подчиненные будут подключаться к мастеру, используя учетные данные этого пользователя.

mysql> GRANT  REPLICATION SLAVE ON *.* TO 'repusername' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql>SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000019 |      106 |              |                  |
+------------------+----------+--------------+------------------+

Мы почти закончили настройку нашего главного сервера. Теперь подключитесь ко второму экземпляру в другом терминале. Отредактируйте файл my.cnf, чтобы внести следующие изменения.

Server-id		= 2
log_bin			= /var/log/mysql/mysql-bin.log (Not mandatory)

Перезапустите MySQL здесь также

ubuntu@domU-12-31-39-04-55-CF:~$ sudo service mysql restart

Нам нужно сообщить нашему подчиненному серверу детали главного сервера, такие как имя хоста, имя пользователя и пароль репликации и т. Д. Здесь мы будем использовать amazon private dns в качестве основного имени хоста. Посмотрите скриншот ниже, чтобы найти свой личный DNS. Другие вещи, которые нужны подчиненному серверу, — это имя главного журнала и позиция журнала, которые мы получили, введя show master status на главном сервере. Теперь мы можем подключить подчиненное устройство к мастеру, введя следующую команду

Частный DNS Amazon

Частный DNS Amazon

mysql> CHANGE MASTER TO
	MASTER_HOST = 'domU-12-31-39-04-55-CF.compute-1.internal'
	MASTER_USER ='repusername',
	MASTER_PASSWORD='password',
	MASTER_LOG_FILE = 'mysql-bin.000019',
	MASTER_LOG_POS =106;
mysql> START SLAVE;

Теперь на главном хосте выполните следующую команду, чтобы снять блокировку.

mysql> UNLOCK TABLES;

Теперь давайте создадим базу данных и таблицу в master для проверки репликации.

mysql> CREATE DATABASE replication_test;

на подчиненном сервере, когда вы вводите команду show database, она также перечислит нашу новую базу данных. Точно так же каждое изменение, которое мы вносим в master, будет перенесено и в slave.

Резюме

В этой статье я попытался продемонстрировать как можно более простые вещи. В любой момент, если вы не получили его, или я ошибаюсь, пожалуйста, не стесняйтесь добавлять их в качестве комментария.

 

КОНЕЦ