Поиск по сайту:

Как выполнить резервное копирование/восстановление MySQL/MariaDB и PostgreSQL с помощью инструментов Automysqlbackup и Autopostgresqlbackup


Если вы являетесь администратором базы данных (DBA) или отвечаете за обслуживание, резервное копирование и восстановление баз данных, вы знаете, что не можете позволить себе потерять данные. Причина проста: потеря данных не только означает потерю важной информации, но и может нанести финансовый ущерб вашему бизнесу.

По этой причине вы всегда должны убедиться, что:

1. резервное копирование ваших баз данных осуществляется на периодической основе,
2. эти резервные копии хранятся в надежном месте, и
3. вы регулярно проводите тренировки по восстановлению.

Это последнее действие не следует упускать из виду, так как вы не хотите столкнуться с серьезной проблемой, не попрактиковавшись в том, что нужно делать в такой ситуации.

В этом уроке мы познакомим вас с двумя замечательными утилитами для резервного копирования баз данных MySQL/MariaDB и PostgreSQL соответственно: automysqlbackup и autopostgresqlbackup.

Поскольку последний основан на первом, мы сосредоточим наше объяснение на automysqlbackup и выделим различия с autogsqlbackup, если они вообще есть.

Настоятельно рекомендуется хранить резервные копии в общей сетевой папке, смонтированной в каталоге резервных копий, чтобы в случае общесистемного сбоя вы все равно были защищены.

Прочтите следующие полезные руководства по MySQL:

Установка баз данных MySQL/MariaDB/PostgreSQL

1. В этом руководстве предполагается, что у вас должен быть запущен экземпляр MySQL/MariaDB/PostgreSQL. Если нет, установите его. следующие пакеты:

Дистрибутивы на базе Fedora:

yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs

Debian и производные:

aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. У вас есть тестовая база данных MySQL/MariaDB/PostgreSQL, которую вы можете использовать (рекомендуется 2.) strong style="color:red">НЕ используйте automysqlbackup или autopostgresqlbackup в производственной среде, пока не познакомитесь с этими инструментами).

В противном случае создайте две образцы баз данных и заполните их данными, прежде чем продолжить. В этой статье я буду использовать следующие базы данных и таблицы:

CREATE DATABASE mariadb_db;
CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, 
UserName VARCHAR(50), 
IsActive BOOL);

CREATE DATABASE postgresql_db;
CREATE TABLE tecmint_tbl (
UserID SERIAL PRIMARY KEY,
UserName VARCHAR(50),
IsActive BOOLEAN);

Установка automysqlbackup и autopgsqlbackup в CentOS 7 и Debian 8

3. В Debian 8 оба инструмента доступны в репозиториях, поэтому установить их так же просто, как запустить:

aptitude install automysqlbackup autopostgresqlbackup

Тогда как в CentOS 7 вам нужно будет скачать сценарии установки и запустить их. В разделах ниже мы сосредоточимся исключительно на установке, настройке и тестировании этих инструментов в CentOS 7, поскольку для Debian 8, где они работают практически «из коробки», мы будем сделайте необходимые разъяснения далее в этой статье.

Установка и настройка automysqlbackup в CentOS 7

4. Начнем с создания рабочего каталога внутри /opt, чтобы загрузить сценарий установки и запустить его:

mkdir /opt/automysqlbackup
cd /opt/automysqlbackup
wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz
tar zxf automysqlbackup-v3.0_rc6.tar.gz
./install.sh

5. Файл конфигурации для automysqlbackup находится внутри /etc/automysqlbackup под именем myserver.conf. Давайте посмотрим на наиболее важные директивы конфигурации:

Username to access the MySQL server
CONFIG_mysql_dump_username='root'
Password
CONFIG_mysql_dump_password='YourPasswordHere'
Host name (or IP address) of MySQL server
CONFIG_mysql_dump_host='localhost'
Backup directory
CONFIG_backup_dir='/var/backup/db/automysqlbackup'
List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... )
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_names=(AddYourDatabase Names Here)
List of databases for Monthly Backups.
set to (), i.e. empty, if you want to backup all databases
CONFIG_db_month_names=(AddYourDatabase Names Here)
Which day do you want monthly backups? (01 to 31)
If the chosen day is greater than the last day of the month, it will be done
on the last day of the month.
Set to 0 to disable monthly backups.
CONFIG_do_monthly="01"
Which day do you want weekly backups? (1 to 7 where 1 is Monday)
Set to 0 to disable weekly backups.
CONFIG_do_weekly="5"
Set rotation of daily backups. VALUE*24hours
If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed.
CONFIG_rotation_daily=6
Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks.
CONFIG_rotation_weekly=35
Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months.
CONFIG_rotation_monthly=150
Include CREATE DATABASE statement in backup?
CONFIG_mysql_dump_create_database='no'
Separate backup directory and file for each DB? (yes or no)
CONFIG_mysql_dump_use_separate_dirs='yes'
Choose Compression type. (gzip or bzip2)
CONFIG_mysql_dump_compression='gzip'
What would you like to be mailed to you?
- log   : send only log file
- files : send log file and sql files as attachments (see docs)
- stdout : will simply output the log to the screen if run manually.
- quiet : Only send logs if an error occurs to the MAILADDR.
CONFIG_mailcontent='quiet'
Email Address to send mail to? ([email )
CONFIG_mail_address='root'
Do you wish to encrypt your backups using openssl?
#CONFIG_encrypt='no'
Choose a password to encrypt the backups.
#CONFIG_encrypt_password='password0123'
Command to run before backups (uncomment to use)
#CONFIG_prebackup="/etc/mysql-backup-pre"
Command run after backups (uncomment to use)
#CONFIG_postbackup="/etc/mysql-backup-post"

После того как вы настроили automysqlbackup в соответствии со своими потребностями, настоятельно рекомендуем просмотреть файл README, расположенный в /etc/automysqlbackup/README.

Резервное копирование базы данных MySQL

6. Когда вы будете готовы, запустите программу, передав файл конфигурации в качестве аргумента:

automysqlbackup /etc/automysqlbackup/myserver.conf

Быстрая проверка каталога daily покажет, что automysqlbackup выполнен успешно:

pwd
ls -lR daily

Конечно, вы можете добавить запись в crontab для запуска automysqlbackup в то время суток, которое лучше всего соответствует вашим потребностям (1:30 каждый день в приведенном ниже примере):

30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Восстановление резервной копии MySQL

7. Теперь специально удалим базу данных mariadb_db:

Создадим его заново и восстановим резервную копию. В командной строке MariaDB введите:

CREATE DATABASE mariadb_db;
exit

Затем найдите:

cd /var/backup/db/automysqlbackup/daily/mariadb_db
ls

И восстанавливаем резервную копию:

mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql
mysql -u root -p
MariaDB [(none)]> USE mariadb_db; 
MariaDB [(none)]> SELECT * FROM tecmint_tb1;

Установка и настройка autopostgresqlbackup в CentOS 7

8. Чтобы autopostgresql безупречно работал в CentOS 7, нам необходимо сначала установить некоторые зависимости:

yum install mutt sendmail

Затем повторим процесс, как раньше:

mkdir /opt/autopostgresqlbackup
cd /opt/autopostgresqlbackup
wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0
mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Давайте сделаем скрипт исполняемым и запустим/включим сервис:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Наконец, мы изменим значение параметра каталога резервного копирования на:

BACKUPDIR="/var/backup/db/autopostgresqlbackup"

После использования файла конфигурации automysqlbackup настроить этот инструмент очень просто (эта часть задачи остается на ваше усмотрение).

9. В CentOS 7, в отличие от Debian 8, autopostgresqlbackup лучше всего запускать как postgres системный пользователь, поэтому для этого вам следует либо переключиться на эту учетную запись, либо добавить задание cron в ее файл crontab:

crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Между прочим, необходимо создать каталог резервных копий, а его разрешения и принадлежность к группе должны быть рекурсивно установлены на 0770 и postgres (опять же, это НЕ будет необходимо в 0770 и postgres). Strong>Debian):

mkdir /var/backup/db/autopostgresqlbackup
chmod -R 0770 /var/backup/db/autopostgresqlbackup
chgrp -R postgres /var/backup/db/autopostgresqlbackup

Результат:

cd /var/backup/db/autopostgresqlbackup
pwd
ls -lR daily

10. Теперь вы можете восстанавливать файлы при необходимости (не забудьте сделать это от имени пользователя postgres после воссоздания пустой базы данных):

gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db

Особенности Debian 8

Как мы упоминали ранее, не только установка этих инструментов в Debian является более простой, но и их соответствующие настройки. Файлы конфигурации вы найдете здесь:

  1. Automysqlbackup: /etc/default/automysqlbackup
  2. Autopostgresqlbackup: /etc/default/autopostgresqlbackup

Краткое содержание

В этой статье мы объяснили, как установить и использовать automysqlbackup и autopostgresqlbackup (изучение того, как использовать первый, поможет вам освоить и второй), два отличных средства резервного копирования баз данных. инструменты, которые могут значительно облегчить ваши задачи в качестве администратора базы данных или системного администратора/инженера.

Обратите внимание, что вы можете расширить эту тему, настроив уведомления по электронной почте или отправив резервные копии файлов в виде вложений по электронной почте. Это не является строго обязательным, но иногда может пригодиться.

В заключение помните, что права доступа к файлам конфигурации должны быть установлены на минимум (в большинстве случаев 0600). Мы с нетерпением ждем вашего мнения об этой статье. Не стесняйтесь оставить нам сообщение, используя форму ниже.