WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Операции резервирования и восстановления особенно важны в системах,
которые используют повторение MySQL, чтобы синхронизировать данные через
исходный сервер и ряд серверов точной копии. В конфигурации репликации
MySQL Enterprise Backup помогает вам управлять образами для всей системы,
настроить новые серверы точной копии или восстановить исходный сервер
эффективным способом, который избегает ненужной работы для серверов точной
копии. С другой стороны, наличие многократных серверов точной копии дает
вам больше гибкости в том, где выполнить резервные копии.
Когда двоичная регистрация позволена, у вас есть больше гибкости в
восстановлении базы данных к отдельному моменту времени, даже к моменту
позже, чем последняя резервная копия. MySQL Enterprise Backup позволяет вам настраивать сервер точной копии
(называемый далее точной копией), поддерживая
исходный сервер (называемый далее источником)
и восстанавливая резервную копию на новой машине, не имея
необходимости останавливать источник. Для серверов, не использующих GTID
: Сделайте полное резервное копирование источника, затем
используйте, например,
Не используйте опцию Отредактируйте файл Начните новую точную копию mysqld.
Вы видите следующее в выводе сервера: В то время как показано сообщение Ищите файл Используйте SQL-запрос Установите статусы любых событий, которые были скопированы от
источника до Удалите строки Перезапустите сервер точной копии.
Для серверов, использующих GTID (см.
Setting Up Replication Using GTIDs
о том, как позволить серверам использовать GTID): Возьмите полное резервное копирование источника и затем
используйте, например, команду
Отредактируйте файл Запустите новый сервер точной копии. Соединитесь с сервером точной копии клиентом
mysql. Затем выполните следующий запрос, чтобы
перезагрузить двоичную регистрацию: Выполните следующий запрос, чтобы остановить двоичную регистрацию: Когда сервер, использующий функцию GTID, поддерживается,
mysqlbackup генерирует файл
Это также содержит прокомментированный запрос Раскомментируйте команду и добавьте любую необходимую связь и параметры
аутентификации к ней (например,
Выполните файл клиентом mysql: Установите статусы любых событий, которые были скопированы от
источника до Удалите добавленные ранее строки Перезапустите сервер точной копии. Для получения дополнительной информации о GTID см.
GTID feature. Чтобы сделать копию базы данных точной копии, добавьте опцию
Чтобы восстановить резервную копию на сервере точной копии, выполните те
же самые шаги, обрисованные в общих чертах в
разделе 8.1.
Временные таблицы на основанной на запросе репликации (SBR). MySQL
Enterprise Backup не включает временные таблицы в резервной копии.
В результате для сервера точной копии в основанной на запросе репликации
(SBR) или смешанной установке повторения (см.
Replication Formats) любые временные таблицы все еще
открытые в конце процесса резервного копирования, будет отсутствовать в
восстановленном сервере точной копии, делая состояние репликации
непоследовательным, и любые последующие копируемые запросы, которые
обращаются к временным таблицам, потерпит неудачу.
Чтобы избежать проблемы, после фазы горячего резервного копирования, в
которой mysqlbackup копирует все таблицы
InnoDB, он создает цикл, в котором происходит следующее: mysqlbackup
ждет, пока все временные таблицы не были закрыты SQL-потоком репликации.
mysqlbackup говорит, если это так,
проверяя, если переменная
После Чтобы избежать неожиданного последствия в виде состояния состязания,
после остановки потока SQL репликации,
mysqlbackup еще раз проверит, что
Если это так, mysqlbackup
выходит из цикла и заканчивает резервную копию, устанавливая блокировку
чтения на все не-InnoDB таблицы и копирует их. Если это не так, новые временные таблицы были составлены и открыты на
точной копии. mysqlbackup тогда перезапускает
поток SQL репликации, таким образом обновления могут быть сделаны на серверах
точной копии. mysqlbackup
тогда возвращается к шагу 1 цикла. Помимо выходного условия, описанного в шаге (3) выше (действительно нет
никаких открытых временных таблиц и mysqlbackup
готово закончить резервную копию), mysqlbackup
имеет тайм-аут в цикле, чтобы не ждать слишком долго все временные таблицы,
которые будут закрыты. Продолжительность ожидания
mysqlbackup определяется опцией
Кроме того, mysqlbackup
также осуществляет начальную проверку в начале резервной копии, чтобы
увидеть, если условие
Заметьте, что вышеописанная проблема с временными таблицами не существует
для установки построчной репликации (RBR), для которой временные таблицы не
копируются на точную копию вообще. Пользователь, который уверен, что SBR не
происходит для точной копии, может установить
См. ограничение,
которое применяется, поддерживая точную копию. Чтобы решить проблему повреждения в базе данных источника репликации,
можно восстановить резервную копию, заботясь, чтобы не размножить ненужные
операции SQL к серверам точной копии: Закройте исходную базу данных и затем используйте,
например,
Отредактируйте файл Репликация в точных копиях должна быть остановлена временно
в то время, как вы перекачиваете двоичную регистрацию к источнику.
На точных копиях сделайте: Запустите mysqld источника
на восстановленной резервной копии: InnoDB печатает файл двоичного журнала
( Перекачайте остаток двоичных файлов журнала к восстановленному
серверу. Количество остающихся двоичных файлов журнала варьируется в
зависимости от длины промежутка между последней резервной копией и временем,
к которому вы хотите осовременить базу данных. Чем дольше промежуток, тем
больше оставшихся двоичных файлов журнала там может быть. Все двоичные файлы
журнала, содержащие все непрерывные положения двоичной регистрации в этом
промежутке, требуются для успешного восстановления. Также необходимо поставлять стартовую позицию в двоичной регистрации, с
которой должна начаться передача событий. Выведите эту информацию из файла
В то время как последнее восстановленное двоичное положение регистрации
также показано InnoDB после восстановления (см. шаг 4 выше), оно не является
надежным числом для выведения положения начала для
mysqlbinlog, поскольку могли быть события DDL и
изменения не-InnoDB, которые произошли после времени,
отраженного показанным положением. Например, если есть еще два двоичных файла журнала,
См. Point-in-Time (Incremental) Recovery
для большего количества инструкций относительно использования
mysqlbinlog. Исходная база данных теперь восстановлена. Закройте источник и
отредактируйте файл Запустите источник снова. Запустите репликацию в точных копиях снова: MySQL Enterprise Backup 8.0.14 и позже понимает
зашифрованные журналы,
которые обработаны похожим способом, как зашифрованные таблицы InnoDB (см.
главу 6). Когда выполняется резервирование зашифрованного журнала, опция
Если сервер использует плагин
Если сервер использует плагин брелка кроме
Когда восстановливается зашифрованный журнал, тот же самый пароль,
используемый для поддержки базы данных, должен поставляться
MySQL Enterprise Server:
mysqlbackup вернул зашифрованный файл данных
брелка к своему надлежащему местоположению на сервере. Восстановленный сервер
должен быть запущен с плагином
MySQL Community Server: плагин Для возрастающих резервных копий.
Для ряда возрастающих резервных копий, если плагин брелка кроме
than
Глава 8. MySQL Enterprise Backup и репликация
8.1. Подготовка новой точной копии
copy-back-and-apply-log
, чтобы
восстановить резервную копию и файлы журнала к правильным каталогам на
новой точной копии и подготовить данные.
--no-locking
, поддерживая сервер, или вы не будете способны
получить надлежащее двоичное положение регистрации в Шаге 4 ниже для
инициализации точной копии.my.cnf
новой точной копии и поместите skip-slave-start
и
event_scheduler=off
(если источник использует
Event Scheduler) в секцию [mysqld]
.
InnoDB: Last MySQL binlog file position 0 128760007,
file name ./hundin-bin.000006
Last MySQL binlog file position
, это НЕ обязательно последнее положение двоичной регистрации на
поддержанном сервере, поскольку InnoDB не хранит информацию о положении
регистрации ни для каких операций DDL или любых изменений не-InnoDB таблиц
Не используйте это положение двоичной
регистрации, чтобы инициализировать точную копию. Следующий шаг
объясняет, как найти правильное положение двоичной регистрации.
, где
datadir
/meta/backup_variables.txt
это каталог данных новой точной копии. Изучите файл, чтобы
восстановить последнее положение двоичной регистрации и соответствующий номер
файла журнала, сохраненные внутри:datadir
binlog_position=hundin-bin.000006:128760128
CHANGE MASTER TO
и информацию, которую вы получили на последнем шаге, чтобы инициализировать
точную копию правильно:
CHANGE MASTER TO
MASTER_LOG_FILE='hundin-bin.000006',
MASTER_LOG_POS=128760128;
SLAVESIDE_DISABLED
. Например:
mysql> UPDATE mysql.event SET status = 'SLAVESIDE_DISABLED';
skip-slave-start
и
event_scheduler=off
из файла
my.cnf
, которые вы туда добавили на Шаге 2.
Можно также убрать skip-slave-start
, но тогда необходимо будет
всегда использовать запрос
START SLAVE, чтобы начать репликацию каждый раз, когда вы
перезапускаете сервер точной копии.
copy-back-and-apply-log
, чтобы восстановить резервную копию и
файлы журнала к правильным каталогам на новой GTID-точной
копии и подготовить данные.my.cnf
новой точной копии и поместите skip-slave-start
и
event_scheduler=off
(если источник использует
Event Scheduler) в секцию [mysqld]
.
mysql> RESET MASTER;
mysql> SET sql_log_bin=0;
backup_gtid_executed.sql
,
который может быть найден в восстановленном каталоге данных нового сервера
точной копии. Файл содержит SQL-оператор, который устанавливает параметр
конфигурации GTID_PURGED
на точной копии:
# On a new replica, issue the following command if GTIDs are enabled:
SET @@GLOBAL.GTID_PURGED='f65db8e2-0e1a-11e5-a980-080027755380:1-3';
CHANGE MASTER TO
для инициализации точной копии:
# Use the following command if you want to use the GTID handshake protocol:
# CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
MASTER_HOST
, MASTER_USER
,
MASTER_PASSWORD
и MASTER_PORT
):
# Use the following command if you want to use the GTID handshake protocol:
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='muser',
MASTER_PASSWORD='mpass', MASTER_PORT=18675, MASTER_AUTO_POSITION = 1;
mysql> source /path-to-backup_gtid_executed.sql/backup_gtid_executed.sql
SLAVESIDE_DISABLED
. Например:
mysql> UPDATE mysql.event SET status = 'SLAVESIDE_DISABLED';
skip-slave-start
и
event_scheduler=off
из файла
my.cnf
. Можно также добавить
skip-slave-start
, но тогда необходимо будет всегда использовать
START SLAVE, чтобы начать репликацию каждый раз, когда вы
перезапускаете сервер точной копии.
8.2. Поддержка и восстановление базы данных точной копии
--slave-info
к вашей команде резервного копирования.Slave_open_temp_tables
= 0.Slave_open_temp_tables=0
mysqlbackup останавливает SQL-поток репликации,
чтобы предотвратить изменения таблиц на точной копии.Slave_open_temp_tables=0
:
--safe-slave-backup-timeout
.Slave_open_temp_tables=0
станет верным в
течение
--safe-slave-backup-timeout
. См. описание для
--safe-slave-backup-timeout
.--safe-slave-backup-timeout=0
, что будет препятствовать
mysqlbackup запускать проверочный цикл.
8.3. Восстановление исходной базы данных
copy-back-and-apply-log
, чтобы восстановить резервную
копию и подготовить данные.my.cnf
источника
и закомментруйте log-bin
, чтобы точные копии не получали
дважды двоичную регистрацию.
mysql> STOP SLAVE;
$ mysqld
InnoDB: Doing recovery: scanned up to log sequence number 0 64300044
InnoDB: Last MySQL binlog file position 0
5585832
, file name
./omnibook-bin.000002
./omnibook-bin.000002
в этом примере) и
положение (5585832
в этом примере), в
которых система запустилась.meta/backup_variables.txt
в резервной копии,
которую восстановили в шаге 1 выше (обратитесь к
backup_variables.txt
во временном резервном каталоге, указанном с
--backup-dir
во время восстановления, подкаталог meta
):
найдите запись binlog_position=
в value
meta/backup_variables.txt
и передайте value
в
mysqlbinlog опцией
--start-position
.omnibook-bin.000003
и
omnibook-bin.000004
после
omnibook-bin.000002
и восстановление в шаге 4 выше закончилось на позиции
5585834
согласно файлу
backup_variables.txt
,
перекачайте двоичную регистрацию:
$ mysqlbinlog --start-position=5585834 /mysqldatadir/omnibook-bin.000002 \
/mysqldatadir/omnibook-bin.000003 \
/mysqldatadir/omnibook-bin.000004 | mysql
my.cnf
, чтобы
раскомментировать log-bin
.
mysql> START SLAVE;
8.4. Работа с зашифрованными журналами
--encrypt-password
требуется в следующих целях:keyring_encrypted_file
, пользователь должен использовать выбор
--encrypt-password
, чтобы предоставить mysqlbackup
пароль шифрования файла брелка, который был установлен на сервере опцией
keyring_encrypted_file_password
.
mysqlbackup тогда копирует с сервера
зашифрованный файл данных брелка, который содержит главный ключ репликации
используемый, чтобы зашифровать все пароли для отдельных файлов журнала, в
каталог meta
в резервной копии.keyring_encrypted_file
, mysqlbackup
получает доступ к брелоку, чтобы получить главный ключ репликации и
использует его, чтобы расшифровать пароли отдельных файлов журнала.
Главный ключ репликации тогда помещается в файл данных брелка, который
зашифрован с паролем пользователя, поставляемым через
--encrypt-password
и сохранен в каталоге
meta
в резервной копии с именем
keyring_kef
.
--encrypt-password
, когда
mysqlbackup выполняет следующие действия:keyring_encrypted_file
и опциями
keyring_encrypted_file_data
и
keyring_encrypted_file_password
(которая должна поставлять серверу тот же самый пароль, который использован с
--encrypt-password
при восстановлении).keyring_file
это
единственный плагин брелка, поддержанный MySQL Community Server, поэтому
mysqlbackup использует пароль, поставляемый
опцией
--encrypt-password
, чтобы расшифровать файл данных брелка и
затем вернуть его к надлежащему местоположению на сервере для плагина
keyring_file
.keyring_encrypted_file
используется на сервере,
пользователи могут предоставить другое значение
--encrypt-password
для любого полного резервного копирования или
инкрементного резервного копирования в резервной последовательности. Однако,
пароль, используемый, чтобы сделать определенное полное резервное копирование
или инкрементное резервное копирование, должен быть обеспечен, чтобы
восстановить эту резервную копию. Начиная сервер после восстановления ряда
возрастающих резервных копий, пароль, используемый для того, чтобы
восстанавливать последнее инкрементное резервное копирование,
должен поставляться серверу (за исключением MySQL Community Server,
который запустится с плагином keyring_file
и не требует опции
keyring_encrypted_file_password
).
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.