SQL-команды, относящиеся к репликации
Управление репликацией производится командами 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 , найти самый ранний журнал среди всех подчиненных серверов (если все подчиненные серверы получили последние обновления, это будет последний журнал в списке), сделать резервные копии всех журналов, которые должны быть удалены (необязательно), и очистить все до целевого журнала. |
1 2 3 4 5 6 7
8 8 8
| |