Cara Mencadangkan/Memulihkan MySQL/MariaDB dan PostgreSQL Menggunakan Alat 'Automysqlbackup' dan 'Autopostgresqlbackup'


Jika Anda adalah administrator basis data (DBA) atau bertanggung jawab memelihara, mencadangkan, dan memulihkan basis data, Anda tahu bahwa Anda tidak boleh kehilangan data. Alasannya sederhana: kehilangan data tidak hanya berarti hilangnya informasi penting, namun juga dapat merugikan bisnis Anda secara finansial.

Oleh karena itu, Anda harus selalu memastikan bahwa:

1. database Anda dicadangkan secara berkala,
2. cadangan tersebut disimpan di tempat yang aman, dan
3. Anda melakukan latihan restorasi secara teratur.

Kegiatan terakhir ini tidak boleh diabaikan, karena Anda tidak ingin mengalami masalah besar tanpa mempraktikkan apa yang perlu dilakukan dalam situasi seperti itu.

Dalam tutorial ini kami akan memperkenalkan Anda pada dua utilitas bagus untuk mencadangkan basis data MySQL/MariaDB dan PostgreSQL, masing-masing: automysqlbackup dan cadangan autopostgresql.

Karena yang terakhir ini didasarkan pada yang pertama, kami akan memfokuskan penjelasan kami pada automysqlbackup dan menyoroti perbedaan dengan autopgsqlbackup, jika ada.

Sangat disarankan untuk menyimpan cadangan di jaringan berbagi yang dipasang di direktori cadangan sehingga jika terjadi kerusakan sistem, Anda tetap terlindungi.

Baca panduan berguna berikut tentang MySQL:

Menginstal Database MySQL/MariaDB/PostgreSQL

1. Panduan ini mengasumsikan Anda harus menjalankan instance MySQL/MariaDB/PostgreSQL, Jika belum, silakan instal paket berikut:

Distribusi berbasis Fedora:

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

Debian dan turunannya:

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

2. Anda memiliki basis data pengujian MySQL/MariaDB/PostgreSQL yang dapat Anda gunakan (Anda disarankan untuk < strong style="color:red">JANGAN menggunakan automysqlbackup atau autopostgresqlbackup di lingkungan produksi sampai Anda terbiasa dengan alat-alat ini).

Jika tidak, buat dua database sampel dan isi dengan data sebelum melanjutkan. Pada artikel ini saya akan menggunakan database dan tabel berikut:

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

Menginstal automysqlbackup dan autopgsqlbackup di CentOS 7 dan Debian 8

3. Di Debian 8, kedua alat tersebut tersedia di repositori, jadi menginstalnya semudah menjalankannya:

aptitude install automysqlbackup autopostgresqlbackup

Sedangkan di CentOS 7 Anda perlu mengunduh skrip instalasi dan menjalankannya. Pada bagian di bawah ini kami akan fokus secara eksklusif pada instalasi, konfigurasi, dan pengujian alat-alat ini pada CentOS 7 karena untuk Debian 8 – dimana alat-alat tersebut hampir langsung berfungsi, kami akan buat klarifikasi yang diperlukan nanti di artikel ini.

Menginstal dan mengkonfigurasi automysqlbackup di CentOS 7

4. Mari kita mulai dengan membuat direktori kerja di dalam /opt untuk mengunduh skrip instalasi dan menjalankannya:

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. File konfigurasi untuk automysqlbackup terletak di dalam /etc/automysqlbackup dengan nama myserver.conf. Mari kita lihat arahan konfigurasi yang paling relevan:

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"

Setelah Anda mengonfigurasi automysqlbackup sesuai kebutuhan Anda, Anda sangat disarankan untuk memeriksa file README yang terdapat di /etc/automysqlbackup/README.

Pencadangan Basis Data MySQL

6. Jika Anda sudah siap, lanjutkan dan jalankan program, dengan meneruskan file konfigurasi sebagai argumen:

automysqlbackup /etc/automysqlbackup/myserver.conf

Pemeriksaan cepat pada direktori harian akan menunjukkan bahwa automysqlbackup telah berjalan dengan sukses:

pwd
ls -lR daily

Tentu saja Anda dapat menambahkan entri crontab untuk menjalankan automysqlbackup pada waktu yang paling sesuai dengan kebutuhan Anda (1:30 setiap hari dalam contoh di bawah):

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

Memulihkan Cadangan MySQL

7. Sekarang mari kita hapus database mariadb_db dengan sengaja:

Mari kita buat lagi dan pulihkan cadangannya. Di prompt MariaDB, ketik:

CREATE DATABASE mariadb_db;
exit

Kemudian temukan:

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

Dan pulihkan cadangan:

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;

Menginstal dan mengkonfigurasi autopostgresqlbackup di CentOS 7

8. Agar autopostgresql dapat bekerja dengan sempurna di CentOS 7, kita perlu menginstal beberapa dependensi terlebih dahulu:

yum install mutt sendmail

Lalu mari kita ulangi prosesnya seperti sebelumnya:

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

Mari kita buat skripnya dapat dieksekusi dan mulai/aktifkan layanannya:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Terakhir, kami akan mengedit nilai pengaturan direktori cadangan menjadi:

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

Setelah melalui file konfigurasi automysqlbackup, konfigurasi alat ini sangat mudah (bagian tugas itu terserah Anda).

9. Di CentOS 7, dibandingkan dengan Debian 8, autopostgresqlbackup paling baik dijalankan sebagai postgres pengguna sistem, jadi untuk melakukan itu Anda harus beralih ke akun tersebut atau menambahkan tugas cron ke file crontabnya:

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

Direktori cadangan, perlu dibuat dan izin serta kepemilikan grupnya harus diatur secara rekursif ke 0770 dan postgres (sekali lagi, ini TIDAK diperlukan di < kuat>Debian):

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

Hasil:

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

10. Sekarang Anda dapat memulihkan file bila diperlukan (ingatlah untuk melakukan ini sebagai pengguna postgres setelah membuat ulang database kosong):

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

Pertimbangan di Debian 8

Seperti yang kami sebutkan sebelumnya, tidak hanya instalasi alat-alat ini di Debian yang lebih mudah, tetapi juga konfigurasinya masing-masing. Anda akan menemukan file konfigurasi di:

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

Ringkasan

Pada artikel ini kami telah menjelaskan cara menginstal dan menggunakan automysqlbackup dan autopostgresqlbackup (mempelajari cara menggunakan yang pertama akan membantu Anda menguasai yang kedua juga), dua pencadangan database yang hebat alat yang dapat membuat tugas Anda sebagai DBA atau administrator/insinyur sistem menjadi lebih mudah.

Harap perhatikan bahwa Anda dapat memperluas topik ini dengan menyiapkan pemberitahuan email atau mengirimkan file cadangan sebagai lampiran melalui email – tidak sepenuhnya wajib, namun terkadang berguna.

Sebagai catatan terakhir, ingatlah bahwa izin file konfigurasi harus disetel ke minimum (0600 dalam banyak kasus). Kami menantikan pendapat Anda tentang artikel ini. Jangan ragu untuk mengirimkan pesan kepada kami menggunakan formulir di bawah ini.