Инструменты пользователя

Инструменты сайта


mysql._nastrojka_replikacii_master-slave

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
mysql._nastrojka_replikacii_master-slave [2016/08/10 09:56] – [ERROR 1381 (HY000) at line 1: You are not using binary logging] daniilmysql._nastrojka_replikacii_master-slave [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 4: Строка 4:
  
 Master-Slave репликация в MySQL часто используется для обеспечения отказоустойчивости приложений. Кроме этого, она позволяет распределить нагрузку на базу данных между несколькими серверами (репликами). Читайте подробнее о применении репликации. Master-Slave репликация в MySQL часто используется для обеспечения отказоустойчивости приложений. Кроме этого, она позволяет распределить нагрузку на базу данных между несколькими серверами (репликами). Читайте подробнее о применении репликации.
- 
-{{ :mysql.master.slave.jpg?nolink |}} 
  
 Настройка репликации происходит в несколько шагов. Мы будем использовать два сервера с адресами: Настройка репликации происходит в несколько шагов. Мы будем использовать два сервера с адресами:
Строка 16: Строка 14:
 ===== Шаг 1. Настройка Мастера ===== ===== Шаг 1. Настройка Мастера =====
 На сервере, который будет выступать мастером, необходимо внести правки в **<wrap hi>my.cnf</wrap>** : На сервере, который будет выступать мастером, необходимо внести правки в **<wrap hi>my.cnf</wrap>** :
-  * **server**-id - идентификатор сервера, должен быть уникален. Лучше не использовать 1;+  * **server-id** - идентификатор сервера, должен быть уникален. Лучше не использовать 1;
   * **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/mysql/mysql-bin.log+log_bin = /var/lib/mysql/mysql-bin.log
  
 # название Вашей базы данных, которая будет реплицироваться # название Вашей базы данных, которая будет реплицироваться
Строка 125: Строка 123:
  
 ===== Шаг 5. Настройка Слейва ===== ===== Шаг 5. Настройка Слейва =====
-В настройках **<wrap hi>my.cnf</wrap>** на Слейве необходимо указать такие параметры: +В настройках **<wrap hi>my.cnf</wrap>** на Слейве указываем следующие параметры: 
-<code> +  * **server-id** - идентификатор сервера, должен быть уникален. Лучше не использовать 1. Это единственный обязательный параметр; 
-# ID Слейва, удобно выбирать следующим числом после Мастера +  * **log_bin** - путь к бинарному логу. Оптимально указывать по аналогии с мастером;   
-server-id = 2+  * **log_slave_updates** - включает запись реляционных событий в собственный журнал на подчинённом сервере 
 +  * **binlog_do_db** - позволяет перечислить отдельные базы, для которых будет использоваться реплика.Если не инициализирована, то реплицируются все.
  
-# Путь к relay логу 
-relay-log = /var/log/mysql/mysql-relay-bin.log 
  
-# Путь к bin логу на Мастере+<code mysql> 
 +server-id = 22
 log_bin = /var/log/mysql/mysql-bin.log log_bin = /var/log/mysql/mysql-bin.log
 +relay_log = mysql-relay-bin
  
 # База данных для репликации # База данных для репликации
 binlog_do_db = newdatabase binlog_do_db = newdatabase
 +
 +# если необходимо сделать базу доступной только для чтения
 +# read_only = 1
 </code> </code>
  
Строка 145: Строка 147:
 Нам осталось включить репликацию, для этого необходимо указать параметры подключения к мастеру. В консоли mysql на Слейве необходимо выполнить запрос: Нам осталось включить репликацию, для этого необходимо указать параметры подключения к мастеру. В консоли mysql на Слейве необходимо выполнить запрос:
  
 +Для запуска slave-сервера необходимо:
 +  - указать параметры соединения (master-data). 
 +  - запустить репликацию.
 +
 +Если дамп базы делали с параметром **%%--master-data%%**, то первый пункт можно пропустить - информация будет указана при восстановлении дампа. В противном случае выполняем:
 <code mysql> <code mysql>
-CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password',+CHANGE MASTER TO MASTER_HOST='10.1.0.11', MASTER_USER='slave_user', MASTER_PASSWORD='password',
 MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
-</mysdl>+</code>
  
-После этого запускаем репликацию на Слейве:+Запуск репликации выполняется следующей командой:
  
 <code mysql> <code mysql>
Строка 235: Строка 242:
 *************************** 1. row *************************** *************************** 1. row ***************************
                Slave_IO_State: Connecting to master                Slave_IO_State: Connecting to master
-                  Master_Host: 10.1.153.122 +                  Master_Host: 10.1.0.11 
-                  Master_User: replic-user+                  Master_User: slave_user
                   Master_Port: 3306                   Master_Port: 3306
                 Connect_Retry: 60                 Connect_Retry: 60
Строка 269: Строка 276:
 Master_SSL_Verify_Server_Cert: No Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 2003                 Last_IO_Errno: 2003
-                Last_IO_Error: error connecting to master 'replic-user@10.1.153.122:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '10.1.153.122' (113)+                Last_IO_Error: error connecting to master 'slave_user@10.1.0.11:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '10.1.0.11' (113)
                Last_SQL_Errno: 0                Last_SQL_Errno: 0
                Last_SQL_Error:                 Last_SQL_Error: 
   Replicate_Ignore_Server_Ids:    Replicate_Ignore_Server_Ids: 
-             Master_Server_Id: 122+             Master_Server_Id: 11
  
 </code> </code>
-то проверьте возможность соединения slave-сервера с мастером вероятней всего заблокирован порт, который слушает MySQL (по умолчанию **3306**)+то у slave-сервера отсутствует возможность соединения с master-сервером. Причины: 
 +  некорректные авторизационные данные пользователя репликации; 
 +  - закрыт порт MySQL для исходящих соединений на slave-сервере; 
 +  - закрыт порт MySQL для входящих соединений на master-сервере. 
 + 
 +Проверяем соединение: 
 <code bash> <code bash>
-$ telnet 10.1.153.122 3306 +$ telnet 10.1.0.11 3306 
-Trying 10.1.153.122... +Trying 10.1.0.11... 
-telnet: connect to address 10.1.153.122: No route to host+telnet: connect to address 10.1.0.11: No route to host 
 +</code>
  
 +Добавим правило на slave-сервере
 +<code bash>
 +iptables -I OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
 </code> </code>
  
 +Добавим правило на master-сервере:
 +
 +<code bash>
 +iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
 +</code>
 +
 +Проверим возможность соединения:
 +<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/&�}K;%Gt7Po\aQmysql_native_password
 +</code>
 ---- ----
  
 ===== Источники ===== ===== Источники =====
-  * [[http://ruhighload.com/post/%D0%9A%D0%B0%D0%BA+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C+MySQL+Master-Slave+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8E|Как настроить MySQL Master-Slave репликацию?]]+  * [[http://ruhighload.com/post/Как настроить MySQL Master-Slave репликацию|Как настроить MySQL Master-Slave репликацию?]] 
 +  * [[http://oz.by/books/more10132838.html?sbtoken=b229c4880c7d8212efab52af6c36655f | MySQL. Оптимизация производительности ]]
mysql._nastrojka_replikacii_master-slave.1470812163.txt.gz · Последнее изменение: 2016/08/10 00:00 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki