Python скрипт для создания резервных копий MySQL базы данных с использованием mysqldump, mysql_config_editor и gzip. Первоначальная версия была взята с http://tecadmin.net/python-script-for-mysql-database-backup/ Rahul Kumar. Версия, которую использовал я была взята с https://github.com/carlouni/python-mysql-backup Gonzalo Carlo Cardenas Magno.
- Python 3.8
- mysqldump
- Windows: не проверял, но оставляю имеющуюся рекомендацию: загрузите mysqldump со страницы «Архивы продуктов MySQL» с https://downloads.mysql.com/archives/community/. После извлечения файла добавьте папку "bin" (включая mysqldump.exe) в переменную PATH среды окружения Windows, чтобы она была доступна из командной строки.
- Linux: Установите MySQL Client.
- mysql_config_editor Передача паролей в командной строке — плохая практика. mysql_config_editor позволяет сохранять аутентификацию в файле .mylogin.cnf, поэтому вам не нужно передавать его в командную строку. Для получения дополнительной информации перейдите по ссылке https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html
- Windows: Он также включен в «Архивы продуктов MySQL».
- Linux: Это часть инструментов клиента MySQL.
- gzip Для Windows можно скачать с https://gnuwin32.sourceforge.net/packages/gzip.htm
В командной строке выполните следующее.
shell> mysql_config_editor set --login-path=loginpath1 --host=yourdbhost1 --user=dbuser1 --password
Enter password: enter password "dbpass1" here
Это сохранит вашу аутентификацию в .mylogin.cnf для будущего использования. Повторите данный шаг для всех БД, которые вы хотите включить в резервную копию.
Чтобы проверить пути входа в систему, выполните следующее. Эти пути входа будут использоваться в вашем файле JSON.
shell> mysql_config_editor print --all
В итоге у вас должен вывестить список настроек, которые вы задали.
[loginpath1]
user = dbuser1
password = *****
host = yourdbhost1
[loginpath2]
user = dbuser2
password = *****
host = yourdbhost2
Переименуй файл dbbackup.json.template
в dbbackup.json
или создайте сами. Файл должен содержащий список БД для резервного копирования. Список БД должен быть в формате JSON. Смотри пример ниже.
[
{
"loginPath": "loginpath1",
"dbName": "dbname1",
"bkpPath": "/path/to/backup/folder1/"
},
{
"loginPath": "loginpath2",
"dbName": "dbname2",
"bkpPath": "/path/to/backup/folder2/"
}
]
В терминале выполните следующее:
shell> /path/to/dbbackup.py /path/to/your_database_list.json
или
shell> python3 /path/to/dbbackup.py /path/to/your_database_list.json
Скрипт выведет что-то вроде.
Backing up DB: dbname1
/path/to/backup/folder1/20200422-152835/dbname1.sql
Backup script completed
Your backups has been created in '/path/to/backup/folder1/20200422-152835' directory
Backing up DB: dbname2
/path/to/backup/folder1/20200422-152835/dbname2.sql
Backup script completed
Your backups has been created in '/path/to/backup/folder2/20200422-152835' directory
Backup results:
--------------
dbname1 ==> Succeeded
dbname2 ==> Succeeded