1.4 Процесс резервного копирования
Ниже приведён очень краткий обзор шагов, выполняемых командой mysqlbackup при создании резервной копии. Он не включает каждый отдельный шаг, выполняемый командой mysqlbackup, и описание представляет собой лишь общий случай — процесс может существенно отличаться в зависимости от используемых параметров резервного копирования (особенно от параметров, описанных в Разделе 20.10 «Параметры производительности, масштабируемости и ёмкости» и Разделе 20.16 «Параметры для специальных типов резервного копирования»).
В общем случае при запуске операции резервного копирования с помощью mysqlbackup происходит следующее:
-
Файлы данных InnoDB, файлы журналов redo, двоичные журналы и файлы журналов relay (за исключением файлов журналов, которые используются в данный момент) копируются в резервную копию, при этом сервер базы данных функционирует в обычном режиме.
Данные и структуры таблиц InnoDB могут измениться за этот период, поэтому некоторые из следующих шагов предназначены для обеспечения того, что эти изменения будут отражены в резервной копии.
На экземпляре сервера применяется блокировка. Она блокирует операции DDL (за исключением операций над созданными пользователем временными таблицами), но не операции DML (за исключением тех, которые не регистрируются в двоичном журнале, например, административные изменения в базе данных) над таблицами InnoDB. Большинство операций чтения и записи в базе данных всё ещё разрешены. При применении этой блокировки mysqlbackup сканирует таблицы InnoDB, которые были изменены операциями DDL с момента шага 1, и соответственно изменяет резервную копию.
-
Для всех таблиц, не являющихся InnoDB (только тех, которые должны быть включены в резервную копию), применяется оператор
FLUSH TABLES, после чего копируются все соответствующие таблицы, не являющиеся InnoDB.tbl_name [, tbl_name]... WITH READ LOCKЭтот шаг пропускается, если в базе данных нет созданных пользователем таблиц, не являющихся InnoDB.
На короткое время блокируются операции ведения журнала на сервере, чтобы mysqlbackup мог собрать информацию о журнале, такую как текущий LSN InnoDB, позицию двоичного журнала, GTID, источник репликации или статус реплики и так далее.
Блокировка чтения на таблицах, не являющихся InnoDB, снимается.
Используя информацию из шага 4, копируется соответствующая часть двоичного или файла журнала relay, который используется в данный момент. Это гарантирует, что все недавние изменения в таблицах InnoDB с момента шага 1 будут включены в резервную копию, чтобы их можно было применить позже к данным, для приведения восстановленного сервера в согласованное состояние.
Блокировка на экземпляре сервера снимается. База данных возвращается к своему обычному функционированию.
Копируются или создаются файлы журнала redo, которые ещё не были скопированы ранее, а также все метаданные для резервной копии.
Операция резервного копирования завершается, и mysqlbackup возвращает сообщение об успешном завершении.
© 2025 Oracle
Licensed under the GPLv2 License.