mysql._nastrojka_replikacii_master-slave
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| mysql._nastrojka_replikacii_master-slave [2016/08/10 09:27] – [Шаг 1. Настройка Мастера] daniil | mysql._nastrojka_replikacii_master-slave [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| Master-Slave репликация в MySQL часто используется для обеспечения отказоустойчивости приложений. Кроме этого, она позволяет распределить нагрузку на базу данных между несколькими серверами (репликами). Читайте подробнее о применении репликации. | Master-Slave репликация в MySQL часто используется для обеспечения отказоустойчивости приложений. Кроме этого, она позволяет распределить нагрузку на базу данных между несколькими серверами (репликами). Читайте подробнее о применении репликации. | ||
| - | |||
| - | {{ : | ||
| Настройка репликации происходит в несколько шагов. Мы будем использовать два сервера с адресами: | Настройка репликации происходит в несколько шагов. Мы будем использовать два сервера с адресами: | ||
| Строка 16: | Строка 14: | ||
| ===== Шаг 1. Настройка Мастера ===== | ===== Шаг 1. Настройка Мастера ===== | ||
| На сервере, | На сервере, | ||
| - | * **server**-id - идентификатор сервера, | + | * **server-id** - идентификатор сервера, |
| * **log_bin** - путь к бинарному логу; | * **log_bin** - путь к бинарному логу; | ||
| - | * **binlog_do_db** - позволяет перечислить отдельные базы, для которых будет использоваться реплика. | + | * **binlog_do_db** - позволяет перечислить отдельные базы, для которых будет использоваться реплика.Если не инициализирована, |
| <code mysql> | <code mysql> | ||
| - | [mysql] | + | [mysqld] |
| # предлагаю указать последний октет IP-адреса | # предлагаю указать последний октет IP-адреса | ||
| server-id = 11 | server-id = 11 | ||
| - | log_bin = /var/log/ | + | log_bin = /var/lib/ |
| # название Вашей базы данных, | # название Вашей базы данных, | ||
| - | # binlog_do_db = newdatabase | + | binlog_do_db = newdatabase |
| </ | </ | ||
| Строка 94: | Строка 92: | ||
| ===== Шаг 3. Дамп базы ===== | ===== Шаг 3. Дамп базы ===== | ||
| Теперь необходимо сделать дамп базы данных: | Теперь необходимо сделать дамп базы данных: | ||
| + | * **%%--master-data%%** - включить в дамп информацию о бинарном логе мастер хоста; | ||
| + | * **-R** - включить в дамп процедуры и функции. | ||
| <code mysql> | <code mysql> | ||
| - | mysqldump -u root -p newdatabase > newdatabase.sql | + | mysqldump |
| </ | </ | ||
| Разблокируем таблицы в консоли mysql: | Разблокируем таблицы в консоли mysql: | ||
| <code mysql> | <code mysql> | ||
| + | USE newdatabase; | ||
| UNLOCK TABLES; | UNLOCK TABLES; | ||
| </ | </ | ||
| Строка 122: | Строка 123: | ||
| ===== Шаг 5. Настройка Слейва ===== | ===== Шаг 5. Настройка Слейва ===== | ||
| - | В настройках **<wrap hi> | + | В настройках **<wrap hi> |
| - | < | + | * **server-id** - идентификатор сервера, должен |
| - | # ID Слейва, удобно выбирать | + | * **log_bin** - путь к бинарному |
| - | server-id = 2 | + | * **log_slave_updates** - включает запись реляционных событий в собственный журнал на подчинённом сервере |
| + | * **binlog_do_db** - позволяет перечислить отдельные базы, для которых будет использоваться реплика.Если не инициализирована, то реплицируются все. | ||
| - | # Путь к relay логу | ||
| - | relay-log = / | ||
| - | # Путь к bin логу на Мастере | + | <code mysql> |
| + | server-id = 22 | ||
| log_bin = / | log_bin = / | ||
| + | relay_log = mysql-relay-bin | ||
| # База данных для репликации | # База данных для репликации | ||
| binlog_do_db = newdatabase | binlog_do_db = newdatabase | ||
| + | |||
| + | # если необходимо сделать базу доступной только для чтения | ||
| + | # read_only = 1 | ||
| </ | </ | ||
| Строка 142: | Строка 147: | ||
| Нам осталось включить репликацию, | Нам осталось включить репликацию, | ||
| + | Для запуска slave-сервера необходимо: | ||
| + | - указать параметры соединения (master-data). | ||
| + | - запустить репликацию. | ||
| + | |||
| + | Если дамп базы делали с параметром **%%--master-data%%**, | ||
| <code mysql> | <code mysql> | ||
| - | CHANGE MASTER TO MASTER_HOST=' | + | CHANGE MASTER TO MASTER_HOST=' |
| MASTER_LOG_FILE = ' | MASTER_LOG_FILE = ' | ||
| - | </mysdl> | + | </code> |
| - | После этого запускаем | + | Запуск репликации выполняется следующей командой: |
| <code mysql> | <code mysql> | ||
| Строка 199: | Строка 209: | ||
| ===== Траблшутинг ===== | ===== Траблшутинг ===== | ||
| + | |||
| + | ==== show master status возвращает пустой вывод ==== | ||
| + | Если | ||
| + | <code mysql> | ||
| + | SHOW MASTER STATUS; | ||
| + | </ | ||
| + | возвращает пустой результат, | ||
| + | <code mysql> | ||
| + | SHOW BINARY LOGS; | ||
| + | </ | ||
| + | Если на выходе получаем ошибку: | ||
| + | <code mysql> | ||
| + | ERROR 1381 (HY000) at line 1: You are not using binary logging | ||
| + | </ | ||
| + | то смотрим информацию ниже. | ||
| + | |||
| + | ---- | ||
| ==== ERROR 1381 (HY000) at line 1: You are not using binary logging ==== | ==== ERROR 1381 (HY000) at line 1: You are not using binary logging ==== | ||
| Строка 208: | Строка 235: | ||
| Не включили бинарные логи. Проверьте корректно ли задали параметр **log_bin** - важно, чтобы он был определён в секции **[mysql]**. | Не включили бинарные логи. Проверьте корректно ли задали параметр **log_bin** - важно, чтобы он был определён в секции **[mysql]**. | ||
| + | ---- | ||
| + | |||
| + | ==== Last_IO_Error: | ||
| + | Если **SHOW SLAVE STATUS** выводим примерно следующую ошибку: | ||
| + | <code mysql> | ||
| + | *************************** 1. row *************************** | ||
| + | | ||
| + | Master_Host: | ||
| + | Master_User: | ||
| + | Master_Port: | ||
| + | Connect_Retry: | ||
| + | Master_Log_File: | ||
| + | Read_Master_Log_Pos: | ||
| + | | ||
| + | Relay_Log_Pos: | ||
| + | Relay_Master_Log_File: | ||
| + | | ||
| + | Slave_SQL_Running: | ||
| + | Replicate_Do_DB: | ||
| + | Replicate_Ignore_DB: | ||
| + | | ||
| + | | ||
| + | Replicate_Wild_Do_Table: | ||
| + | Replicate_Wild_Ignore_Table: | ||
| + | | ||
| + | | ||
| + | | ||
| + | Exec_Master_Log_Pos: | ||
| + | Relay_Log_Space: | ||
| + | Until_Condition: | ||
| + | | ||
| + | Until_Log_Pos: | ||
| + | | ||
| + | | ||
| + | | ||
| + | Master_SSL_Cert: | ||
| + | Master_SSL_Cipher: | ||
| + | | ||
| + | Seconds_Behind_Master: | ||
| + | Master_SSL_Verify_Server_Cert: | ||
| + | Last_IO_Errno: | ||
| + | Last_IO_Error: | ||
| + | | ||
| + | | ||
| + | Replicate_Ignore_Server_Ids: | ||
| + | | ||
| + | |||
| + | </ | ||
| + | то у slave-сервера отсутствует возможность соединения с master-сервером. Причины: | ||
| + | - некорректные авторизационные данные пользователя репликации; | ||
| + | - закрыт порт MySQL для исходящих соединений на slave-сервере; | ||
| + | - закрыт порт MySQL для входящих соединений на master-сервере. | ||
| + | |||
| + | Проверяем соединение: | ||
| + | |||
| + | <code bash> | ||
| + | $ telnet 10.1.0.11 3306 | ||
| + | Trying 10.1.0.11... | ||
| + | telnet: connect to address 10.1.0.11: No route to host | ||
| + | </ | ||
| + | |||
| + | Добавим правило на slave-сервере | ||
| + | <code bash> | ||
| + | iptables -I OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT | ||
| + | </ | ||
| + | |||
| + | Добавим правило на master-сервере: | ||
| + | |||
| + | <code bash> | ||
| + | iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT | ||
| + | </ | ||
| + | |||
| + | Проверим возможность соединения: | ||
| + | <code bash> | ||
| + | $ telnet 10.1.0.11 3306 | ||
| + | Trying 10.1.0.11... | ||
| + | Connected to 10.1.0.11. | ||
| + | Escape character is ' | ||
| + | V | ||
| + | 5.5.47-MariaDB-log | ||
| + | 0P$_6/& | ||
| + | </ | ||
| ---- | ---- | ||
| ===== Источники ===== | ===== Источники ===== | ||
| - | * [[http:// | + | * [[http:// |
| + | * [[http:// | ||
mysql._nastrojka_replikacii_master-slave.1470810451.txt.gz · Последнее изменение: 2016/08/10 00:00 (внешнее изменение)
