Skip to content

Latest commit

 

History

History
106 lines (77 loc) · 4.4 KB

README.md

File metadata and controls

106 lines (77 loc) · 4.4 KB

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