Как увеличить быстрое резервное копирование и восстановление базы данных 500 ГБ с помощью mysqldump?

10

Есть база данных размером 500ГБ. Таблицы в базе данных A содержат таблицы MyISAM и INNODB. Таблицы MyISAM являются основными таблицами, а таблицы Innodb - основными таблицами транзакций.

Резервное копирование и восстановление с использованием дампа MySQL занимает много времени или дней.

  • max_allowed_packet = 1G
  • foreign_key_checks = 0
  • auto_commit = off
Мартин
источник
1
Я просто хочу убедиться, что вы используете --opt с утилитой mysqldump. Это ОГРОМНАЯ экономия времени при перезагрузке. без этого mysqldump создает файл sql строка за строкой. --opt делает: добавляет блокировки, отбрасывает и создает заново со всеми включенными параметрами создания, временно отключает ключи для быстрой перезагрузки, а затем снова включает ключи в конце, чтобы перестроить индексы после завершения записи. Он объединяет несколько строк вместе во вставках, чтобы уменьшить размер файла И время синтаксического анализа каждого оператора (до 70%), и позволяет --quick уменьшить нагрузку на дамп-базу данных при запуске. сокращает время загрузки на 80%
ppostma1

Ответы:

5

Но ссылка также рекомендует XtraBackup от Percona, который работает быстрее, не блокирует таблицы, которые уже используются, и не тратит время на восстановление. Для 500 ГБ данных я предпочитаю, чтобы Percona XtraBackup был быстрым и эффективным, если только вы не хотите преобразовывать их в модель innodb_file_per_table, если она не была на существующем сервере БД. Ниже ссылка объясняет, как действовать.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html

Mannoj
источник
1
Проблема с Percona Xtrabackup заключается в том, что mysqld необходимо остановить , чтобы восстановить базу данных.
Dr_
2

Проверьте мой дампер. Это намного быстрее, чем mysqldump: новая версия mydumper 0.6.1 предлагает производительность и удобство использования

Вы можете скачать здесь: https://github.com/maxbube/mydumper

Что такое mydumper? Почему?

  • Параллелизм (следовательно, скорость) и производительность (избегает дорогостоящих процедур преобразования набора символов, эффективный код в целом)
  • Проще управлять выводом (отдельные файлы для таблиц, метаданные дампа и т. Д., Легко просматривать / анализировать данные)
  • Согласованность - поддерживает моментальный снимок во всех потоках, обеспечивает точные позиции журнала ведущего и ведомого и т. Д.
  • Управляемость - поддерживает PCRE для указания включений и исключений базы данных и таблиц.
Сайлас Палмер
источник
1

Я думаю, что вопрос в том, как быстрее восстановить файлы из дампов mysqldump, а не в другом решении для резервного копирования.

Один из способов сделать это - создать группы таблиц в своей схеме и создать отдельного пользователя БД для каждой группы и использовать разрешения MySQL, чтобы запретить вставку таблиц для использования всего, кроме одного пользователя БД.

Это проверенная, быстрая, почти параллельная техника, но не на 100% уверенная, сколько времени потребуется для восстановления от 500G. Но имхо, тебе нужно что-то параллельное. Смотрите ссылку ниже для примера.

Быстрое параллельное восстановление из дампов SQL (mysqldump) для MySQL

Сайед
источник
1

Попробуйте следующее с innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Вы можете изменить номер параллельного процесса, как вам нравится. Поскольку вы упомянули, что у вас есть таблицы myisam, параметр rsync поможет ускорить их резервное копирование.

Haluk
источник