Skip to content

Script that creates a backup of a list of MySQL databases

Notifications You must be signed in to change notification settings

LLIaMMaH/python-mysql-backup

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python MySQL Backup


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.

Требования:

  1. Python 3.8
  2. mysqldump
  • Windows: не проверял, но оставляю имеющуюся рекомендацию: загрузите mysqldump со страницы «Архивы продуктов MySQL» с https://downloads.mysql.com/archives/community/. После извлечения файла добавьте папку "bin" (включая mysqldump.exe) в переменную PATH среды окружения Windows, чтобы она была доступна из командной строки.
  • Linux: Установите MySQL Client.
  1. 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.
  1. gzip Для Windows можно скачать с https://gnuwin32.sourceforge.net/packages/gzip.htm

Настройки:

Определите пути входа в систему с помощью mysql_config_editor

В командной строке выполните следующее.

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
JSON файл

Переименуй файл dbbackup.json.template в dbbackup.json или создайте сами. Файл должен содержащий список БД для резервного копирования. Список БД должен быть в формате JSON. Смотри пример ниже.

[
  {
    "loginPath": "loginpath1",
    "dbName": "dbname1",
    "bkpPath": "/path/to/backup/folder1/"
  },
  {
    "loginPath": "loginpath2",
    "dbName": "dbname2",
    "bkpPath": "/path/to/backup/folder2/"
  }
]
Запуск скрипта (dbbackup.py)

В терминале выполните следующее:

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

About

Script that creates a backup of a list of MySQL databases

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%