MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Opsi Pencadangan Cloud untuk Database MySQL &MariaDB

Tujuan utama mencadangkan data Anda, tentu saja, kemampuan untuk memutar kembali dan mengakses arsip Anda jika terjadi kegagalan perangkat keras. Untuk menjalankan bisnis saat ini, Anda memerlukan kepastian mengetahui bahwa jika terjadi bencana, data Anda akan terlindungi dan dapat diakses. Anda perlu menyimpan cadangan Anda di luar lokasi, jika pusat data Anda terbakar.

Perlindungan data tetap menjadi tantangan bagi usaha kecil dan menengah. Usaha kecil hingga menengah lebih memilih untuk mengarsipkan data perusahaan mereka menggunakan penyimpanan yang terpasang langsung, dengan sebagian besar perusahaan memiliki rencana untuk membuat salinan cadangan di luar lokasi. Pendekatan penyimpanan lokal dapat menyebabkan salah satu dilema paling parah yang dapat dihadapi perusahaan modern - kehilangan data jika terjadi bencana.

Banyak faktor yang menjadi pertimbangan saat menilai apakah akan mengizinkan basis data penting bisnis untuk ditransfer ke luar lokasi, dan saat memilih vendor yang sesuai untuk melakukannya. Metode tradisional seperti menulis ke tape dan mengirim ke lokasi yang jauh dapat menjadi proses yang rumit yang memerlukan perangkat keras khusus, staf yang terlatih dan prosedur yang memadai untuk memastikan bahwa cadangan diproduksi secara teratur, dilindungi dan informasi yang terkandung di dalamnya diverifikasi integritasnya. Usaha kecil biasanya memiliki anggaran TI yang kecil. Seringkali mereka tidak mampu memiliki pusat data sekunder, bahkan jika mereka memiliki pusat data khusus. Namun demikian, tetap penting untuk menyimpan salinan file cadangan Anda di luar kantor. Bencana seperti badai, banjir, kebakaran, atau pencurian dapat menghancurkan server dan penyimpanan Anda. Menyimpan data yang dicadangkan di pusat data terpisah memastikan data aman, apa pun yang terjadi di pusat data utama Anda. Penyimpanan cloud adalah cara yang bagus untuk mengatasi masalah ini.
Dengan pendekatan pencadangan cloud, ada sejumlah faktor yang perlu dipertimbangkan. Beberapa pertanyaan yang Anda miliki adalah:

  • Apakah data yang dicadangkan diamankan saat diam di pusat data eksternal?
  • Apakah transfer ke atau dari pusat data eksternal melalui jaringan internet publik aman?
  • Apakah ada efek pada RTO (Tujuan Waktu Pemulihan)?
  • Apakah proses pencadangan dan pemulihan cukup mudah bagi staf TI kami?
  • Apakah ada perubahan yang diperlukan untuk proses yang ada?
  • Apakah alat pencadangan pihak ketiga diperlukan?
  • Berapa biaya tambahan untuk perangkat lunak atau transfer data yang diperlukan?
  • Berapa biaya penyimpanannya?

Fitur pencadangan saat melakukan pencadangan ke cloud

Jika server MySQL atau tujuan pencadangan Anda terletak di infrastruktur yang terbuka seperti cloud publik, penyedia hosting, atau terhubung melalui jaringan WAN yang tidak tepercaya, Anda perlu memikirkan tindakan tambahan dalam kebijakan pencadangan Anda. Ada beberapa cara berbeda untuk melakukan pencadangan basis data untuk MySQL, dan tergantung pada jenis pencadangan, waktu pemulihan, ukuran, dan opsi infrastruktur akan bervariasi. Karena banyak solusi penyimpanan cloud hanyalah penyimpanan dengan ujung depan API yang berbeda, solusi pencadangan apa pun dapat dilakukan dengan sedikit skrip. Jadi apa saja pilihan yang kita miliki untuk membuat proses berjalan lancar dan aman?

Enkripsi

Itu selalu merupakan ide yang baik untuk menegakkan enkripsi untuk meningkatkan keamanan data cadangan. Kasus penggunaan sederhana untuk menerapkan enkripsi adalah saat Anda ingin memasukkan cadangan ke penyimpanan cadangan di luar lokasi yang terletak di cloud publik.

Saat membuat cadangan terenkripsi, satu hal yang perlu diingat adalah biasanya dibutuhkan lebih banyak waktu untuk memulihkannya. Cadangan harus didekripsi sebelum aktivitas pemulihan apa pun. Dengan kumpulan data yang besar, hal ini dapat menyebabkan beberapa penundaan pada RTO.

Di sisi lain, jika Anda menggunakan kunci pribadi untuk enkripsi, pastikan untuk menyimpan kunci di tempat yang aman. Jika kunci pribadi hilang, cadangan tidak akan berguna dan tidak dapat dipulihkan. Jika kunci dicuri, semua cadangan yang dibuat yang menggunakan kunci yang sama akan disusupi karena tidak lagi diamankan. Anda dapat menggunakan GnuPG atau OpenSSL yang populer untuk menghasilkan kunci privat atau publik.
Untuk melakukan enkripsi mysqldump menggunakan GnuPG, buat kunci privat dan ikuti wizard yang sesuai:

$ gpg --gen-key

Buat cadangan mysqldump biasa seperti biasa:

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz

Enkripsi file dump dan hapus cadangan biasa yang lama:

$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz

GnuPG akan secara otomatis menambahkan ekstensi .gpg pada file terenkripsi. Untuk mendekripsi,
cukup jalankan perintah gpg dengan --decrypt flag:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg

Untuk membuat mysqldump terenkripsi menggunakan OpenSSL, seseorang harus membuat kunci pribadi dan kunci publik:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Kunci pribadi ini (dump.priv.pem) harus disimpan di tempat yang aman untuk dekripsi di masa mendatang. Untuk mysqldump, cadangan terenkripsi dapat dibuat dengan menyalurkan konten ke openssl, misalnya

mysqldump --routines --events --triggers --single-transaction database | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem

Untuk mendekripsi, cukup gunakan kunci pribadi (dump.priv.pem) di samping flag -decrypt:
openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out database.sql

Percona XtraBackup dapat digunakan untuk mengenkripsi atau mendekripsi cadangan lokal atau streaming dengan opsi xbstream untuk menambahkan lapisan perlindungan lain ke cadangan. Enkripsi dilakukan dengan perpustakaan libgcrypt. Opsi --encrypt-key dan --encryptkey-file keduanya dapat digunakan untuk menentukan kunci enkripsi. Kunci enkripsi dapat dibuat dengan perintah seperti

$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Nilai ini kemudian dapat digunakan sebagai kunci enkripsi. Contoh perintah innobackupex menggunakan --encrypt-key:

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

Output dari perintah OpenSSL di atas juga dapat diarahkan ke file dan dapat diperlakukan sebagai file kunci:

openssl rand -base64 24 > /etc/keys/pxb.key

Gunakan dengan opsi --encrypt-key-file sebagai gantinya:

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

Untuk mendekripsi, cukup gunakan opsi --decrypt dengan --encrypt-key atau --encrypt-key-file yang sesuai:

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

Untuk informasi lebih lanjut tentang enkripsi MySQL dan MariaDB, silakan periksa posting blog kami yang lain.

Kompresi

Dalam dunia pencadangan cloud basis data, kompresi adalah salah satu teman terbaik Anda. Ini tidak hanya dapat menghemat ruang penyimpanan, tetapi juga dapat secara signifikan mengurangi waktu yang diperlukan untuk mengunduh/mengunggah data.
Ada banyak alat kompresi yang tersedia di luar sana, yaitu gzip, bzip2, zip, rar, dan 7z.
Biasanya, mysqldump dapat memiliki tingkat kompresi terbaik karena ini adalah file teks datar. Bergantung pada alat kompresi dan rasio, mysqldump yang dikompresi dapat berukuran hingga 6 kali lebih kecil dari ukuran cadangan aslinya. Untuk mengompresi cadangan, Anda dapat menyalurkan output mysqldump ke alat kompresi dan mengarahkannya ke file tujuan. Anda juga dapat melewati beberapa hal seperti komentar, pernyataan kunci tabel (jika InnoDB), lewati pembersihan GTID, dan pemicu:

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

Dengan Percona Xtrabackup, Anda dapat menggunakan mode streaming (innobackupex), yang mengirimkan cadangan ke STDOUT dalam format tar atau xbstream khusus alih-alih menyalin file ke direktori cadangan. Memiliki cadangan terkompresi dapat menghemat hingga 50% dari ukuran cadangan asli, tergantung pada kumpulan data. Tambahkan opsi --compress di perintah pencadangan. Dengan menggunakan xbstream dalam streaming backup, Anda dapat mempercepat proses kompresi dengan menggunakan opsi --compress-threads. Opsi ini menentukan jumlah utas yang dibuat oleh xtrabackup untuk kompresi data paralel. Nilai default untuk opsi ini adalah 1. Untuk menggunakan fitur ini, tambahkan opsi ke cadangan lokal. Contoh pencadangan dengan kompresi:

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Sebelum menerapkan log selama tahap persiapan, file terkompresi perlu
didekompresi menggunakan xbstream:
Kemudian, gunakan qpress untuk mengekstrak setiap file yang diakhiri dengan .qp di direktori masing-masing sebelum
dijalankan -- perintah apply-log untuk menyiapkan data MySQL.

$ xbstream -x < /storage/backups/backup.xbstream

Batasi throughput jaringan

Pilihan yang bagus untuk pencadangan cloud adalah membatasi bandwidth streaming jaringan (Mb/s) saat melakukan pencadangan. Anda dapat mencapainya dengan alat pv. Utilitas pv dilengkapi dengan opsi pengubah data -L RATE, --rate-limit RATE yang membatasi transfer hingga maksimum RATE byte per detik. Contoh di bawah ini akan membatasinya menjadi 2MB/dtk.

$ pv -q -L 2m

Dalam contoh di bawah ini, Anda dapat melihat xtrabackup dengan paralel gzip, enkripsi

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Transfer cadangan ke Cloud

Sekarang ketika cadangan Anda dikompresi dan dienkripsi, cadangan siap untuk ditransfer.

Google awan

Alat baris perintah gsutil digunakan untuk mengelola, memantau, dan menggunakan keranjang penyimpanan Anda di Google Cloud Storage. Jika Anda sudah menginstal util gcloud, Anda sudah menginstal gsutil. Jika tidak, ikuti petunjuk untuk distribusi Linux Anda dari sini.

Untuk menginstal gcloud CLI, Anda dapat mengikuti prosedur di bawah ini:

curl https://sdk.cloud.google.com | bash

Mulai ulang shell Anda:

exec -l $SHELL

Jalankan gcloud init untuk menginisialisasi lingkungan gcloud:

gcloud init

Dengan alat baris perintah gsutil terinstal dan diautentikasi, buat keranjang penyimpanan regional bernama mysql-backups-storage di proyek Anda saat ini.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/

Amazon S3

Jika Anda tidak menggunakan RDS untuk menghosting basis data Anda, kemungkinan besar Anda melakukan pencadangan sendiri. Platform AWS Amazon, S3 (Amazon Simple Storage Service) adalah layanan penyimpanan data yang dapat digunakan untuk menyimpan cadangan database atau file penting bisnis lainnya. Baik itu instans Amazon EC2 atau lingkungan lokal Anda, Anda dapat menggunakan layanan ini untuk mengamankan data Anda.

Sementara cadangan dapat diunggah melalui antarmuka web, antarmuka baris perintah s3 khusus dapat digunakan untuk melakukannya dari baris perintah dan melalui skrip otomatisasi pencadangan. Jika cadangan disimpan untuk waktu yang sangat lama, dan waktu pemulihan tidak menjadi masalah, cadangan dapat ditransfer ke layanan Amazon Glacier, menyediakan penyimpanan jangka panjang yang jauh lebih murah. File (objek amazon) disimpan secara logis dalam wadah datar besar bernama ember. S3 menghadirkan antarmuka REST ke internalnya. Anda dapat menggunakan API ini untuk melakukan operasi CRUD pada bucket dan objek, serta untuk mengubah izin dan konfigurasi pada keduanya.

Metode distribusi utama untuk AWS CLI di Linux, Windows, dan macOS adalah pip, pengelola paket untuk Python. Instruksi dapat ditemukan di sini.

aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_backups

Secara default, S3 memberikan daya tahan objek sebelas 9 detik. Artinya, jika Anda menyimpan 1.000.000.000 (1 miliar) objek ke dalamnya, Anda dapat mengharapkan kehilangan rata-rata 1 objek setiap 10 tahun. Cara S3 mencapai angka 9 yang mengesankan itu adalah dengan mereplikasi objek secara otomatis di beberapa Availability Zone, yang akan kita bicarakan di posting lain. Amazon memiliki pusat data regional di seluruh dunia.

Penyimpanan Microsoft Azure

Platform cloud publik Microsoft, Azure, memiliki opsi penyimpanan dengan antarmuka jalur kontrolnya. Informasi dapat ditemukan di sini. Azure CLI lintas platform open-source menyediakan serangkaian perintah untuk bekerja dengan platform Azure. Ini memberikan banyak fungsi yang terlihat di portal Azure, termasuk akses data yang kaya.

Instalasi Azure CLI cukup sederhana, Anda dapat menemukan petunjuk di sini. Di bawah ini Anda dapat menemukan cara mentransfer cadangan Anda ke penyimpanan Microsoft.

az storage blob upload --container-name severalnines --file severalnines.sql --name severalnines_backup

Penyimpanan Hibrida untuk cadangan MySQL dan MariaDB

Dengan pertumbuhan industri penyimpanan cloud publik dan pribadi, kami memiliki kategori baru yang disebut penyimpanan hybrid. Teknologi ini memungkinkan file disimpan secara lokal, dengan perubahan yang secara otomatis disinkronkan ke jarak jauh di cloud. Pendekatan seperti itu berasal dari kebutuhan untuk memiliki cadangan terbaru yang disimpan secara lokal untuk pemulihan cepat (RTO lebih rendah), serta tujuan kelangsungan bisnis.
Aspek penting dari penggunaan sumber daya yang efisien adalah memiliki penyimpanan cadangan yang terpisah. Data yang disimpan secara lokal, pada disk drive yang berlebihan akan disimpan untuk waktu yang lebih singkat sementara penyimpanan cadangan cloud akan disimpan untuk waktu yang lebih lama. Sering kali persyaratan untuk penyimpanan cadangan yang lebih lama berasal dari kewajiban hukum untuk industri yang berbeda (seperti telekomunikasi yang harus menyimpan metadata koneksi). Penyedia cloud seperti Google Cloud Services, Microsoft Azure dan Amazon S3 masing-masing menawarkan penyimpanan yang hampir tidak terbatas, sehingga mengurangi kebutuhan ruang lokal. Ini memungkinkan Anda untuk menyimpan file cadangan Anda lebih lama, selama yang Anda inginkan dan tidak mengkhawatirkan ruang disk lokal.

Manajemen pencadangan ClusterControl - penyimpanan hibrid

Saat menjadwalkan pencadangan dengan ClusterControl, masing-masing metode pencadangan dapat dikonfigurasi dengan serangkaian opsi tentang bagaimana Anda ingin pencadangan dijalankan. Yang paling penting untuk penyimpanan cloud hybrid adalah:

  • Pembatasan jaringan
  • Enkripsi dengan manajemen kunci bawaan
  • Kompresi
  • Periode penyimpanan untuk cadangan lokal
  • Periode retensi untuk cadangan cloud
ClusterControl penyimpanan cadangan ganda ClusterControl fitur pencadangan lanjutan untuk cloud, kompresi paralel, batas bandwitch jaringan, enkripsi, dll ...

Kesimpulan

Cloud telah mengubah industri pencadangan data. Karena titik harganya yang terjangkau, bisnis kecil memiliki solusi di luar lokasi yang mencadangkan semua data mereka.

Perusahaan Anda dapat memanfaatkan skalabilitas cloud dan harga bayar sesuai penggunaan untuk kebutuhan penyimpanan yang terus meningkat. Anda dapat merancang strategi pencadangan untuk menyediakan salinan lokal di pusat data untuk pemulihan segera, dan gerbang tanpa batas ke layanan penyimpanan cloud dari AWS, Google, dan Azure.

Fitur enkripsi dan kompresi 256-bit TLS dan AES yang canggih mendukung pencadangan aman yang menghabiskan lebih sedikit ruang di cloud secara signifikan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemantauan Replikasi MySQL yang Efektif Dengan Dasbor SCUMM:Bagian 2

  2. Cara Memformat Angka di MariaDB

  3. Bagaimana EXTRACTVALUE() Bekerja di MariaDB

  4. Bagaimana RTRIM() Bekerja di MariaDB

  5. Cara Menyebarkan Cluster MariaDB untuk Ketersediaan Tinggi