Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyesuaikan Cadangan MySQL &MariaDB Anda dengan ClusterControl

Fitur manajemen pencadangan terpusat ClusterControl mendukung mysqldump standar, pencadangan Percona Xtrabackup, dan Mariabackup yang disediakan oleh MariaDB. Kami yakin argumen baris perintah yang dipilih untuk masing-masing metode optimal untuk sebagian besar beban kerja database, dan sesuai dengan praktik terbaik pencadangan MySQL. Kami mendasarkan diri pada semua umpan balik yang kami terima selama bertahun-tahun, saat bekerja dengan DBA dan sysadmin. Namun, konfigurasi mungkin tidak cukup dalam beberapa keadaan. Anda mungkin masih ingin menyesuaikannya agar sesuai dengan lingkungan Anda, menggunakan metode pencadangan masing-masing. Dalam postingan ini, kami akan menunjukkan cara melakukannya.

mysqldump

Untuk melakukan pencadangan dari UI ClusterControl, buka ClusterControl -> Pilih Cluster -> bagian Cadangan. Di sini Anda dapat melihat cadangan yang dihasilkan dan Anda dapat membuat atau menjadwalkan yang baru.

Dari UI ClusterControl, kami memiliki beberapa opsi berbeda untuk mengambil cadangan. Kita dapat membuat satu dumpfile untuk setiap database, mengaktifkan pencadangan sebagian, menyimpan cadangan di node atau di server ClusterControl; kami dapat menentukan direktori dan subdirektori pencadangan, atau kami dapat mengarsipkan cadangan secara otomatis ke awan (AWS, Google Cloud, atau Azure) menggunakan fitur unggah awan.

Selain itu, kita dapat menggunakan kompresi, mengenkripsi cadangan, dan menentukan periode penyimpanan.

Secara default, ClusterControl memungkinkan kita untuk memilih di antara 4 jenis dump yang berbeda untuk melakukan pencadangan:

  • Skema dan Data:Skema dan data basis data
  • Skema Saja:Skema basis data
  • Hanya Data:Data basis data
  • MySQL Db Only:database sistem MySQL

Katakanlah kami memiliki 5 basis data dan kami memilih untuk mencadangkan semuanya. Inilah yang akan dijalankan ClusterControl saat melakukan pencadangan menggunakan metode mysqldump (perintah dipangkas dengan garis miring terbalik agar mudah dibaca):

  • Skema dan Data
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-1/mysqldump_2018-11-06_203010_schemaanddata.sql.gz'.
  • Hanya Skema
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-data \
    --add-drop-table \
    --triggers \
    --routines \
    --events \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    |gzip -6 -c > /root/backups/BACKUP-2/mysqldump_2018-11-06_210040_schemaonly.sql.gz'.
  • Hanya Data
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --no-create-info \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-triggers \
    --skip-add-locks \
    --set-gtid-purged=OFF \
    --databases mysql proxydemo sakila sbtest mydb \
    --ignore-table='mysql.innodb_index_stats' \
    --ignore-table='mysql.innodb_table_stats' \
    |gzip -6 -c > /root/backups/BACKUP-3/mysqldump_2018-11-06_210445_dataonly.sql.gz'.
  • Hanya DB MySQL
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --single-transaction \
    --skip-comments \
    --skip-lock-tables \
    --skip-add-locks \
    --set-gtid-purged=OFF mysql \
    |gzip -6 -c > /root/backups/BACKUP-5/mysqldump_2018-11-06_211135_mysqldbonly.sql.gz'.

Jika node MySQL kita menghasilkan log biner, kita akan memiliki parameter master-data=2 yang disertakan dalam perintah di atas dan 1 tipe dump tambahan tersedia:

  • Sepenuhnya kompatibel dengan PITR
    $ /usr/bin/mysqldump \
    --defaults-file=/etc/my.cnf \
    --flush-privileges \
    --hex-blob \
    --opt \
    --master-data=1 \
    --single-transaction \
    --skip-lock-tables \
    --skip-lock-tables \
    --triggers \
    --routines \
    --events \
    --all-databases \
    |gzip -6 -c > /root/backups/BACKUP-6/mysqldump_2018-11-06_211451_complete.sql.gz'.

Dari baris perintah di atas, kita dapat melihat bahwa pada setiap perintah mysqldump, ClusterControl menyertakan file konfigurasi MySQL ke dalam argumen --defaults-file-nya. Dengan memiliki ini, proses mysqldump dapat membaca isi dari direktif mysqldump. Secara default ClusterControl mengonfigurasi kredensial pengguna cadangan dalam file terpisah di /etc/my.cnf.d/secrets-backup.cnf dan max_allowed_packet di my.cnf, mirip dengan berikut ini:

$ my.cnf

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8

$ secret-backup.cnf

[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE

Keuntungannya adalah kita dapat menyertakan beberapa opsi tambahan untuk mysqldump. Sayangnya, argumen --defaults-file hanya dapat ditentukan sebagai argumen terdepan. Perhatikan bahwa argumen baris perintah yang terakhir diutamakan pada apa yang telah dikonfigurasi di dalam my.cnf di bawah arahan [mysqldump] berdasarkan urutan kemunculannya. Misalnya, jika kita menambahkan skip-comments=0 di dalam my.cnf, sedangkan di akhir perintah mysqldump, ada --skip-comments (atau --skip-comments=1), yang pertama akan diabaikan dan yang terakhir akan digunakan.

Namun demikian, kami masih dapat menggunakannya sebagai bagian dari penyesuaian cadangan kami dengan menggunakan opsi cadangan mysqldump lainnya. Misalnya, kita dapat mengecualikan tabel yang tidak ingin kita backup dengan menggunakan parameter abaikan-tabel (dengan format “database.table”). Tambahkan baris berikut ke dalam file konfigurasi MySQL:

[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1

Setelah dikonfigurasi, kita dapat memicu tugas mysqldump baru dari ClusterControl dan tabel tersebut akan dilewati oleh mysqldump. Tidak diperlukan restart MySQL.

Anda dapat memeriksa dokumentasi mysqldump untuk informasi lebih lanjut.

Percona Xtrabackup

ClusterControl menjalankan Xtrabackup tergantung pada opsi yang Anda pilih. Itu bisa penuh atau inkremental dan Anda dapat memilih beberapa variabel dari UI ClusterControl. Pertimbangkan hal berikut:

Pada langkah ini Anda dapat memilih beberapa variabel yang telah kami sebutkan sebelumnya di bagian mysqldump, dan kemudian:

Kami dapat menentukan beberapa detail seperti desync node selama backup, Xtrabackup Parallel Copy Threads, dan banyak lagi.

Berdasarkan opsi di atas, perintah Xtrabackup yang lengkap adalah:

$ ulimit -n 256000 && LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf  --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - | socat - TCP4:192.168.100.110:9999 ) 2>&1.

Perintah pertama "ulimit -n 256000" adalah untuk memastikan bahwa Percona Xtrabackup memiliki hak yang cukup untuk mengakses sejumlah besar deskriptor file (jika database berisi banyak tabel). Perhatikan --defaults-file=/etc/mysql/my.cnf, yang mirip dengan mysqldump, di mana innobackupex membaca konten konfigurasi MySQL pada arahan dan variabel berikut:

[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]

Jika Anda ingin menyesuaikan opsi pencadangan untuk Percona Xtrabackup, Anda dapat menambahkannya langsung di bawah arahan [xtrabackup]. Sebagai contoh, katakanlah kita ingin Xtrabackup mencetak posisi log biner saat cadangan diambil, kita dapat menambahkan sesuatu seperti ini:

[xtrabackup]
user=backupuser
password=[random password]
slave-info=1

Memicu pekerjaan xtrabackup kemudian akan menyertakan file bernama file xtrabackup_slave_info. Tidak diperlukan restart MySQL.

Anda dapat memeriksa dokumentasi Percona untuk informasi lebih lanjut tentang cara kerjanya.

Mariabackup

Mariabackup adalah fork dari Percona XtraBackup dengan dukungan tambahan untuk kompresi MariaDB 10.1 dan enkripsi data-at-rest. Itu disertakan dengan MariaDB 10.1.23 dan yang lebih baru.

Metode pencadangan bisa penuh atau inkremental dan Anda dapat memilih variabel yang sama yang Anda miliki untuk Percona XtraBackup, seperti Kompresi, Utas Salin Paralel Xtrabackup, atau Enkripsi.

Perintah Mariabackup adalah:

$ /usr/bin/mariabackup \
--defaults-file=/etc/my.cnf \
--backup \
--galera-info \
--parallel 1 \
--stream=xbstream \
--no-timestamp \
| gzip -6 - > /root/backups/BACKUP-8/backup-full-2018-11-07_015807.xbstream.gz ) 2>&1.

Mariabackup didasarkan pada Percona XtraBackup, sehingga menggunakan informasi yang sama dengan Percona untuk melakukan pencadangan. Secara default, ClusterControl menambahkan baris berikut di file my.cnf:

[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0

Dan kredensial dalam file secret-backup.cnf:

[xtrabackup]
user=backupuser
password=[random password]

Jika Anda ingin menambahkan beberapa variabel, Anda dapat menambahkannya ke bagian [xtrabackup].

Anda dapat memeriksa dokumentasi MariaDB untuk informasi lebih lanjut tentang parameter mana yang akan ditambahkan.

Dalam setiap kasus, Anda dapat memeriksa cadangan Anda dari bagian Cadangan di UI ClusterControl:

Kami harap ini membantu Anda mengonfigurasi cadangan MySQL dengan lebih baik - Anda dapat mengunduh ClusterControl dari situs web kami (gratis).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengelompokan ke dalam interval 5 menit dalam rentang waktu

  2. Menggunakan Database Relasional MySQL di Fedora 20

  3. Bagaimana cara memeriksa apakah kolom kosong atau nol di MySQL?

  4. Menghasilkan pohon berbasis Kedalaman dari Data Hirarki di MySQL (tanpa CTE)

  5. perlu mengembalikan dua set data dengan dua klausa where yang berbeda