Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да архивирате/възстановявате MySQL/MariaDB и PostgreSQL с помощта на инструменти „Automysqlbackup“ и „Autopostgresqlbackup“

Ако сте администратор на база данни (DBA ) или отговарят за поддържането, архивирането и възстановяването на бази данни, знаете, че не можете да си позволите да губите данни. Причината е проста:загубата на данни не само означава загуба на важна информация, но и може да навреди на бизнеса ви финансово.

Поради тази причина винаги трябва да сте сигурни, че:

1. вашите бази данни се архивират периодично,
2. тези резервни копия се съхраняват на сигурно място и
3. извършвате реставрационни тренировки редовно.

Тази последна дейност не бива да се пренебрегва, тъй като не искате да се сблъскате с голям проблем, без да сте упражнили какво трябва да се направи в такава ситуация.

В този урок ще ви запознаем с две хубави помощни програми за архивиране на MySQL /MariaDB и PostgreSQL бази данни, съответно:automysqlbackup и autopostgresqlbackup .

Тъй като последното се основава на първото, ние ще съсредоточим нашето обяснение върху automysqlbackup и подчертайте разликите с autopgsqlbackup , ако изобщо има такива.

Силно препоръчително е да съхранявате резервните копия в мрежов споделен ресурс, монтиран в директорията за архивиране, така че в случай на срив в цялата система да сте покрити.

Прочетете следните полезни ръководства за MySQL:

Основни команди за администриране на MySQL MySQL команди за архивиране и възстановяване за администриране на база данниphpMyBackupPro – Уеб базиран инструмент за архивиране на MySQLMySQLDumper:Базиран на PHP и Perl инструмент за архивиране на база данни на MySQL15 Основни въпроси за 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 база данни, която можете да използвате (препоръчително е да НЕ използвайте или automysqlbackup или autopostgresqlbackup в производствена среда, докато не се запознаете с тези инструменти).

В противен случай създайте две примерни бази данни и ги попълнете с данни, преди да продължите. В тази статия ще използвам следните бази данни и таблици:

MySQL/MariaDB
CREATE DATABASE mariadb_db;
CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, 
UserName VARCHAR(50), 
IsActive BOOL);
PostgreSQL
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 . Нека да разгледаме най-подходящите директиви за конфигурация:

myserver.conf – Конфигурирайте Automysqlbackup
# 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 protected])
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

Бърза проверка на ежедневнита директория ще покаже, че 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

Накрая ще редактираме стойността на настройката на резервната директория на:

autopostgresqlbackup.sh - Конфигуриране на Autopostgresqlbackup
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 (отново, това НЯМА да е необходимо в 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 (научаването как да използвате първия ще ви помогне да овладеете и втория), два страхотни инструмента за архивиране на база данни, които могат да улеснят задачите ви като DBA или системен администратор/инженер.

Моля, имайте предвид, че можете да разширите тази тема, като настроите известия по имейл или изпращане на архивни файлове като прикачени файлове по имейл – не е строго задължително, но понякога може да е полезно.

Като последна забележка, не забравяйте, че разрешенията на конфигурационните файлове трябва да бъдат настроени на минимум (0600 в повечето случаи). Очакваме с нетърпение да чуем какво мислите за тази статия. Чувствайте се свободни да ни изпратите бележка, като използвате формуляра по-долу.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите последния ден от месеца за дадена дата в MySQL

  2. Как да намерите и замените текст в таблицата на mysql

  3. Как да изтриете потребител на база данни на MySQL в cPanel

  4. Съхранение и показване на Unicode низ (हिन्दी) с помощта на PHP и MySQL

  5. MySQL сравнява низ DATE с низ от поле DATETIME