1

Я использую общий сервер с несколькими пользователями. Каждый пользователь имеет свою собственную базу данных в 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 ответ1

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .