Kā dublēt/atjaunot MySQL/MariaDB un PostgreSQL, izmantojot Automysqlbackup un Autopostgresqlbackup rīkus


Ja esat datu bāzes administrators (DBA) vai esat atbildīgs par datu bāzu uzturēšanu, dublēšanu un atjaunošanu, jūs zināt, ka nevarat atļauties zaudēt datus. Iemesls ir vienkāršs: datu zaudēšana nozīmē ne tikai svarīgas informācijas zaudēšanu, bet arī finansiālu kaitējumu jūsu biznesam.

Šī iemesla dēļ jums vienmēr jāpārliecinās, ka:

1. jūsu datu bāzes tiek regulāri dublētas,
2. šīs dublējumkopijas tiek glabātas drošā vietā un
3. jūs regulāri veicat atjaunošanas vingrinājumus.

Nevajadzētu aizmirst par šo pēdējo darbību, jo jūs nevēlaties saskarties ar svarīgu problēmu, ja neesat praktizējis to, kas jādara šādā situācijā.

Šajā apmācībā mēs jūs iepazīstināsim ar diviem jaukiem utilītiem, lai dublētu attiecīgi MySQL/MariaDB un PostgreSQL datubāzes: automysqlbackup un autopostgresqlbackup.

Tā kā pēdējais ir balstīts uz pirmo, mēs pievērsīsimies skaidrojumam par automysqlbackup un uzsvērsim atšķirības ar autopgsqlbackup, ja tādas vispār ir.

Ir ļoti ieteicams dublējumkopijas glabāt tīkla koplietojumā, kas uzstādīts dublējuma direktorijā, lai visas sistēmas avārijas gadījumā jūs joprojām tiktu aizsargāts.

Lasiet šādus noderīgus MySQL ceļvežus:

MySQL/MariaDB/PostgreSQL datu bāzu instalēšana

1. Šajā rokasgrāmatā tiek pieņemts, ka jums jādarbojas MySQL/MariaDB/PostgreSQL instancei. Ja nē, lūdzu, instalējiet šādas paketes:

# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Jums ir testēšanas MySQL/MariaDB/PostgreSQL datu bāze, kuru varat izmantot (ieteicams neievietot automysqlbackup vai autopostgresqlbackup ražošanas vidē, kamēr neesat iepazinies ar šiem rīkiem).

Pretējā gadījumā pirms turpināšanas izveidojiet divas datu bāzes paraugus un aizpildiet tos ar datiem. Šajā rakstā es izmantošu šādas datu bāzes un tabulas:

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 un autopgsqlbackup instalēšana centOS 7 un Debian 8

3. Debian 8 abos rīkos ir pieejami krātuves, tāpēc to instalēšana ir tikpat vienkārša kā palaišana:

# aptitude install automysqlbackup autopostgresqlbackup

CentOS 7 jums būs jālejupielādē instalācijas skripti un tie jāpalaiž. Turpmākajās sadaļās mēs koncentrēsimies tikai uz šo rīku instalēšanu, konfigurēšanu un testēšanu CentOS 7, jo Debian 8 - kur tie gandrīz nedarbojas, mēs šajā rakstā sniegsim nepieciešamos skaidrojumus.

4. Sāksim, izveidojot darba direktoriju /opt iekšpusē, lai lejupielādētu instalācijas skriptu un palaistu to:

# 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 konfigurācijas fails atrodas/etc/automysqlbackup iekšpusē ar nosaukumu myserver.conf. Apskatīsim visatbilstošākās konfigurācijas direktīvas:

# 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"

Kad esat konfigurējis automysqlbackup atbilstoši savām vajadzībām, iesakām pārbaudīt failu README, kas atrodams/etc/automysqlbackup/README.

6. Kad esat gatavs, dodieties uz priekšu un palaidiet programmu, konfigurācijas failu nododot kā argumentu:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Ātra ikdienas direktorija pārbaude parādīs, ka automysqlbackup ir veiksmīgi darbojies:

# pwd
# ls -lR daily

Protams, jūs varat pievienot crontab ierakstu, lai palaistu automysqlbackup diennakts laikā, kas vislabāk atbilst jūsu vajadzībām (zemāk esošajā piemērā katru dienu 1:30 rītā):

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

7. Tagad nolaidīsim mariadb_db datu bāzi ar nolūku:

Izveidosim to vēlreiz un atjaunosim dublējumu. MariaDB uzvednē ierakstiet:

CREATE DATABASE mariadb_db;
exit

Pēc tam atrodiet:

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

Un atjaunojiet dublējumu:

# 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 instalēšana un konfigurēšana CentOS 7

8. Lai autopostgresql darbotos nevainojami CentOS 7, mums vispirms būs jāinstalē dažas atkarības:

# yum install mutt sendmail

Tad ļauj atkārtot procesu kā iepriekš:

# 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

Ļauj padarīt skriptu izpildāmu un palaist/iespējot pakalpojumu:

# chmod 755 autopostgresqlbackup.sh
# systemctl start postgresql
# systemctl enable postgresql

Visbeidzot, mēs rediģēsim dublējuma direktorijas iestatījuma vērtību:

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

Pēc automatysqlbackup konfigurācijas faila nokārtošanas šī rīka konfigurēšana ir ļoti vienkārša (šī uzdevuma daļa ir atstāta jūsu ziņā).

9. CentOS 7, atšķirībā no Debian 8, autopostgresqlbackup vislabāk ir palaist kā postgres sistēmas lietotāju, tāpēc, lai to izdarītu, jums vajadzētu vai nu pārslēgties uz šo kontu, vai arī pievienot cron darbu tā crontab failam:

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

Starp citu, ir jāizveido dublējuma direktorijs, un tā atļaujas un grupas īpašumtiesības rekursīvi jāiestata uz 0770 un postgres (atkal tas NAV vajadzīgs Debian):

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

Rezultāts:

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

10. Tagad jūs varat atjaunot failus, kad nepieciešams (atcerieties to darīt kā lietotāja postgres pēc tukšās datu bāzes atjaunošanas):

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

Apsvērumi Debian 8

Kā jau minējām iepriekš, vienkāršāka ir ne tikai šo rīku instalēšana Debianā, bet arī to attiecīgās konfigurācijas. Konfigurācijas failus atradīsit:

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

Kopsavilkums

Šajā rakstā mēs esam paskaidrojuši, kā instalēt un izmantot automysqlbackup un autopostgresqlbackup (iemācoties izmantot pirmo, jūs apgūsit arī otro), divus lieliskus datu bāzes dublēšanas rīkus, kas var padarīt jūsu uzdevumus kā DBA vai sistēmas administratora/inženiera daudz vieglāk.

Lūdzu, ņemiet vērā, ka varat izvērsties par šo tēmu, izveidojot e-pasta paziņojumus vai nosūtot dublējuma failus kā pielikumus pa e-pastu - tas nav obligāti nepieciešams, bet dažreiz tas var noderēt.

Kā pēdējo piezīmi atcerieties, ka konfigurācijas failu atļaujām jābūt minimālām (lielākajā daļā gadījumu - 0600). Mēs ceram dzirdēt, ko jūs domājat par šo rakstu. Jūtieties brīvi nomest mums piezīmi, izmantojot zemāk esošo veidlapu.