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

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


mysql._nastrojka_replikacii_master-slave

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
mysql._nastrojka_replikacii_master-slave [2016/08/10 09:46] – [Шаг 3. Дамп базы] 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>
Строка 228: Строка 235:
 Не включили бинарные логи. Проверьте корректно ли задали параметр **log_bin** - важно, чтобы он был определён в секции **[mysql]**.  Не включили бинарные логи. Проверьте корректно ли задали параметр **log_bin** - важно, чтобы он был определён в секции **[mysql]**. 
  
 +----
 +
 +==== Last_IO_Error: error connecting to master... ====
 +Если **SHOW SLAVE STATUS** выводим примерно следующую ошибку:
 +<code mysql>
 +*************************** 1. row ***************************
 +               Slave_IO_State: Connecting to master
 +                  Master_Host: 10.1.0.11
 +                  Master_User: slave_user
 +                  Master_Port: 3306
 +                Connect_Retry: 60
 +              Master_Log_File: mysql-bin.000001
 +          Read_Master_Log_Pos: 419
 +               Relay_Log_File: mysql-relay-bin.000005
 +                Relay_Log_Pos: 529
 +        Relay_Master_Log_File: mysql-bin.000001
 +             Slave_IO_Running: Connecting
 +            Slave_SQL_Running: Yes
 +              Replicate_Do_DB: 
 +          Replicate_Ignore_DB: 
 +           Replicate_Do_Table: 
 +       Replicate_Ignore_Table: 
 +      Replicate_Wild_Do_Table: 
 +  Replicate_Wild_Ignore_Table: 
 +                   Last_Errno: 0
 +                   Last_Error: 
 +                 Skip_Counter: 0
 +          Exec_Master_Log_Pos: 419
 +              Relay_Log_Space: 1281
 +              Until_Condition: None
 +               Until_Log_File: 
 +                Until_Log_Pos: 0
 +           Master_SSL_Allowed: No
 +           Master_SSL_CA_File: 
 +           Master_SSL_CA_Path: 
 +              Master_SSL_Cert: 
 +            Master_SSL_Cipher: 
 +               Master_SSL_Key: 
 +        Seconds_Behind_Master: NULL
 +Master_SSL_Verify_Server_Cert: No
 +                Last_IO_Errno: 2003
 +                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_Error: 
 +  Replicate_Ignore_Server_Ids: 
 +             Master_Server_Id: 11
 +
 +</code>
 +то у 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
 +</code>
 +
 +Добавим правило на slave-сервере
 +<code bash>
 +iptables -I OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
 +</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.1470811574.txt.gz · Последнее изменение: 2016/08/10 00:00 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki