Управление репликацией производится командами SQL. Ниже приводится краткое описание команд:
Команда | Описание |
SLAVE START |
Запускает поток подчиненного сервера (подчиненный сервер) |
SLAVE STOP |
Завершает поток подчиненного сервера. Также как и SLAVE START , этот оператор можно использовать с опциями
IO_THREAD и SQL_THREAD . (подчиненный сервер)
|
SET SQL_LOG_BIN=0 |
Блокирует ведение записей в журналах
обновлений, если пользователь имеет привилегию SUPER . В противном случае ничего
не выполняет (головной сервер)
|
SET SQL_LOG_BIN=1 |
Отменяет блокировку ведения записей в
журналах обновлений, если пользователь имеет привилегию SUPER . В противном
случае ничего не выполняет (головной сервер)
|
SET GLOBAL 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 , но некоторые "пользователи-гурманы" могут найти
ей и другие применения. Если вы относите себя к числу обычных, не отягощенных
хакерскими амбициями пользователей, данную опцию применять не стоит.
Требуется, чтобы у пользователя репликации, использущегося в соединении с головным
сервером, присутствовали привилегии RELOAD и SUPER на головном сервере.
(подчиненный сервер).
|
LOAD DATA FROM MASTER |
Присутствует в версиях выше 4.0.0.
Создает образ головного сервера и копирует его на подчиненный сервер.
Требуется, чтобы у пользователя репликации, использущегося в соединении с головным
сервером, присутствовали привилегии RELOAD и SUPER на головном сервере.
Обновляет
значения MASTER_LOG_FILE и MASTER_LOG_POS таким образом, чтобы подчиненный
сервер начинал репликацию из конкретной позиции. Будет обрабатывать ограничения
таблиц и баз данных, указанные в опциях replicate-* . При этом, пока происходит
создание образа, могут использоваться лишь таблицы MyISAM и требуется
глобальная блокировка чтения на головном сервере. В будущем планируется
обеспечить работу этой команды с таблицами InnoDB и устранить необходимость
глобальной блокировки чтения при помощи интерактивного резервного копирования,
не требующего блокировки.
Заметьте, LOAD DATA FROM MASTER НЕ копирует ни одну таблицу в
базе данных mysql. Это сделано для того, чтобы было легко управлять разными
пользователями на головном и подчиненном серверах.
|
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 ]
|
Показывает события в двоичном журнале обновлений. Преимущественно применяется для тестирования/отладки, но может также использоваться и для обычных клиентов, по какой-либо причине нуждающихся в чтении содержимого двоичных журналов (головной сервер). |
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 , найти самый
ранний журнал среди всех подчиненных серверов
(если все подчиненные серверы получили
последние обновления, это будет последний
журнал в списке), сделать резервные копии
всех журналов, которые должны быть удалены
(необязательно), и очистить все до целевого
журнала.
|