Глава 14 mysqlbackup
Клиент mysqlbackup — это удобный инструмент для всех операций резервного копирования и восстановления. Во время резервного копирования mysqlbackup создаёт резервную копию:
-
Все таблицы и индексы InnoDB, включая:
InnoDB, который по умолчанию содержит все таблицы InnoDB.
Любые отдельные файлы данных, созданные с настройкой InnoDB. Каждый содержит одну таблицу и её связанные индексы. Каждый файл данных может использовать исходный или новый формат файла.
Все таблицы и индексы MyISAM.
Таблицы, управляемые другими движками хранения.
Другие файлы в каталоге данных MySQL, такие как файлы
.frm, которые записывают структуру каждой таблицы.Любые другие файлы в подкаталогах базы данных в каталоге данных сервера.
Помимо создания резервных копий, mysqlbackup может упаковывать и распаковывать данные резервных копий, применять к данным резервной копии любые изменения в таблицах InnoDB, произошедшие во время операции резервного копирования, и восстанавливать файлы данных, индексов и логов обратно в исходные места или в другие места.
Вот некоторые примеры команд для запуска операции резервного копирования с mysqlbackup:
# Information about data files can be retrieved through the database connection.
# Specify connection options on the command line.
mysqlbackup --user=dba --password --port=3306 \
--with-timestamp --backup-dir=/export/backups \
backup
# Or we can include the above options in the configuration file
# under the [mysqlbackup] section, and just specify the configuration file
# and the 'backup' operation.
mysqlbackup --defaults-file=/usr/local/mysql/my.cnf backup
# Or we can specify the configuration file as above, but
# override some of those options on the command line.
mysqlbackup --defaults-file=/usr/local/mysql/my.cnf \
--compress --user=backupadmin --password --port=18080 \
backup
Указанные вами --user и --password используются для подключения к серверу MySQL. Этот пользователь MySQL должен иметь определённые привилегии на сервере MySQL, как описано в Разделе 4.1.2, «Предоставление привилегий MySQL администратору резервного копирования».
Опция --with-timestamp помещает резервную копию в подкаталог, созданный в указанном вами каталоге. Название подкаталога резервной копии формируется из даты и времени выполнения резервного копирования.
Значения других параметров командной строки см. в Главе 16, Параметры командной строки mysqlbackup. Информацию о файлах конфигурации см. в Главе 17, Файлы конфигурации и параметры.
Убедитесь, что у пользователя или задания cron, запускающего mysqlbackup, есть права на копирование файлов из каталогов базы данных MySQL в каталог резервной копии.
Убедитесь, что таймауты соединения достаточно длинные, чтобы команда mysqlbackup могла поддерживать соединение с сервером на протяжении всего процесса резервного копирования. mysqlbackup отправляет серверу сигналы после копирования каждой базы данных, чтобы поддерживать соединение.
-
Хотя mysqlbackup резервирует таблицы InnoDB без прерывания использования базы данных, заключительный этап, который копирует файлы, не являющиеся InnoDB (такие как таблицы MyISAM и файлы
.frm), временно переводит базу данных в состояние только для чтения, используя операторFLUSH TABLES WITH READ LOCK. Для лучшей производительности резервного копирования и минимального воздействия на обработку базы данных:Не запускайте длительные запросы
SELECTили другие SQL-запросы во время выполнения резервного копирования.Держите ваши таблицы MyISAM относительно небольшими и используйте их в основном для чтения или преимущественно для чтения.
Тогда заблокированная фаза в конце выполнения mysqlbackup будет короткой (может быть несколько секунд) и не будет сильно мешать нормальной работе mysqld. Если перечисленные выше условия не соблюдаются в вашей базе данных, используйте опцию
--only-innodbдля резервного копирования только таблиц InnoDB или используйте опцию--no-lockingдля резервного копирования файлов, не являющихся InnoDB. Обратите внимание, что таблицы MyISAM,.frmи другие файлы, скопированные в рамках настройки--no-locking, могут не гарантировать согласованности, если они обновляются в этой заключительной фазе резервного копирования. Для большой базы данных резервное копирование может занять много времени. Всегда проверяйте, что команда mysqlbackup завершилась успешно, убедившись, что mysqlbackup вернула код выхода 0 или наблюдая, что mysqlbackup напечатала текст «“mysqlbackup completed OK!”».
mysqlbackup отличается от предыдущего проекта с открытым исходным кодом «MySQL Backup» из дерева исходных кодов MySQL 6.0. Продукт MySQL Enterprise Backup заменяет инициативу MySQL Backup.
Планируйте резервное копирование в периоды, когда не выполняются операции DDL, связанные с таблицами. См. Приложение B, Ограничения MySQL Enterprise Backup для ограничений создания резервных копий параллельно с операциями DDL.
© 2025 Oracle
Licensed under the GPLv2 License.