ວິທີການ Backup/Restore MySQL/MariaDB ແລະ PostgreSQL ໂດຍໃຊ້ເຄື່ອງມືອັດຕະໂນມັດແລະ Autopostgresqlbackup


ຖ້າທ່ານເປັນຜູ້ບໍລິຫານຖານຂໍ້ມູນ (DBA) ຫຼືມີຄວາມຮັບຜິດຊອບໃນການຮັກສາ, ສຳ ຮອງ, ແລະຟື້ນຟູຖານຂໍ້ມູນ, ທ່ານຮູ້ວ່າທ່ານບໍ່ສາມາດສູນເສຍຂໍ້ມູນໄດ້. ເຫດຜົນແມ່ນງ່າຍດາຍ: ການສູນເສຍຂໍ້ມູນບໍ່ພຽງແຕ່ ໝາຍ ເຖິງການສູນເສຍຂໍ້ມູນທີ່ ສຳ ຄັນເທົ່ານັ້ນ, ແຕ່ມັນກໍ່ອາດຈະເຮັດໃຫ້ທຸລະກິດຂອງທ່ານເສຍຫາຍທາງດ້ານການເງິນ ນຳ ອີກ.

ດ້ວຍເຫດຜົນດັ່ງກ່າວ, ທ່ານຕ້ອງແນ່ໃຈວ່າ:

1. ຖານຂໍ້ມູນຂອງທ່ານຖືກ ສຳ ຮອງເປັນແຕ່ລະໄລຍະ,
2. ສຳ ຮອງຂໍ້ມູນເຫລົ່ານັ້ນຖືກເກັບໄວ້ໃນບ່ອນທີ່ປອດໄພ, ແລະ
3. ທ່ານຝຶກຊ້ອມການຟື້ນຟູເປັນປະ ຈຳ.

ກິດຈະ ກຳ ສຸດທ້າຍນີ້ບໍ່ຄວນຖືກມອງຂ້າມ, ເພາະວ່າທ່ານບໍ່ຕ້ອງການທີ່ຈະກ້າວເຂົ້າສູ່ປະເດັນໃຫຍ່ໂດຍບໍ່ໄດ້ປະຕິບັດສິ່ງທີ່ຕ້ອງເຮັດໃນສະຖານະການດັ່ງກ່າວ.

ໃນບົດແນະ ນຳ ນີ້ພວກເຮົາຈະແນະ ນຳ ທ່ານກ່ຽວກັບສອງປະໂຫຍດທີ່ດີໃນການ ສຳ ຮອງຖານຂໍ້ມູນ MySQL/MariaDB ແລະ PostgreSQL ຕາມ ລຳ ດັບ: automysqlbackup ແລະ autopostgresqlbackup.

ເນື່ອງຈາກວ່າຍຸກສຸດທ້າຍແມ່ນອີງໃສ່ອະດີດ, ພວກເຮົາຈະສຸມໃສ່ ຄຳ ອະທິບາຍຂອງພວກເຮົາກ່ຽວກັບການອັດຕະໂນມັດແລະການເນັ້ນຄວາມແຕກຕ່າງກັບ autopgsqlbackup, ຖ້າມີຢູ່.

ຂໍແນະ ນຳ ໃຫ້ເກັບຂໍ້ມູນ ສຳ ຮອງໄວ້ໃນສ່ວນແບ່ງເຄືອຂ່າຍທີ່ຕິດຢູ່ໃນລະບົບ ສຳ ຮອງຂໍ້ມູນເພື່ອວ່າໃນກໍລະນີທີ່ມີລະບົບລົ້ມລະລາຍ, ທ່ານຍັງຈະໄດ້ຮັບການຄຸ້ມຄອງຢູ່.

ອ່ານ ຄຳ ແນະ ນຳ ທີ່ມີປະໂຫຍດຕໍ່ໄປນີ້ໃນ MySQL:

ການຕິດຕັ້ງຖານຂໍ້ມູນ MySQL/MariaDB/PostgreSQL

1. ຄູ່ມືນີ້ຄາດວ່າທ່ານຕ້ອງມີ MySQL/MariaDB/PostgreSQL ຍົກຕົວຢ່າງ, ຖ້າບໍ່, ກະລຸນາຕິດຕັ້ງຊຸດຕໍ່ໄປນີ້:

# 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. ທ່ານມີຖານຂໍ້ມູນການທົດສອບ MySQL/MariaDB/PostgreSQL ທີ່ທ່ານສາມາດໃຊ້ໄດ້ (ທ່ານໄດ້ຖືກແນະ ນຳ ໃຫ້ຢ່າໃຊ້ທັງ 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 - ບ່ອນທີ່ພວກເຂົາເກືອບຈະເຮັດວຽກຢູ່ນອກຫ້ອງ, ພວກເຮົາຈະໃຫ້ຄວາມກະຈ່າງແຈ້ງທີ່ ຈຳ ເປັນຕໍ່ມາໃນບົດຄວາມນີ້.

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.

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

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 (ອີກເທື່ອ ໜຶ່ງ, ມັນຈະບໍ່ ຈຳ ເປັນໃນ 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 ເທົ່ານັ້ນ, ແຕ່ຍັງມີການຕັ້ງຄ່າຂອງພວກມັນອີກດ້ວຍ. ທ່ານຈະເຫັນເອກະສານການຕັ້ງຄ່າໃນ:

<

  • ລົດຍົນອັດຕະໂນມັດ:/etc/default/automysqlbackup
  • ອັດຕະໂນມັດອັດຕະໂນມັດ:/etc/default/autopostgresqlbackup
  • ບົດສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕິດຕັ້ງແລະ ນຳ ໃຊ້ automysqlbackup ແລະ autopostgresqlbackup (ຮຽນຮູ້ການໃຊ້ວິທີ ທຳ ອິດຈະຊ່ວຍໃຫ້ທ່ານເປັນຜູ້ທີສອງໄດ້ເປັນຢ່າງດີ), ສອງຖານຂໍ້ມູນທີ່ດີໃນການ ສຳ ຮອງເຄື່ອງມືທີ່ສາມາດເຮັດໃຫ້ວຽກງານຂອງທ່ານເປັນ DBA ຫລືຜູ້ເບິ່ງແຍງລະບົບ/ວິສະວະກອນ ງ່າຍຂຶ້ນຫຼາຍ.

    ກະລຸນາຮັບຊາບວ່າທ່ານສາມາດຂະຫຍາຍໄປໃນຫົວຂໍ້ນີ້ໂດຍການຕັ້ງຄ່າແຈ້ງເຕືອນທາງອີເມວຫຼືສົ່ງເອກະສານ ສຳ ຮອງເປັນເອກະສານຕິດຄັດຜ່ານທາງອີເມວ - ບໍ່ ຈຳ ເປັນຕ້ອງເຂັ້ມງວດ, ແຕ່ອາດຈະມີປະໂຫຍດໃນບາງຄັ້ງຄາວ.

    ໃນຖານະເປັນບັນທຶກສຸດທ້າຍ, ຈື່ໄວ້ວ່າການອະນຸຍາດຂອງເອກະສານການຕັ້ງຄ່າຄວນຈະຖືກ ກຳ ນົດໃຫ້ຕ່ ຳ ສຸດ (0600 ໃນກໍລະນີຫຼາຍທີ່ສຸດ). ພວກເຮົາຫວັງວ່າຈະໄດ້ຍິນສິ່ງທີ່ທ່ານຄິດກ່ຽວກັບບົດຂຽນນີ້. ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະລົງບັນທຶກໃຫ້ພວກເຮົາໂດຍໃຊ້ແບບຟອມລຸ່ມນີ້.