mysqldump: укажите имя базы данных для каждого пользователя в ~/.my.cnf

Я использую общий сервер с несколькими пользователями. Каждый пользователь имеет свою собственную базу данных в MySQL и соответствующие учетные данные. Я создал шаблон systemd timer & service (т.е. sitetasks @.timer & sitetasks @.service) для ежедневного запуска mysqldump для резервного копирования базы данных каждого пользователя. Информация о пользователе читается mysqldump из файла .my.cnf в домашнем каталоге каждого пользователя.

Затем я могу запустить системный таймер / службу для конкретного пользователя (например, sitetasks@user1.service), чтобы создать резервную копию базы данных этого пользователя.

Тем не менее, я не могу найти способ указать имя базы данных в .my.cnf. Я посмотрел на параметр --databases, но это всего лишь флаг, а не способ указать базу данных или набор баз данных.

Я могу придумать несколько способов решить это по-разному:

  1. создайте пользовательский системный таймер / сервис - но это плохо масштабируется
  2. поместите файл.db-name в домашний каталог пользователей и прочитайте его при вызове mysqldump (что-то вроде mysqldump $(cat .db-name) > backup.sql) - но теперь мне нужен дополнительный файл
  3. похож на #2, но анализирует wp-config.php каждого пользователя (базы данных для Wordpress)
  4. убедитесь, что имя базы данных всегда совпадает с именем пользователя

Однако ни один из них не является настолько масштабируемым и переносимым, как возможность использовать существующий файл параметров MySQL .my.cnf.

Есть ли способ указать имя базы данных по умолчанию в .my.cnf?

1 ответ

Решение

Каждый пользователь имеет доступ к базе данных, к которой ему были предоставлены права доступа, поэтому, если вы дали mysqldump Инструкция по сбросу всех баз данных: --all-databasesтолько резервная копия базы данных этого пользователя и, конечно, все общие базы данных, к которым он имеет доступ. Обычно это information_schema только. Фактически это не делает размер дампа намного большим - никакая информация из этой схемы не сбрасывается - потому что там есть динамическая информация.
Таким образом, обеспечивая привилегии для каждого пользователя - у вас есть простое решение для резервного копирования баз данных этих пользователей, просто выгрузив "все базы данных".

Другие вопросы по тегам