Unsaon Pag-backup/Pagpasig-uli sa MySQL/MariaDB ug PostgreSQL Gamit ang Automysqlbackup ug Autopostgresqlbackup Tools


Kung ikaw usa ka database administrator (DBA) o responsable sa pagmentinar, pag-backup, ug pag-uli sa mga database, nahibal-an nimo nga dili nimo kaya nga mawala ang datos. Ang rason mao ang yano: ang pagkawala sa data dili lamang nagpasabot sa pagkawala sa importante nga impormasyon, apan mahimo usab nga makadaot sa imong negosyo sa pinansyal nga paagi.

Tungod niana nga rason, kinahanglan nimo nga sigurohon kanunay nga:

1. ang imong mga database gipaluyohan sa matag karon ug unya,
2. kadtong mga backup gitipigan sa luwas nga dapit, ug
3. regular ka nga maghimo ug restoration drills.

Kining kataposang kalihokan dili angayng palabyon, tungod kay dili nimo gusto nga modagan ngadto sa usa ka dakong isyu nga walay pagpraktis kon unsay kinahanglang buhaton sa maong sitwasyon.

Sa kini nga panudlo among ipaila kanimo ang duha ka nindot nga mga utilities aron i-back up ang MySQL/MariaDB ug PostgreSQL database, matag usa: automysqlbackup ug autopostgresqlbackup.

Tungod kay ang naulahi gibase sa nauna, among ipunting ang among katin-awan sa automysqlbackup ug i-highlight ang mga kalainan sa autopsqlbackup, kung naa man.

Kusog nga girekomenda nga tipigan ang mga backup sa usa ka bahin sa network nga gi-mount sa backup nga direktoryo aron kung mahitabo ang pagkahagsa sa tibuuk nga sistema, matabonan ka gihapon.

Basaha ang mosunod nga mapuslanong mga giya sa MySQL:

Pag-instalar sa MySQL/MariaDB/PostgreSQL Databases

1. Kini nga giya nagtuo nga kinahanglan nimo nga adunay MySQL/MariaDB/PostgreSQL nga pananglitan nga nagdagan, Kung dili, palihug i-install ang mosunod nga mga pakete:

# 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. Aduna kay testing MySQL/MariaDB/PostgreSQL database nga imong magamit (gitambagan ka nga DILI mogamit bisan automysqlbackup o autopostgresqlbackup sa usa ka palibot sa produksiyon hangtod nga masinati nimo kini nga mga himan).

Kung dili, paghimo og duha ka sampol nga database ug pun-a kini sa datos sa dili pa magpadayon. Niini nga artikulo akong gamiton ang mosunod nga mga database ug mga lamesa:

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);

Pag-instalar sa automysqlbackup ug autopgsqlbackup sa CentOS 7 ug Debian 8

3. Sa Debian 8, ang duha ka himan anaa sa mga repositoryo, mao nga ang pag-instalar niini kay yano ra sa pagdagan:

# aptitude install automysqlbackup autopostgresqlbackup

Samtang sa CentOS 7 kinahanglan nimo nga i-download ang mga script sa pag-install ug ipadagan kini. Sa mga seksyon sa ubos mag-focus lang kami sa pag-install, pag-configure, ug pagsulay sa kini nga mga himan sa CentOS 7 sukad alang sa Debian 8 - diin hapit na sila molihok sa gawas sa kahon, himuon namon ang kinahanglan nga mga pagpatin-aw sa ulahi niini nga artikulo.

4. Magsugod kita pinaagi sa paghimo og working directory sulod sa /opt aron ma-download ang script sa pag-install ug ipadagan kini:

# 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. Ang configuration file alang sa automysqlbackup nahimutang sulod sa /etc/automysqlbackup ubos sa ngalan nga myserver.conf. Atong tan-awon ang labing may kalabutan nga mga direktiba sa pag-configure:

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

Kung na-configure na nimo ang automysqlbackup sumala sa imong mga panginahanglan, gitambagan ka nga susihon ang README file nga makita sa /etc/automysqlbackup/README.

6. Kung andam ka na, ipadayon ug padagana ang programa, nga gipasa ang configuration file isip argumento:

# automysqlbackup /etc/automysqlbackup/myserver.conf

Ang usa ka dali nga pagsusi sa adlaw-adlaw nga direktoryo magpakita nga ang automysqlbackup malampuson nga nagdagan:

# pwd
# ls -lR daily

Siyempre mahimo nimong idugang ang usa ka crontab entry aron makadagan ang automysqlbackup sa usa ka oras sa adlaw nga labing angay sa imong mga panginahanglan (1:30 am kada adlaw sa ubos nga pananglitan):

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

7. Karon atong ihulog ang mariadb_db database sa katuyoan:

Himoon nato kini pag-usab ug ibalik ang backup. Sa prompt sa MariaDB, i-type ang:

CREATE DATABASE mariadb_db;
exit

Dayon pangitaa:

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

Ug ibalik ang backup:

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

Pag-instalar ug pag-configure sa autopostgresqlbackup sa CentOS 7

8. Aron ang autopostgresql molihok nga walay kasaypanan sa CentOS 7, kinahanglan una natong i-install ang pipila ka dependency:

# yum install mutt sendmail

Dayon atong balikon ang proseso sama kaniadto:

# 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

Himoon nato nga ma-executable ang script ug sugdi/pagana ang serbisyo:

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

Sa katapusan, usbon namon ang bili sa setting sa backup nga direktoryo sa:

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

Pagkahuman sa pag-configure sa file sa automysqlbackup, ang pag-configure sa kini nga himan dali ra (kana nga bahin sa buluhaton naa ra kanimo).

9. Sa CentOS 7, sukwahi sa Debian 8, ang autopostgresqlbackup labing maayo nga gipadagan ingon nga postgres system user, busa aron mahimo kana kinahanglan ka nga mobalhin sa kana nga account o magdugang ug cron job sa crontab file niini:

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

Ang backup nga direktoryo, sa paagi, kinahanglan nga buhaton ug ang mga pagtugot niini ug ang pagpanag-iya sa grupo kinahanglan nga i-set recursively sa 0770 ug postgres (pag-usab, DILI kini kinahanglanon sa Debian):

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

Ang resulta:

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

10. Karon mahimo nimong ibalik ang mga file kung gikinahanglan (hinumdomi nga buhaton kini ingon mga postgres sa gumagamit pagkahuman sa paghimo pag-usab sa walay sulod nga database):

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

Mga konsiderasyon sa Debian 8

Sama sa among gihisgutan sa sayo pa, dili lamang ang pag-instalar niini nga mga himan sa Debian mas prangka, kondili usab ang ilang tagsa-tagsa nga mga pag-configure. Makita nimo ang mga file sa pag-configure sa:

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

Summary

Sa kini nga artikulo among gipasabut kung giunsa ang pag-install ug paggamit sa automysqlbackup ug autopostgresqlbackup (pagkat-on kung giunsa ang paggamit sa una makatabang kanimo nga ma-master usab ang ikaduha), duha ka maayo nga database back up nga mga himan nga makahimo sa imong mga buluhaton ingon usa ka DBA o system administrator/engineer mas sayon.

Palihug timan-i nga mahimo nimong mapalapad kini nga hilisgutan pinaagi sa pag-set up sa mga abiso sa email o pagpadala sa mga backup nga file ingon mga attachment pinaagi sa email - dili higpit nga gikinahanglan, apan mahimo’g magamit usahay.

Ingon usa ka katapusan nga nota, hinumdomi nga ang mga pagtugot sa mga file sa pag-configure kinahanglan nga itakda sa minimum (0600 sa kadaghanan nga mga kaso). Kami nagpaabut nga makadungog kung unsa ang imong gihunahuna bahin sa kini nga artikulo. Mobati nga gawasnon nga ihulog kanamo ang usa ka nota gamit ang porma sa ubos.