Настройка Master-Master репликации MySQL.

Данное руководство описывает порядок настройки master - master репликации баз данных на основе MySQL. Все шаги выполняются с учетом того, что в данный момент на сервере №1 база находится по нагрузкой, в неё могут также вносится изменения, поэтому нельзя допустить утерю данных.

Для примера предположим, что у нас есть два сервера (Сервер№1 и Сервер№2) с следующими характеристиками:

Master–Master Репликация: Характеристики серверов и схема взаимодействия.Master–Master Репликация: Характеристики серверов и схема взаимодействия.

Весь процесс настройки можно условно разделить на два этапа:

• На первом этапе мы организуем master-slave репликацию, где главным будет Сервер№1, а подчиненным будет Сервер№2;
• На втором этапе мы организовываем обратную master-slave репликацию, и сервера начинают собирать информацию из логов друг друга.



Первый этап:
Для настройки master-slave репликации необходимо сделать следующее:

На Сервер№1 – настраиваем главный мастер сервер:

1. Остановить MySQL сервер;
2. Перейти в папку %Путь к MySQL%\MySQL Server 5.0\data\ и скопировать в временную папку его содержимое либо добавить в архив. Конкретно нам нужно скопировать папки с необходимыми базами данных, а также файл ibdata1. В случае, если используются только базы данных типа MyISAM, то достаточно копирования только папок, а файла ibdata1 не будет.
3. Перейти в папку %Путь к MySQL%\MySQL Server 5.0\ и добавить в файл my.ini следующее:


auto_increment_increment и auto_increment_offset устанавливают для данного сервера назначение автоматически только нечетных id. Этим самым мы избежим добавление с одинаковым ID на разные сервера записей, и при синхронизации данные не перетрутся;
log-bin - устанавливает название файла лога транзакций;
server-id – уникально идентифицирует сервер среди участников репликации;
slave-compressed – включение сжатия потока;
binlog-do-db – указывают базы, по которым вести лог транзакций.

4. Стартуем MySQL сервер;
5. Создадим учетную запись с правами на рапликацию:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.1.6' IDENTIFIED BY 'password';

На Сервер№2 – настраиваем подчиненный сервер:

6. Остановить сервер.
7. Распаковать архив с базами данных Сервер№1 в соответствующую папку %Путь к MySQL%\MySQL Server 5.0\data\ с заменой существующих.
8. Добавить в my.ini следующие записи:


master-host - Имя хоста головного сервера или IP-адрес для репликации.
master-user - Имя пользователя, которое подчиненный сервер будет использовать для аутентификации при подсоединении к головному серверу.
master-password - Пароль, который будет использоваться при подсоединении подчиненного сервера к головному серверу.
master-port - Порт, который слушает головной сервер.
master-connect-retry - Время ожидания в секундах для потока подчиненного сервера перед повторением попытки установить связь с головным сервером в случае прекращения работы головного сервера или потери связи. По умолчанию - 60.
replicate-do-db - Сообщает подчиненному серверу, что реплицироваться должна только указанная база данных.

9. Запустить MySQL сервер;



Второй этап:
Для настройки master-master репликации необходимо сделать следующее:

На Сервер№2 – настраиваем главный мастер сервер параллельно с рабочим подчинённым :

10. Создадим учетную запись с правами на рапликацию:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.1.5' IDENTIFIED BY 'password';

11. Добавить в my.ini следующие записи:

12. Перезапустим MySQL сервер.

На Сервер№1 – настраиваем подчиненный сервер параллельно с рабочим главным:

13. Добавить в my.ini следующие записи:

14. Перезапустим MySQL сервер.

После этого master-master репликации работает. В случае, если очередная репликация не будет произведена из за ошибки, в логах появится соответствующая запись.

Вывод из Master-Master репликации MySQL серверов.

В случае, если решено уйти от схемы кластеризации и завершить репликацию между серверами, необходимо сделать следующее:
Выполнить в консоли mysql на обоих серверах поочередно, с начала на Server#1 потом на Server#2 каждый шаг:

1. stop slave;
2. reset slave;
3. reset master;
4. Закомментировать блоки # Master records и # Slave records в my.ini;
5. В случае, если в дальнейшем клиентские запросы будет обрабатывать только один из серверов, то необходимо также закомментировать или убрать auto_increment_increment и auto_increment_offset. Если планируется их дальнейшая репликация, то указанные записи убирать не стоит, т.к. при последующем включении репликации возможны ошибки и завершение её из за дублирования uid;
6. Перезапустить демона MySQL.

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Немного инфы еще:

MASTER - сервер

ОпцияОписание
log-bin=filenameЗаписывать в двоичный файл регистрации модификаций filename. Обратите внимание, что, если Вы задаете этот параметр с расширением (например, log-bin=/mysql/logs/replication.log) версии до 3.23.24 не будут работать корректно, если Вы делаете FLUSH LOGS. Проблема была исправлена в версии 3.23.25. Если Вы используете этот вид имени файла регистрации, команды FLUSH LOGS будут игнорироваться. Чтобы очистить файл регистрации, выполните FLUSH MASTER на главной системе и FLUSH SLAVE на всех подчиненных. В версии 3.23.26 и в более поздних Вы должны использовать RESET MASTER и RESET SLAVE
log-bin-index=filenameПоскольку пользователь мог бы выдавать команду FLUSH LOGS Вы должны знать, который файл регистрации является в настоящее время активным. Эта информация сохранена в двоичном индексном файле регистрации. Значение по умолчанию `hostname`.index. Вы можете использовать эту опцию, если Вы хотите переопределить значение. Например: log-bin-index=db.index.
sql-bin-update-sameЕсли задано, то установка SQL_LOG_BIN автоматически установит в такое же значение и SQL_LOG_UPDATE и наоборот.
binlog-do-db=database_name Сообщает главной системе, что она должна регистрировать модификации в двоичном файле регистрации, если текущая база данных 'database_name'. Все прочие базы данных игнорируются. Обратите внимание, что, если Вы используете эту опцию, Вы должны гарантировать, что делаете модификации только в текущей базе данных. Например: binlog-do-db=some_database.
binlog-ignore-db=database_name Сообщает главной системе, что модификации, где текущая база данных является database_name, НЕ должны быть сохранены в двоичном файле регистрации. Обратите внимание, что, если Вы используете эту опцию, Вы должны гарантировать, что делаете модификации только в текущей базе данных. Например: binlog-ignore-db=some_database
slave-compressed = 1 разрешить сжимать поток

SLAVE - сервер

Следующая таблица показывает параметры, которые Вы можете использовать для подчиненной (SLAVE) системы:

ОпцияОписание
master-host=host Имя хоста или IP-адрес главной системы. Если не задано, подчиненный не будет работать вообще. Например: master-host=joker.botik.ru.
master-user=username Пользователь под именем которого надо связываться с главной системой. Пользователь должен иметь привилегию FILE. Если не задано, принимается пользователь test. Например: master-user=alexmv.
master-password=password Пароль для пользователя из предыдущего параметра. По умолчанию принимается пустой пароль. Например: master-password=pupsik.
master-port=portnumber Порт для связи с главной системой. Если не задан, принимается компилируемая установка MYSQL_PORT. Если Вы не меняли опции configure, это будет 3306. Например: master-port=3306.
master-connect-retry=seconds Число секунд, которые подчиненный будет бездействовать перед повторением попытки восстановить связь с главной системой в случае ее обрыва. Значение по умолчанию 60. Например: master-connect-retry=60.
master-sslВключить поддержку SSL. Например: master-ssl.
master-ssl-keyИмя файла с ключем SSL для главной системы. Например: master-ssl-key=SSL/master-key.pem.
master-ssl-certИмя файла с сертификатом SSL для главной системы. Например: master-ssl-key=SSL/master-cert.pem.
master-info-file=filenameРасположение файла, который хранит данные о ходе процесса репликации. Значение по умолчанию master.info в каталоге данных. Например: master-info-file=master.info.
replicate-do-table=db_name.table_nameСообщает, чтобы подчиненная система ограничила репликацию определенной таблицей. Чтобы определять больше, чем одну таблицу, используйте директиву несколько раз, по одному для каждой таблицы. Это будет работать для модификаций с перекрестной базой данных, в отличие от replicate-do-db. Например: replicate-do-table=some_db.some_table.
replicate-ignore-table=db_name.table_name Сообщает, чтобы подчиненная система не копировала определенную таблицу. Чтобы определять больше, чем одну таблицу, используйте директиву несколько раз, по одному для каждой таблицы. Это будет работать для модификаций с перекрестной базой данных, в отличие от replicate-ignore-db. Например: replicate-ignore-table=db_name.some_table.
replicate-wild-do-table=db_name.table_name Сообщает, чтобы подчиненная система ограничила репликацию таблицами, которые соответствуют определенному образцу подстановочных знаков. Чтобы определять больше, чем одну таблицу, используйте директиву несколько раз, по одному для каждой таблицы. Это будет работать для модификаций с перекрестной базой данных. Например: replicate-wild-do-table=foo%.bar% будет копировать только модификации к таблицам во всех базах данных, которые начинаются с foo и только для таблиц, имена которых начинаются с bar.
replicate-wild-ignore-table=db_name.table_name Противоположно предыдущей опции.
replicate-ignore-db=database_nameСообщает, чтобы подчиненная система не копировала определенную базу данных. Чтобы определять больше, чем одну базу, используйте директиву несколько раз, по одному для каждой. Эта опция не будет работать, если Вы используете перекрестные модификации базы данных. Если Вы нуждаетесь в перекрестных модификациях базы данных, следует удостовериться, что Вы имеете версию 3.23.28 или позже, и использовать replicate-wild-ignore-table=db_name.%. Например: replicate-ignore-db=some_db.
replicate-do-db=database_nameСообщает, чтобы подчиненная система ограничила репликацию определенной базой данных. Чтобы определять больше, чем одну базу, используйте директиву несколько раз, по одному для каждой. Эта опция не будет работать, если Вы используете перекрестные модификации базы данных, то есть под запретом оказываются запросы типа UPDATE some_db.some_table SET foo='bar' при выборе иной база или не выбрано никакой. Если Вы нуждаетесь в перекрестных модификациях базы данных, следует удостовериться, что Вы имеете версию 3.23.28 или позже, и использовать replicate-wild-do-table=db_name.%. Например: replicate-do-db=some_db.
log-slave-updatesСообщает, чтобы подчиненная система регистрировала модификации из подчиненного процесса в двоичном файле регистрации. По умолчанию Off.
replicate-rewrite-db=from_name->to_name Обновлять базу данных с именем, отличным от первоначального. Например: replicate-rewrite-db=master_db_name->slave_db_name.
skip-slave-startСообщает, чтобы подчиненная система не запускалась как подчиненная. Пользователь может запустить это позже с помощью SLAVE START.
slave_read_timeout=#Число секунд, которое надо ждать перед разрывом связи.

Команды SQL, относящиеся к репликации

Реликация может контролироваться через интерфейс SQL.

КомандаОписание
SLAVE STARTЗапустить подчиненный (Slave) поток.
SLAVE STOPВыключить подчиненный (Slave) поток.
SET SQL_LOG_BIN=0Отключает регистрацию модификации, если пользователь имеет привилегию process.
SET SQL_LOG_BIN=1Заново запускает регистрацию модификации, если пользователь имеет привилегию process.
SET SQL_SLAVE_SKIP_COUNTER=nПропустить следующие n событий от главной системы. Работает только, если подчиненный не запущен, иначе выдает ошибку. Полезно при ремонте сбоев.
RESET MASTERУдаляет все двоичные файлы регистрации, перечисленные в индексном файле, очищая индексный файл binlog. В версиях до 3.23.26 называлась FLUSH MASTER
RESET SLAVEПодчиненный забывает позицию репликации в главных файлах регистрации. В версиях до 3.23.26 называлась FLUSH SLAVE
LOAD TABLE tblname FROM MASTERЗагрузить копию таблицы с главной системы на подчиненную
CHANGE MASTER TO master_def_listИзменяет параметры для значений, определенных в master_def_list и перезапускает подчиненный процесс. master_def_list представляет собой разделенный запятыми список master_def, где master_def один из элементов следующего перечня: MASTER_HOST, MASTER_USER, MASTER_PASSWORD, MASTER_PORT, MASTER_CONNECT_RETRY, MASTER_LOG_FILE, MASTER_LOG_POS. Например:
CHANGE MASTER TO
  MASTER_HOST='master2.mycompany.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master2-bin.001',
  MASTER_LOG_POS=4;
Вы должны определить только значения, которые должны быть изменены. Значения, которые Вы опускаете, останутся теми же самыми, за исключением того случая, когда Вы изменяете главный компьютер или порт. В этом случае подчиненный считает, что, так как Вы соединяетесь с другим главным компьютером или иным портом, главная система поменялась. Следовательно, старые значения файла регистрации и позиции больше неприменимы и будут автоматически сброшены к пустой строке и 0 соответственно (это значения начала). Обратите внимание, что, если Вы перезапускаете подчиненный сервер, то он будет помнить последний главный сервер. Если это не нужно, Вы должны удалить файл master.info прежде, чем выполнить перезапуск, и подчиненный будет читать данные на главный сервер из файла my.cnf или из командной строки.
SHOW MASTER STATUSОбеспечивает информацию состояния binlog главной системы.
SHOW SLAVE STATUSОбеспечивает информацию состояния существенных параметров подчиненной системы.
SHOW MASTER LOGS Вносит в список двоичные протоколы на главной системе. Доступно с версии 3.23.28. Вы должны использовать эту команду до PURGE MASTER LOGS TO.
PURGE MASTER LOGS TO lognameУдаляет все файлы регистрации репликаций, которые перечислены в индексе файла регистрации как находящиеся до определенного файла регистрации, и затем удаляет их из индекса файла регистрации так, чтобы данный файл регистрации теперь стал первым. Доступно с версии 3.23.28. Пример:
PURGE MASTER LOGS TO mysql-bin.010
Эта команда ничего не будет делать, если Вы имеете дело с активным подчиненным сервером, который в настоящее время читает один из файлов регистрации, которые Вы пробуете удалять. Команда безопасна для выполнения в то время, когда все подчиненные копируют данные. Сначала выясните, какие файлы обрабатывает каждый подчиненный командой SHOW SLAVE STATUS, затем выясните очередь протоколов на главной системе командой SHOW MASTER LOGS, найдите самый старый протокол на подчиненных, зарезервируйте все подготовленные к удалению протоколы, если считаете это необходимым, и удалите все старые протоколы.

А вот то, что можно делать с my.ini....

4.10.5. Опции репликации в файле my.cnf

Для использования репликации рекомендуется MySQL 3.23.33 или выше. С более
ранними версиями тоже можно работать, но в них имеются ошибки и
отсутствуют некоторые возможности. Если у вас не самая последняя версия
MySQL, то в ней может не оказаться некоторых из упомянутых в данном
разделе опций. Все опции, появившиеся в ветви 4.0, сопровождаются
примечанием, в котором это указано. В противном случае, если интересующая
вас опция не присутствует в версии 3.23, но действительно необходима,
пожалуйста, замените версию на самую новую ветвь 3.23.

Не следует забывать о том, что ветвь 4.0 все еще находится в стадии
альфа-разработки, поэтому некоторые функции могут работать не так гладко,
как хотелось бы. Новые возможности, появившиеся в 4.0, рекомендуется
использовать так, чтобы в случае возникновения проблемы не нарушилась
работа приложения.

Как на головном, так и на подчиненном серверах нужно использовать опцию
server-id. Она устанавливает уникальный идентификатор репликации. Нужно
выбрать уникальное значение из диапазона от 1 до 2^32-1 для каждого
головного и подчиненного сервера, например: server-id=3

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



Опция Описание
log-bin=filename Указывает местоположение двоичного журнала обновлений, в котором будут вестись
записи. Обратите внимание: если передаваемый параметр имеет расширение
(например log-bin=/mysql/logs/replication.log), то в случае вызова
команды FLUSH LOGS версии MySQL ниже 3.23.24 не будут правильно работать
во время репликации. Эта проблема устранена в версии 3.23.25. Теперь, если
используется такой способ определения имени журнала, команда FLUSH LOGS
для двоичных журналов будет игнорироваться. Для очистки журнала выполните
команду FLUSH MASTER и не забудьте запустить команду FLUSH SLAVE
на всех подчиненных серверах. В версии 3.23.26 или выше нужно использовать для
этого команды RESET MASTER и RESET SLAVE
Вы можете использовать эту опци. если вы хотите иметь имя, которое будет независимо
от имени хоста (может быть полезно, скажем, если вы переименуете ваш сервер в один прекрасный день).
log-bin-index=filename Так как пользователь может выполнять
команду FLUSH LOG, нужно знать, какой
журнал является активным в настоящее
время, а также какие журналы
использовались ранее и в какой
последовательности они сменялись. Эта
информация сохранена в индексном файле
двоичного журнала, имя которого по
умолчанию имя_хоста.index. Имя и
содержимое данного файла не следует
изменять.
Пример: log-bin-index=db.index
sql-bin-update-same Если включена данная опция, то при
установке значения переменной SQL_LOG_BIN
это же значение будет автоматически
установлено и для переменной
SQL_LOG_UPDATE, и наоборот.
binlog-do-db=database_name Указывает головному серверу, что он
должен вести записи об обновлениях в
двоичном журнале, если текущая база
данных - database_name. Все другие базы
данных игнорируются. Обратите внимание:
при использовании этой опции вы должны
быть уверены, что обновления будут
производиться только в текущей базе
данных.
Пример: binlog-do-db=sales
binlog-ignore-db=database_name Указывает головному серверу, что если
текущая база данных - database_name, то
записи об обновлениях не должны вестись в
двоичном журнале. Обратите внимание: при
использовании этой опции вы должны быть
уверены, что обновления будут
производиться только в текущей базе
данных.
Пример: binlog-ignore-db=accounting

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



Опция Описание
master-host=host Имя хоста головного сервера или IP-адрес для
репликации. Если значение этой опции не
установлено, поток подчиненного сервера не будет
запущен. Обратите внимание: установка master-host
будет игнорироваться, если существует корректный
файл master.info. Возможно, лучше было бы назвать
эти опции как-нибудь иначе, что-то вроде
bootstrap-master-host, но менять их имена уже
поздно.
Пример: master-host=db-master.mycompany.com
master-user=username Имя пользователя, которое подчиненный сервер будет
использовать для аутентификации при подсоединении
к головному серверу. Пользователь должен иметь
привилегию FILE. Если пользователь головного
сервера не установлен, будет использовано имя
пользователя test. Если удастся считать значение
из файла master.info, то оно будет иметь больший
приоритет.
Пример: master-user=scott
master-password=password Пароль, который будет использоваться при
подсоединении подчиненного сервера к головному
серверу. Если этот пароль не установлен, будет
использоваться пустой пароль. Если удастся считать
значение из файла master.info, то оно будет иметь
больший приоритет.
Пример: master-password=tiger
master-port=portnumber Порт, который слушает головной сервер. Если не он
не установлен, используется откомпилированная
установка MYSQL_PORT. Это должно быть значение
3306, если оно не было изменено при помощи опций
configure. Если удастся считать значение из файла
master.info, то оно будет иметь больший приоритет
Пример: master-port=3306
master-connect-retry=seconds Время ожидания в секундах для потока подчиненного
сервера перед повторением попытки установить связь
с головным сервером в случае прекращения работы
головного сервера или потери связи. По умолчанию
- 60.
Пример: master-connect-retry=60
master-ssl Доступна для версий выше 4.0.0. Включает SSL для
репликации. Это относительно новая опция, поэтому
применять ее следует осторожно.
Пример: master-ssl
master-ssl-key Доступна для версий выше 4.0.0. Имя файла-ключа
SSL на головном сервере. Используется только в том
случае, если включена опция master-ssl.
Пример: master-ssl-key=SSL/master-key.pem
master-ssl-cert Доступна для версий выше 4.0.0. Имя
файла-сертификата SSL. Используется только в том
случае, если включена опция master-ssl.
Пример: master-ssl-key=SSL/master-cert.pem
master-info-file=filename Местоположение файла, в который записывается
информация о том, где на головном сервере
произошла остановка во время выполнения
репликации. По умолчанию это файл master.info в
директории данных. Изменять это местоположение нет
необходимости.
Пример: master-info-file=master.info
report-host Доступна для версий выше 4.0.0. Имя хоста или
IP-адрес подчиненного сервера, который передается
головному серверу во время регистрации
подчиненного сервера. Может быть выведен командой
SHOW SLAVE HOSTS. Не устанавливайте эту опцию,
если не хотите, чтобы подчиненный сервер
регистрировался на головном сервере. Обратите
внимание: для того, чтобы головной сервер
установил соединение с подчиненным сервером, ему
недостаточно просто получить IP-адрес подчиненного
сервера из соединения. Из-за NAT и других проблем
маршрутизации IP-адрес может быть недопустимым для
подсоединения головного сервера или других хостов
к подчиненному серверу.
Пример: report-host=slave1.mycompany.com
report-port Доступна для версий выше 4.0.0. Порт для
соединения с подчиненным сервером, имя хоста или
IP-адрес которого были переданы головному серверу
при регистрации подчиненного сервера. Порт нужно
устанавливать лишь в том случае, когда подчиненный
сервер слушает порт, который задан не по
умолчанию, или если имеется специальный тоннель от
головного сервера или других клиентов к
подчиненному серверу. Не используйте эту опцию,
если не уверены в своих действиях.
replicate-do-table=db_name.table_name Сообщает подчиненному серверу, что он должен
реплицировать только указанную таблицу. Для
указания более чем одной таблицы директиву следует
использовать несколько раз, по одному разу для
каждой таблицы. В отличие от replicate-do-db,
данную опцию можно применять для обновлений, в
которых используется несколько баз данных.
Пример: replicate-do-table=some_db.some_table
replicate-ignore-table=db_name.table_name Указывает подчиненному серверу, что команды, обновляющие эту таблицу,
не должны реплицироваться. Для указания
более чем одной таблицы директиву следует задавать
несколько раз, по одному разу для каждой таблицы.
В отличие от replicate-do-db, данную опцию можно
применять для обновлений, в которых используется
несколько баз данных.
Пример: replicate-ignore-table=db_name.some_table
replicate-wild-do-table=db_name.table_name Указывает подчиненному серверу, что должны реплицироваться только те
запросы, где хоть одна из таблиц удовлетворяет указанном шаблону. Для указания
более чем одной таблицы директиву следует задавать несколько раз, по одному
разу для каждой таблицы. Данную опцию можно применять для обновлений, в
которых используется несколько баз данных. Пример: при использовании
replicate-wild-do-table=foo%.bar% будут реплицироваться обновления
только таблиц с именами, начинающимися с ``bar'', которые находятся в базах
данных, с именами, начинаются с ``foo''.
Заметьте, что если вы используете replicate-wild-do-table=foo%.% тогда
это правило также распространяется и на CREATE DATABASE и на DROP DATABASE, т.е. эти два выражения также будут реплицированы если имя базы
данных совпадет с шаблоном ('foo%' в этом примере; это получается из-за
того, что символ % становится шаблонным).
replicate-wild-ignore-table=db_name.table_name Указывает подчиненному серверу, запросы, где используется одна из перечисленных здесь таблиц,
реплицироваться не должны. Для указания более чем
одной подлежащей игнорированию таблицы директиву
следует задавать несколько раз, по одному разу для
каждой таблицы. Данную опцию можно применять для
обновлений, в которых используется несколько баз
данных. Например, при использовании
replicate-wild-do-table=foo%.bar% не будут
реплицироваться обновления всех таблиц,
начинающихся на ``bar'', в базах данных, имена
которых начинаются на ``foo''.
replicate-ignore-db=database_name Сообщает подчиненному серверу, что не следует реплицировать ни
один запрос, в котором текущая база данных - database_name. Чтобы
указать более одной базы данных, директиву следует использовать несколько раз,
по одному разу для каждой базы данных.
Вы не должны использовать эту директиву,
если вы используете кросс-табличные обновления, и не хотите чтобы
эти обновления реплицировались.
Основная причина такого поведения заключается в том, что очень трудно
из самой команды понять, должен ли этот запрос реплицироваться или нет.
Например, если вы используете многотабличное удаление или многотабличное обновление
в MySQL 4.x, которое охватывает более чем одну базу данных.
Кроме того, достаточно быстро можно проверить, является ли текущая база данных
соответствующей, т.к. эта проверка выполняется только на момент соединения или смены базы данных.
Если такие обновления необходимо производить, убедитесь, что у вас установлена
версия MySQL 3.23.28 или выше и используйте
replicate-ignore-db=db_name.%.
Пример: replicate-ignore-db=some_db
replicate-do-db=database_name Сообщает подчиненному серверу, что реплицироваться
должна только указанная база данных. Чтобы указать
более одной базы данных, директиву следует
использовать несколько раз, по одному разу для
каждой базы данных. Заметьте, что не будут реплицироваться
обновления, охватывающие несколько баз данных, такие как
UPDATE some_db.some_table SET foo='bar' при том, что выбрана другая база данных или не выбрана вовсе.
Если такие обновления необходимо производить, убедитесь, что у вас установлена
версия MySQL 3.23.28 или выше и используйте
replicate-wild-do-table=db_name.%.
Пример: replicate-do-db=some_db
log-slave-updates Указывает подчиненному серверу, чтобы тот вел
записи об обновлениях, происходящих на подчиненном
сервере, в двоичном журнале. По умолчанию эта
опция выключена. Ее следует включить, если
требуется организовать подчиненные серверы в
гирляндную цепь.
replicate-rewrite-db=from_name->to_name Обновления производятся не в подлинную базу
данных, а в базу данных с именем, указанным в
опции.
Пример: replicate-rewrite-db=master_db_name->slave_db_name
slave-skip-errors= [err_code1,err_code2,... | all] Доступна только в версии 3.23.47 и выше. Сообщает
потоку подчиненного сервера, что он должен
продолжать репликацию, если запрос возвращает
ошибку, указанную в списке. Обычно при
возникновении ошибки выполнение реплицирование
прекращается, чтобы пользователь мог вручную
исправить несоответствия в данных. Не используйте
данную опцию, если вы до конца не разобрались в
причинах возникновения ошибок. Если не было
допущено ошибок при установке репликации, нет
ошибок в клиентских программах и нет никаких
ошибок непосредственно в MySQL, то прекращения
работы из-за ошибки происходить не должно.
Неразборчивое применение данной опции может
привести к тому, что подчиненный сервер окажется
безнадежно не синхронизированным с головным
сервером, и вы будете тщетно ломать себе голову
над тем, каким образом это случилось. Код ошибок
можно получить в сообщениях об ошибках в журнале
ошибок и в выводе команды SHOW SLAVE STATUS.
Полный список сообщений об ошибках можно найти в
файле исходного дистрибутива
Docs/mysqld_error.txt. Можно также (но не нужно)
использовать значение all (хотя этого делать
настоятельно не рекомендуется) - тогда будут
игнорироваться все сообщения об ошибках и за
процессом переброски данных наблюдения не будет.
Само собой разумеется, при использовании этой
опции целостность данных ставится под угрозу. В
этом случае просьба не жаловаться, если данные на
подчиненном сервере не будут соответствовать
данным на головном сервере, - вас предупреждали.
Пример: slave-skip-errors=1062,1053 или
slave-skip-errors=all
skip-slave-start Указывает компьютеру, на котором установлен
подчиненный сервер, что при его запуске не должен
запускаться подчиненный сервер. Пользователь может
запустить его позже при помощи команды SLAVE START.
slave_compressed_protocol=# Если 1, то использовать сжание в клиент/серверном протоколе связи,
если оба, и сервер и клиент, поддерживают сжатие.
slave_net_timeout=# Время ожидания (в секундах) дополнительных данных
от головного сервера, после чего чтение будет
прервано.

На Сервер 2: # Master

На Сервер 2:

# Master records
log-bin = my-bin
binlog-do-db = users

Нифига, опечатка видать!
Должно быть для Сервера 2:

# Master records
log-bin = my-bin
binlog-do-db = db1
binlog-do-db = db2

упс

да, так и есть, спасибо, поправил

Дочитал до слова "папка" и

Дочитал до слова "папка" и закрыл :/

интересно

Очень интересно, а если я ещё раз сделаю вот так %Путь к MySQL% то Вы после "вот так" тоже дальше читать мой комментарий не станете... ))))

Не, на самом деле удобная

Не, на самом деле удобная статья. Когда я писал про "папка", я скорее имел ввиду то, что можно было бы и обойтись без привязки к конкретной платформе, параметры MySQL и на unix-like, и на win одинаковы :) Спасибо за проделанную работу :)

Нуженн мастер сервер!

Все доброго времени суток! Нужен специалист который сделает мастер сервер, готов щедро заплатить, Просьба обращятся в скайп - Ganja_cs

Отправить комментарий

  • Доступны HTML теги: <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

Image CAPTCHA
Enter the characters shown in the image.
Поделиться: