У меня есть база данных mysql (MyISAM) размером около 30 ГБ. У него одна большая таблица (и несколько меньших, но это не имеет значения). Он выполняет около 2000 выборок (одна строка по первичному ключу) в секунду, 300 обновлений в секунду и 50 вставок в секунду. У нас около 10 независимых серверов с похожей базой данных.
Я хочу сделать резервную копию этой базы данных (предпочтительно инкрементную), не отключая ее, как это сделать?
Вы можете настроить подчиненный сервер и использовать там дамп MySQL, если хотите использовать стандартные утилиты MySQL для резервного копирования.
Другой способ - использовать моментальные снимки Linux LVM или Solaris / FreeBSD ZFS, скопировать моментальный снимок любой командой, которую вы хотите, а затем выпустить моментальный снимок.
Есть также Zmanda MySQL Recovery Manager (версия от сообщества) ZManda MySQL Recovery Manager (версия Enterprise) доступный.
Я использую этот скрипт mylvmbackup на БД 250 + Гб, среди прочего. Работает очень хорошо, после создания снимка он выполняет параллельный mysql, чтобы убедиться, что снимок работает.
Если он работает на машине с центральным хранилищем, вы можете использовать ее снимки. Обычно это означает перевод базы данных в режим резервного копирования, чтобы она сбрасывала все записи на диск, а затем запускала кэширование в памяти, создавая моментальный снимок с вашего хранилища, а затем возвращая базу данных в нормальный режим. Затем вы можете смонтировать этот моментальный снимок на сервере резервного копирования и делать с ним все, что захотите, включая инкрементное резервное копирование.
Кроме того, это часто используется, когда у вас есть база данных, которая подвергается интенсивным запросам в конце месяца или квартала, например, финансовое приложение. Вместо использования моментального снимка вы можете клонировать этот согласованный моментальный снимок на другие диски и перенаправить все отчеты (что может снизить производственную производительность) на другие ресурсы хранения.