Pull to refresh

Настройка репликации в Mysql 5.6

MySQL *
После выхода mysql 5.6 с его GTID (global transaction identifier) репликация в mysql перестала быть кошмарным сном сисадмина и стала вполне рабочим инструментом. В инете есть некоторое количество информации по этому поводу, но вся она довольно разрозненная и не всегда доступна для понимания. По этому я решил сделать небольшую инструкцию-выжимку, больше для себя, но может и еще кому пригодится.


Настройка мастера
У меня довольно тепличные условия, и база пустая, дамп будем вливать после настройки

my.cnf

binlog-format=ROW

Бывает трех видов — STATEMENT, MIXED и ROW
В двух словах — statement пишет в бинлог по сути sql запросы. Преимущества — старый формат, оттестированный, лог небольшой, можно посмотреть запросы. Недостатки — проблемы с функциями и триггерами, запросы вида update user set a=1 order by rand(), а так же еще некоторые могут некорректно отрабатываться. ROW если совсем упрощенно — пишет в логи измененные бинарные данные. Преимущества — отлично логируются все виды запросов. Недостатки — огромный лог.Ну и mixed — промежуточный формат, который старается использовать statement, когда возможно, а когда нет — row. Говорят, что глючит на каких то очень сложных запросах. Именно его я и рискнул использовать

binlog-checksum=crc32
Новая фича mysql5.6, вроде как ускоряет работу бинлога

gtid-mode=on
Собственно и включает ту самую GTID mode репликацию

enforce-gtid-consistency=true
Запрещает все, что может поломать транзакции.

log-slave-updates=true
В родной документации написано: указывает подчиненному серверу, чтобы тот вел записи об обновлениях, происходящих на подчиненном сервере, в двоичном журнале. По умолчанию эта опция выключена. Ее следует включить, если требуется организовать подчиненные серверы в гирляндную цепь.

server-id = 1
Уникальный номер для каждого сервера

ну и не забываем указать что именно мы будем реплицировать —
replicate-do-db = mybase
replicate-do-table=mybase.mytable1
replicate-do-table=mybase.mytable2


После этого необходимо создать пользователя mysql с правами репликации. Например так GRANT replication slave ON *.* TO «replication»@'192.168.1.102' IDENTIFIED BY 'password';

На этом настройка мастера закончена. Вливаем дамп и в бой )

Настройка слейва

В простейшем варианте на слейв можно скопировать тот же конфиг, что и на мастере, единственное что — нужно сменить server_id, например на 2.

Перезапускаем слейв, и запускаем репликацию

change master to master_host='192.168.1.1", master_auto_position=1, Master_User=’replication’, master_password=’password';
start slave;

и любуемся

show slave status \G
Tags:
Hubs:
Total votes 18: ↑14 and ↓4 +10
Views 43K
Comments Comments 27