Mencipta sandaran MySQL menggunakan utiliti XtraBackup

Percona XtraBackup ialah utiliti untuk sandaran pangkalan data panas MySQL.

Apabila membuat sandaran data, tiada jadual dikunci dan sistem anda terus beroperasi tanpa sebarang sekatan.

XtraBackup 2.4 boleh membuat salinan sandaran jadual InnoDBXtraDB ΠΈ MyISAM pada pelayan MySQL 5.11, 5.5, 5.6 dan 5.7, dan juga pada pelayan percona untuk MySQL Ρ XtraDB.

Untuk bekerja dengan MySQL 8.x versi harus digunakan XtraBackup 8.x. Artikel ini hanya akan bercakap tentang XtraBackup 2.4.

Kelebihan utama XtraBackup ialah utiliti ini sesuai untuk membuat sandaran pelayan yang sangat dimuatkan dan untuk sistem dengan bilangan transaksi yang rendah.

Jika jumlah saiz pangkalan data MySQL anda adalah penting (berpuluh-puluh gigabait), maka utiliti standard mysqldump tidak akan membenarkan anda membuat salinan sandaran dengan cepat, dan memulihkan tempat pembuangan akan mengambil banyak masa.

Pemasangan

Pemasangan XtraBackup daripada repositori apt Percona.

Jalankan arahan berikut secara berurutan:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. Selepas pemasangan, jalankan arahan xtrabackup -v. Oleh kerana, adalah penting untuk memastikan bahawa utiliti berfungsi dengan betul pada pelayan. Akibatnya, sesuatu seperti ini akan dipaparkan pada skrin:

xtrabackup: argumen pelayan yang diiktiraf: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect β€” innodbflushlogattrxcommit=0xtrabackup versi 2.4.20 berdasarkan pelayan MySQL 5.7.26 Linux (x8664) (id semakan: c8b4056)

Mencipta sandaran MySQL menggunakan utiliti XtraBackup

Hak akses, kebenaran dan keistimewaan 

XtraBackup sepatutnya dapat:

  • Sambung ke pelayan MySQL anda.

  • Mempunyai hak akses kepada direktori Datadir

  • Apabila membuat salinan sandaran, mempunyai hak tulis kepada parameter yang ditentukan target-dir katalog.

Apakah datadir?

Datadir ialah direktori di mana pelayan pangkalan data MySQL menyimpan data. Semua pangkalan data, semua jadual ada di sana. Pada kebanyakan pengedaran Linux, direktori lalai ialah / var / lib / mysql.

Apakah direktori sasaran-dir?

target-dir - Ini ialah direktori tempat sandaran akan disimpan.

Pengguna pangkalan data memerlukan hak akses berikut kepada jadual dan pangkalan data untuk disandarkan:

  • MUAT SEMULA dan KUNCI MEJA

  • KLIEN REPLIKASI

  • BUAT RUANG MEJA

  • PROSES

  • SUPER

  • CREATE

  • INSERT

  • SELECT

Konfigurasi 

Konfigurasi XtraBackup dilakukan menggunakan pilihan yang berkelakuan sama seperti pilihan MySQL standard.

Apa maknanya?

Parameter konfigurasi boleh ditentukan sama ada pada baris arahan atau dalam fail konfigurasi DBMS, contohnya dalam /etc/my.cnf.

Utiliti XtraBackup membaca partition selepas pelancaran [mysqld] ΠΈ [xtrabackup] daripada fail konfigurasi MySQL. Ini dilakukan supaya utiliti boleh menggunakan tetapan DBMS anda tanpa perlu menentukan parameter secara manual semasa setiap sandaran.

Sebagai contoh, nilai Datadir dan beberapa parameter InnoDB Kami mendapat XtraBackup daripada konfigurasi DBMS anda.

Jika untuk XtraBackup berfungsi, anda ingin mengatasi parameter yang terdapat dalam bahagian tersebut [mysqld], kemudian tentukan sahaja dalam fail konfigurasi dalam bahagian [xtrabackup]. Oleh kerana mereka akan dibaca kemudian, keutamaan mereka akan lebih tinggi.

Anda tidak perlu menambah sebarang parameter my.cnf. Semua parameter yang diperlukan boleh ditentukan pada baris arahan. Biasanya satu-satunya perkara yang boleh diletakkan dengan mudah di bahagian itu [xtrabackup] anda my.cnf ialah parameter target_dir, yang secara lalai menentukan direktori tempat sandaran akan diletakkan. Tetapi ini adalah pilihan.

Contoh menentukan laluan ke direktori dengan salinan sandaran masuk my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Skrip sandaran

Anda boleh menggunakan skrip berikut untuk membuat sandaran:

#!/bin/bash

# УдаляСм Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π±Π΅ΠΊΠ°ΠΏΠ°
rm -rf /mysql/backup

# CΠΎΠ·Π΄Π°Ρ‘ΠΌ Π±Π΅ΠΊΠ°ΠΏ
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# ВыполняСм ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ Π±Π΅ΠΊΠ°ΠΏΠ° для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π°Ρ€Ρ…ΠΈΠ²
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

Apakah yang berlaku semasa pelaksanaan skrip?

Pertama sekali, kami mengosongkan (memadam) direktori di mana kami akan menyimpan salinan sandaran:

rm -rf /mysql/backup.

Kemudian, menggunakan utiliti XtraBackup buat salinan sandaran dan simpannya /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Sebelum ini, kami mencipta pengguna dalam MySQL xtrabackup dengan keistimewaan yang diperlukan. Menggunakan parameter target-dir kami menentukan direktori di mana sandaran harus disimpan.

Satu perkara penting!

Perhatikan baris skrip:

xtrabackup --prepare --target-dir=/mysql/backup

Data katalog /mysql/backup tidak konsisten sehingga mereka masak. 

Hakikatnya ialah perubahan boleh berlaku semasa menyalin fail. Operasi xtrabackup --prepare --target-dir=/mysql/backup menjadikan data sandaran dengan sempurna konsisten dari semasa ke semasa.

Anda boleh melakukan operasi penyediaan data pada mana-mana mesin. Tidak perlu melakukan ini pada pelayan di mana sumber DBMS berada. Anda boleh menyalin sandaran ke pelayan sasaran dan menyediakannya di sana.

Perkara terakhir yang kami lakukan ialah mencipta arkib di mana kami meletakkan sandaran kami:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-Β«$(date % F% H% M% S)Β».gz /mysql/backup

Memulihkan sandaran 

Sebelum anda boleh memulihkan sandaran ke pelayan sasaran, data mesti melalui fasa penyediaan. Lihat di atas untuk cara melakukan ini.

Proses pemulihan data adalah sangat mudah. Anda perlu mengekstrak sandaran daripada arkib dan menggantikan data dalam Datadir.

Bagaimana untuk menggantikan data dalam datadir?

Mari kita pertimbangkan dua pilihan.

Pilihan 1

Gunakan utiliti XtraBackup. Anda perlu menentukan pilihan --copy-back

Perintah di bawah akan memindahkan sandaran ke Datadir pelayan sasaran:

xtrabackup --copy-back --target-dir=/mysql/backup

Pilihan 2

Anda boleh melakukannya secara berbeza, lakukan tanpa utiliti XtraBackup.

Apa yang anda perlu lakukan ialah menyalin sandaran ke Datadir. Anda boleh melakukan ini dengan cp atau rsync.

Adalah penting untuk memahami bahawa prosedur untuk memulihkan sandaran bermuara kepada hanya menggantikan kandungan direktori Datadir.

Sebelum anda mula memulihkan sandaran pada pelayan sasaran, anda mesti:

  • Hentikan pelayan MySQL.

  • Kosongkan folder Datadir atau mengalihkan kandungannya ke lokasi lain. Katalog Datadir mesti kosong.

Selepas selesai pemindahan data ke Datadir Pelayan MySQL boleh dimulakan.

Bahan yang digunakan

Dokumentasi rasmi percona XtraBackup.

Sumber: www.habr.com

Tambah komen