Server database Anda menyimpan beberapa informasi perusahaan Anda yang paling berharga. Menjamin pencadangan basis data yang andal untuk mencegah kehilangan data jika terjadi kecelakaan atau kegagalan perangkat keras adalah kotak centang yang penting.
Baik itu server dengan beban tinggi 24x7 atau lingkungan volume transaksi rendah, Anda akan perlu membuat pencadangan sebagai prosedur yang lancar tanpa mengganggu kinerja server di lingkungan produksi.
Di blog ini, kita akan mengulas dua alat yang paling sering digunakan untuk menyelesaikan tugas ini, yaitu Percona XtraBackup dan Mariabackup. Kami akan mengulas persamaan dan perbedaan keduanya, serta cara menggunakannya.
Apa itu Percona XtraBackup?
Percona XtraBackup adalah alat open source untuk melakukan backup database MariaDB, MySQL dan Percona Server. Ini melakukan non-pemblokiran online (untuk mesin yang didukung), terkompresi dengan ketat, dan mengamankan cadangan penuh pada sistem transaksional sehingga aplikasi tetap tersedia sepenuhnya selama jendela pencadangan.
Dengan menggunakan alat ini, Anda dapat:
- Buat cadangan InnoDB terbaru, yang selesai dengan cepat dan andal, tanpa menjeda database Anda atau menambah beban ke server
- Buat cadangan tambahan
- Memindahkan tabel antar server MySQL secara online
- Buat budak replikasi MySQL baru dengan mudah
- Streaming cadangan MySQL terkompresi ke server lain
- Menghemat ruang disk dan bandwidth jaringan
Apa itu Mariabackup?
Mariabackup adalah alat sumber terbuka yang disediakan oleh MariaDB untuk melakukan pencadangan online fisik. Ini adalah fork dari Percona XtraBackup yang dirancang untuk bekerja dengan tabel terenkripsi dan terkompresi, dan merupakan metode pencadangan yang disarankan untuk database MariaDB.
MariaDB Server 10.1 memperkenalkan MariaDB Compression dan Data-at-Rest Encryption, tetapi solusi pencadangan yang ada tidak mendukung kemampuan pencadangan penuh untuk fitur-fitur ini. Jadi MariaDB memutuskan untuk memperluas XtraBackup (versi 2.3.8) dan menamai solusi ini Mariabackup.
Perbedaan Antara Percona XtraBackup dan Mariabackup
Seperti yang kami sebutkan sebelumnya, Mariabackup adalah alat pencadangan yang direkomendasikan untuk MariaDB, dan perbedaan utama dari XtraBackup adalah ia bekerja dengan tabel terenkripsi dan terkompresi.
Bagaimanapun, jika karena alasan tertentu Anda ingin menggunakan XtraBackup untuk database MariaDB Anda, ada beberapa hal yang perlu dipertimbangkan tergantung pada versi server MariaDB yang Anda miliki:
- MariaDB 10.1:Dengan data MariaDB yang tidak terkompresi dan tidak terenkripsi, Anda dapat menggunakan XtraBackup. Jika enkripsi atau kompresi digunakan, atau ketika innodb_page_size disetel ke beberapa nilai selain 16K, itu tidak akan berfungsi.
- MariaDB 10.2:Anda mungkin juga ingin mencoba menggunakan XtraBackup, tetapi perlu diketahui bahwa masalah mungkin terjadi karena bug ketidakcocokan format log MySQL 5.7 yang telah diperbaiki di MariaDB 10.2.2. Karena bug ini, cadangan yang disiapkan dengan XtraBackup mungkin gagal memulihkan beberapa transaksi. Hanya jika Anda menjalankan server dengan pengaturan innodb_undo_logs=1 ini tidak akan menjadi masalah.
- MariaDB 10.3 dan yang lebih baru:Kasus ini lebih sederhana. XtraBackup tidak kompatibel.
Selain itu, ada beberapa batasan yang perlu diperhatikan saat menggunakan Mariabackup:
- MyRocks:Dimulai dengan MariaDB 10.2.16 dan MariaDB 10.3.8, Mariabackup akan mencadangkan data MyRocks Storage Engine. Pencadangan sebagian data MyRocks saat ini tidak didukung. Pencadangan tambahan akan menyimpan salinan lengkap data MyRocks.
- Fungsi ekspor file:Sebelum MariaDB 10.2.9, Mariabackup tidak mendukung fungsi --export (ini membuat file ekspor untuk mengekspor data dari database). Anda dapat mengatasi batasan ini dengan menyiapkan cadangan seperti biasa (tanpa tanda --export), lalu mulai server dan jalankan FLUSH TABLES FOR EXPORT.
- File log:Versi Mariabackup hingga 10.2.8 tidak membuat file log kosong dan bergantung pada tindakan --copy-back yang dijalankan oleh pengguna (yang menghapus file log innodb lama, jika ada). Jika pengguna tidak menggunakan --copy-back atau memastikan bahwa direktori data kosong sebelum memulihkan, cadangan yang dibuat dengan versi ini mungkin menjadi tidak konsisten/rusak (karena adanya log InnoDB yang tersisa).
- Gcrypt:Enkripsi berbasis alat pencadangan (gcrypt) tidak didukung di Mariabackup.
- Opsi Innobackupex:Tidak ada symlink ke innobackupex (gunakan parameter --innobackupex sebagai gantinya). Alat innobackupex menambal dan menyediakan fitur tambahan di atas alat innobackup untuk mencadangkan tabel InnoDB dan MyISAM.
- Opsi ringkas:--opsi ringkas tidak didukung.
- Opsi pembuatan ulang indeks:opsi --rebuild_indexes tidak didukung.
- Tar untuk file cadangan:Dukungan untuk --stream=tar telah dihapus di Mariabackup 10.1.24 (Opsi --streams mengalirkan file cadangan ke stdout).
Akhirnya, Mariabackup dapat diinstal di Windows.
Proses Pencadangan Proses PemulihanCara - Percona XtraBackup dan Mariabackup
Mari kita lihat bagaimana kita dapat menginstal dan menggunakannya.
Pemasangan
Anda memiliki metode yang berbeda untuk menginstal XtraBackup dan Mariabackup. Mari kita coba instalasi dari repositori.
Instalasi XtraBackup
Di Debian/Ubuntu
$ wget https://repo.percona.com/apt/percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo dpkg -i percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo apt-get update
$ sudo apt-get install percona-xtrabackup-24
Di RedHat/CentOS
$ sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
$ sudo yum install percona-xtrabackup-24
Instalasi Mariabackup
Di Debian / Ubuntu
Mariabackup adalah bagian dari MariaDB Server dimulai dengan MariaDB 10.1.23.
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu bionic main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server-10.1
Di CentOS / RedHat
$ sudo vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-backup
Konfigurasi
Baik Xtrabackup dan Mariabackup membaca bagian [mysqld] dan [xtrabackup] dari file konfigurasi MySQL apa pun, dalam urutan itu. Dengan cara ini, ia dapat membaca parameter MySQL, seperti parameter datadir atau InnoDB.
Kita dapat memodifikasi parameter yang disertakan dalam bagian [mysqld] dengan memodifikasi nilainya di [xtrabackup], seperti yang telah disebutkan sebelumnya, parameter tersebut dibaca secara berurutan, sehingga hal terakhir yang kita miliki di [xtrabackup] akan diprioritaskan.
[mysqld]
datadir=/data/datadir
[xtrabackup]
target_dir=/backups/
Pengguna dengan hak istimewa minimum yang diperlukan untuk backup penuh adalah RELOAD, LOCK TABLES, PROCESS dan REPLICATION CLIENT:
mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'Password';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';
Dan kemudian, Anda dapat menambahkan pengguna ini di file konfigurasi MySQL:
[xtrabackup]
user=backupuser
password=Password
Anda juga dapat menggunakan Xtrabackup atau Mariabackup untuk melakukan State Snapshot Transfers saat Anda menggunakan Percona XtraDB Cluster atau MariaDB Galera Cluster. Anda harus menyetel variabel wsrep_sst_method dan wsrep_sst_auth di file konfigurasi:
[mysqld]
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=backupuser:Password
Atau
[mysqld]
wsrep_sst_method=mariabackup
wsrep_sst_auth=backupuser:Password
Penggunaan
Karena Mariabackup didasarkan pada XtraBackup, ia dapat digunakan dengan cara yang sama.
Sekarang mari kita lihat contoh menggunakan kedua metode untuk membuat, menyiapkan, dan memulihkan cadangan lengkap.
Membuat cadangan
Untuk membuat cadangan baru dengan XtraBackup atau Mariabackup, Anda perlu menambahkan opsi --backup dan --target-dir ke baris perintah:
$ xtrabackup --backup --target-dir=/backups/
Atau
$ mariabackup --backup --target-dir=/backups/
Dir target, tempat cadangan akan disimpan, dapat ditentukan dalam file konfigurasi MySQL. Proses pencadangan tidak akan menimpa file yang ada. Jika file tersebut ada, pencadangan akan gagal.
Transaction log of lsn (9755450) to (9755467) was copied.
181122 23:02:44 completed OK!
Jika semuanya berjalan dengan baik, baris terakhir yang Anda lihat seharusnya adalah "selesai OK!". Anda dapat membatalkan pencadangan kapan saja, karena tidak mengubah konten basis data.
[[email protected] ~]# ls -l /backups/
total 102448
-rw-r----- 1 root root 488 Nov 22 23:02 backup-my.cnf
-rw-r----- 1 root root 482 Nov 22 23:02 ib_buffer_pool
-rw-r----- 1 root root 104857600 Nov 22 23:02 ibdata1
drwxr-x--- 2 root root 4096 Nov 22 23:02 mysql
drwxr-x--- 2 root root 4096 Nov 22 23:02 performance_schema
drwxr-x--- 2 root root 4096 Nov 22 23:02 sakila
drwxr-x--- 2 root root 12288 Nov 22 23:02 sys
-rw-r----- 1 root root 64 Nov 22 23:02 xtrabackup_binlog_info
-rw-r----- 1 root root 113 Nov 22 23:02 xtrabackup_checkpoints
-rw-r----- 1 root root 533 Nov 22 23:02 xtrabackup_info
-rw-r----- 1 root root 2560 Nov 22 23:02 xtrabackup_logfile
Ini harus menjadi konten cadangan Anda. Itu bisa berubah tergantung pada database Anda.
Menyiapkan cadangan
Saat Anda memiliki cadangan yang dibuat dengan XtraBackup atau Mariabackup, Anda perlu mempersiapkannya untuk dipulihkan. File data tidak konsisten hingga file tersebut disiapkan, karena file tersebut disalin pada waktu yang berbeda selama durasi pencadangan. Jika Anda mencoba memulihkannya dan memulai database Anda, itu akan mendeteksi kerusakan dan crash sendiri untuk mencegah Anda menjalankan data yang tidak konsisten.
Untuk menyiapkan cadangan, Anda perlu menjalankan perintah xtrabackup atau mariabackup dengan opsi --prepare dan tentukan direktori target tempat penyimpanan cadangan.
$ xtrabackup --prepare --target-dir=/backups/
Atau
$ mariabackup --prepare --target-dir=/backups/
InnoDB: Shutdown completed; log sequence number 9757224
181122 23:05:29 completed OK!
Baris terakhir yang Anda lihat seharusnya adalah "Shutdown complete; log sequence number xxxxxxx" dan "completed OK!" jika semuanya berjalan baik-baik saja. Tidak disarankan untuk membatalkan proses persiapan karena dapat menyebabkan kerusakan file data dan cadangan tidak dapat digunakan.
Jika Anda ingin menggunakan cadangan ini dengan cadangan tambahan nanti, Anda harus menggunakan opsi --apply-log-only saat menyiapkannya, atau Anda tidak akan dapat melakukannya.
Memulihkan Cadangan
Setelah menyiapkan cadangan, Anda dapat menggunakan opsi pemulihan dengan parameter --copy-back atau --move-back, untuk menyalin atau memindahkan cadangan ke direktori data. Jika Anda tidak memiliki cukup ruang disk, Anda mungkin harus menggunakan opsi pindah. Juga, kita perlu menentukan direktori target tempat cadangan disimpan. Ingatlah bahwa datadir harus kosong dan layanan database harus dimatikan sebelum memulihkan cadangan.
$ xtrabackup --copy-back --target-dir=/backups/
Atau
$ mariabackup --copy-back --target-dir=/backups/
Ini pertama-tama akan menyalin/memindahkan tabel dan indeks MyISAM, tabel dan indeks InnoDB berikutnya dan file log pada akhirnya. Ini akan mempertahankan atribut file saat menyalinnya, Anda mungkin harus mengubah kepemilikan file ke mysql sebelum memulai server database, karena mereka akan dimiliki oleh pengguna yang membuat cadangan.
$ sudo chown -R mysql:mysql /var/lib/mysql
Ada beberapa parameter untuk digunakan dengan Xtrabackup dan Mariabackup. Anda dapat memeriksa parameter ini di sini untuk XtraBackup, dan di sini untuk Mariabackup.
ClusterControlSingle Console untuk Seluruh Infrastruktur Basis Data AndaCari tahu apa lagi yang baru di ClusterControlInstall ClusterControl GRATISMengelola Cadangan Anda di ClusterControl
Seperti yang kita lihat di atas, menjalankan pencadangan bukanlah ilmu roket. Itu juga dapat dijadwalkan dengan cron (tetapi waspadalah terhadap kegagalan diam!). Namun, skrip untuk membuat cadangan secara teratur bukanlah solusi manajemen pencadangan. Anda memerlukan cara untuk melaporkan cadangan Anda, dan memperingatkan kegagalan. Sekarang, mengonfigurasi cadangan di lingkungan Anda dan melihat cadangan berfungsi tanpa kesalahan tidak berarti semuanya baik-baik saja. Anda mungkin pernah mendengar tentang pencadangan Schrödinger, yang menyatakan bahwa kondisi pencadangan apa pun tidak diketahui hingga pemulihan dilakukan. Karena hal terburuk yang dapat terjadi adalah bencana dan Anda menyadari bahwa pencadangan salah karena suatu alasan. Anda mencoba memulihkan file yang telah dicadangkan, dan itu tidak mengembalikan apa yang Anda pikir telah Anda cadangkan, atau tidak memulihkan sama sekali! Lalu ada hal-hal seperti memindahkan file cadangan ke luar lokasi, mis. ke penyimpanan cloud eksternal, untuk pemulihan bencana. Enkripsi dan penanganan kunci penting untuk keamanan. Retensi cadangan lokal serta eksternal/arsip juga perlu dikelola.
Mari kita lihat bagaimana ClusterControl dapat membantu.
Jika Anda ingin menggunakan fitur ClusterControl Backup, buka ClusterControl -> Pilih Cluster -> Backup, dan di sana Anda dapat melihat backup Anda saat ini, membuat atau menjadwalkan yang baru.
Bagian Cadangan Kontrol ClusterMenggunakan opsi buat atau jadwalkan, kita dapat memilih keduanya, metode XtraBackup atau Mariabackup. Di bagian yang sama, kita dapat memilih server untuk mengambil cadangan, mengaktifkan pencadangan sebagian, memilih di mana Anda ingin menyimpan cadangan dan jika Anda ingin mengunggah cadangan ke cloud (AWS, Azure atau Google Cloud).
ClusterControl Buat Cadangan 1Kemudian, kita dapat memilih parameter cadangan seperti kompresi, enkripsi, dan retensi.
ClusterControl Buat Cadangan 2Dan ini adalah perintah yang akan dijalankan ClusterControl untuk Anda:
[16:37:58]: 192.168.100.120: Launching ( LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/my.cnf --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - > /root/backups/BACKUP-13/backup-full-2018-11-14_193757.xbstream.gz ) 2>&1.
Atau
[16:29:57]: 192.168.100.131: Launching ( LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - > /root/backups/BACKUP-11/backup-full-2018-11-14_192957.xbstream.gz ) 2>&1.
Perintah ini bisa berbeda tergantung pada parameter yang Anda pilih.
Seperti yang bisa kita lihat, ClusterControl adalah teman yang baik jika kita ingin menggunakan XtraBackup atau Mariabackup. Kita dapat menjalankan perintah pencadangan yang kompleks dengan cara yang mudah, dengan memilih opsi dari UI ClusterControl.
ClusterControl mendukung pencadangan penuh atau inkremental, sehingga kita dapat mengonfigurasi semua strategi pencadangan dari UI yang ramah.
Kesimpulan
Saat mencadangkan server MariaDB, disarankan untuk menggunakan alat Mariabackup. Namun, jika karena alasan tertentu Anda lebih suka menggunakan XtraBackup, Anda masih bisa. Tetapi Anda perlu mengingat batasan yang berlaku, seperti yang telah kami catat di blog ini. Dan terakhir, kita membahas bagaimana skrip untuk membuat cadangan database tidak sama dengan solusi manajemen pencadangan, dan melihat sekilas ClusterControl.
Beri tahu kami jika kami melewatkan perbedaan antara XtraBackup dan MariaBackup.
Pencadangan tanpa pemblokiran didukung untuk mesin penyimpanan InnoDB, XtraDB, dan HailDB. Mesin penyimpanan berikut dapat dicadangkan dengan menjeda penulisan sebentar di akhir pencadangan:MyISAM, Merge, dan Archive, termasuk tabel yang dipartisi, pemicu, dan opsi database.