Управление репликацией производится командами SQL. Ниже приводится краткое
описание команд:
Команда | Описание
|
SLAVE START | Запускает поток подчиненного сервера (подчиненный сервер)
|
SLAVE STOP | Завершает поток подчиненного сервера (подчиненный сервер)
|
SET SQL_LOG_BIN=0 | Блокирует ведение записей в журналах
обновлений, если пользователь имеет привилегию SUPER . В противном случае ничего
не выполняет (головной сервер)
|
SET SQL_LOG_BIN=1 | Отменяет блокировку ведения записей в
журналах обновлений, если пользователь имеет привилегию SUPER . В противном
случае ничего не выполняет (головной сервер)
|
SET SQL_SLAVE_SKIP_COUNTER=n | Пропускает последующие n событий
на головном сервере. Опция допустима, если поток подчиненного сервера не
запущен, в противном случае будет выдана ошибка. Полезна для восстановления
после сбоев репликации.
|
RESET MASTER | Удаляет все двоичные журналы, перечисленные в
индексном файле, и делает индексный файл двоичных журналов пустым. Для версий
ниже 3.23.26 используйте команду FLUSH SLAVE (головной сервер)
|
RESET SLAVE | Заставляет подчиненный сервер "забыть" свою
точку положения репликации в журналах головного сервера. Для версий ниже
3.23.26 эта команда называется FLUSH SLAVE (подчиненный сервер)
|
LOAD TABLE tblname FROM MASTER | Загружает копию таблицы из
головного на подчиненный сервер. Используется главным образом для отладки
команды LOAD DATA FROM MASTER , но некоторые "пользователи-гурманы" могут найти
ей и другие применения. Если вы относите себя к числу обычных, не отягощенных
хакерскими амбициями пользователей, данную опцию применять не стоит
(подчиненный сервер).
|
LOAD DATA FROM MASTER | Присутствует в версиях выше 4.0.0.
Создает образ головного сервера и копирует его на подчиненный сервер. Обновляет
значения MASTER_LOG_FILE и MASTER_LOG_POS таким образом, чтобы подчиненный
сервер начинал репликацию из конкретной позиции. Будет обрабатывать ограничения
таблиц и баз данных, указанные в опциях replicate-* . При этом, пока происходит
создание образа, могут использоваться лишь таблицы MyISAM и требуется
глобальная блокировка чтения на головном сервере. В будущем планируется
обеспечить работу этой команды с таблицами InnoDB и устранить необходимость
глобальной блокировки чтения при помощи интерактивного резервного копирования,
не требующего блокировки.
|
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' или из командной
строки. Эта команда используется для настройки подчиненного сервера при наличии
образа головного сервера, а также записей из журнала и сдвига головного
сервера, которые соответствуют образу. Можно выполнить команду
CHANGE MASTER TO
MASTER_LOG_FILE='log_name_on_master',
MASTER_LOG_POS=log_offset_on_master
на подчиненном сервере после восстановления образа (подчиненный сервер)
|
SHOW MASTER STATUS | Выводит информацию о состоянии головного
сервера, исходя из информации в двоичных журналах (головной сервер)
|
SHOW SLAVE HOSTS | Присутствует в версии 4.0.0 и выше. Выводит
список подчиненных серверов, связанных в текущее время с головным сервером
(подчиненный сервер)
|
SHOW SLAVE STATUS | Выводит информацию о состоянии существенных
параметров потока подчиненного сервера (головной сервер)
|
SHOW MASTER LOGS | Присутствует только начиная с версии
3.23.28. Выводит список двоичных журналов головного сервера. Эту команду
следует использовать перед вызовом команды PURGE MASTER LOGS TO для определения
того, какие из журналов можно удалить (головной сервер)
|
SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [LIMIT [offset,] rows ]
@tab Показывает события в двоичном журнале обновлений. Преимущественно
применяется для тестирования/отладки, но может также использоваться и для
обычных клиентов, по какой-либо причине нуждающихся в чтении содержимого
двоичных журналов (головной сервер).
|
SHOW NEW MASTER FOR SLAVE
WITH
MASTER_LOG_FILE='logfile'
AND MASTER_LOG_POS=pos AND
MASTER_LOG_SEQ=log_seq AND
MASTER_SERVER_ID=server_id |
Эта команда используется, когда подчиненному
серверу, связанному с головным сервером,
который, возможно, является "мертвым" или
недоступным, нужно отключить репликации на
другом подчиненном сервере, связанном с тем
же головным сервером. Команда возвратит
пересчитанные координаты репликации, и вывод
этой команды может использоваться в
последующей команде CHANGE MASTER TO . Обычным
пользователям данная команда, как правило,
никогда не понадобится: она главным образом
служит для внутреннего использования в
отказобезопасном репликационном коде. В
будущем возможны изменения синтаксиса опции,
если будет найден более интуитивно понятный
способ описания этой операции.
|
PURGE MASTER LOGS TO 'logname' |
Присутствует начиная с версии 3.23.28.
Удаляет все журналы репликации, которые
перечислены в индексном файле журналов до
передаваемого журнала, и удаляет их из
индексного файла журналов. Таким образом
передаваемый журнал становится первым в
индексном файле журналов. Пример:
PURGE MASTER LOGS TO 'mysql-bin.010'
Эта команда не выполнит никаких действий и
возвратит ошибку, если имеется активный
подчиненный сервер, который в текущее время
читает данные из одного из журналов, который
должен быть удален. Однако если имеется
бездействующий подчиненный сервер и
происходит удаление одного из журналов,
который он хочет прочитать, то после того,
как подчиненный сервер "поднимется", он
станет неспособным к репликации. Команда
может быть безопасно выполнена на подчиненных
серверах во время процесса репликации - не
нужно останавливать процесс. Сначала
необходимо проверить все подчиненные серверы
при помощи команды SHOW SLAVE STATUS , чтобы
увидеть, какой журнал используется, затем
вывести список журналов головного сервера при
помощи команды SHOW MASTER LOGS , найти самый
ранний журнал среди всех подчиненных серверов
(если все подчиненные серверы получили
последние обновления, это будет последний
журнал в списке), сделать резервные копии
всех журналов, которые должны быть удалены
(необязательно), и очистить все до целевого
журнала.
|