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

Membandingkan RDS vs EC2 untuk Mengelola MySQL atau MariaDB di AWS

RDS adalah Database as a Service (DBaaS) yang secara otomatis mengonfigurasi dan memelihara database Anda di cloud AWS. Pengguna memiliki kekuatan terbatas atas konfigurasi tertentu dibandingkan dengan menjalankan MySQL secara langsung di Elastic Compute Cloud (EC2). Namun RDS adalah layanan yang nyaman, selama Anda dapat hidup dengan instans dan konfigurasi yang ditawarkannya.

Amazon RDS saat ini mendukung berbagai versi MySQL dan MariaDB serta mesin Amazon Aurora DB yang kompatibel dengan MySQL. Itu mendukung replikasi, tetapi seperti yang Anda harapkan dari konsol web yang telah ditentukan, ada beberapa batasan.

Layanan RDS Amazon

Ada beberapa pengorbanan saat menggunakan RDS. Ini mungkin tidak hanya memengaruhi cara Anda mengelola dan menyediakan instans database, tetapi juga hal-hal penting seperti kinerja, keamanan, dan ketersediaan tinggi.

Di blog ini, kita akan melihat perbedaan antara menggunakan RDS dan menjalankan MySQL di EC2, dengan fokus pada replikasi. Seperti yang akan kita lihat, untuk memutuskan antara meng-hosting MySQL pada instans EC2 atau menggunakan Amazon RDS bukanlah tugas yang mudah.

Pengorbanan Platform RDS

Ukuran terbesar database yang dapat dihosting AWS bergantung pada lingkungan sumber Anda, alokasi data dalam database sumber Anda, dan seberapa sibuk sistem Anda.

Opsi Lingkungan RDS Amazon Kelas instans Amazon RDS

AWS dibagi menjadi beberapa wilayah. Setiap akun AWS memiliki batasan, per wilayah, jumlah sumber daya AWS yang dapat dibuat. Setelah batas sumber daya tercapai, panggilan tambahan untuk membuat sumber daya tersebut akan gagal.

Wilayah AWS

Untuk instans Amazon RDS MySQL DB, batas penyimpanan maksimum yang disediakan membatasi ukuran tabel hingga ukuran maksimum 6 TB saat menggunakan ruang tabel file-per-tabel InnoDB.

Fitur file-per-tabel InnoDB adalah sesuatu yang harus Anda pertimbangkan bahkan jika Anda tidak ingin memigrasikan database besar ke cloud. Anda mungkin memperhatikan bahwa beberapa instans DB yang ada memiliki batas yang lebih rendah. Misalnya, instans DB MySQL yang dibuat sebelum April 2014 memiliki batas ukuran file dan tabel sebesar 2 TB. Batas ukuran file 2 TB ini juga berlaku untuk instans DB atau Replika Baca yang dibuat dari snapshot DB yang diambil sebelum April 2014.

Salah satu perbedaan utama yang mempengaruhi cara Anda mengatur dan memelihara replikasi database adalah kurangnya pengguna SUPER. Untuk mengatasi batasan ini, Amazon memperkenalkan prosedur tersimpan yang menangani berbagai tugas DBA. Di bawah ini adalah prosedur utama untuk mengelola replikasi RDS MySQL.

Lewati kesalahan replikasi:

CALL mysql.rds_skip_repl_error;

Hentikan replikasi:

CALL mysql.rds_stop_replication;

Mulai replikasi

CALL mysql.rds_start_replication;

Mengonfigurasi instans RDS sebagai Replika Baca dari instans MySQL yang berjalan di luar AWS.

CALL mysql.rds_set_external_master;

Mengonfigurasi ulang instans MySQL agar tidak lagi menjadi Replika Baca dari instans MySQL yang berjalan di luar AWS.

CALL mysql.rds_reset_external_master;

Mengimpor sertifikat. Ini diperlukan untuk mengaktifkan komunikasi SSL dan replikasi terenkripsi.

CALL mysql.rds_import_binlog_ssl_material;

Menghapus sertifikat.

CALL mysql.rds_remove_binlog_ssl_material;

Mengubah posisi log master replikasi ke awal log biner berikutnya pada master.

CALL mysql.rds_next_master_log;

Sementara prosedur tersimpan menangani sejumlah tugas, ini adalah sedikit kurva pembelajaran. Kurangnya hak istimewa SUPER juga dapat menimbulkan masalah dalam menggunakan pemantauan replikasi eksternal.

Amazon RDS saat ini tidak mendukung hal berikut:

  • ID Transaksi Global
  • Ruang Meja yang Dapat Diangkut
  • Plugin Otentikasi
  • Plugin Kekuatan Kata Sandi
  • Filter Replikasi
  • Replikasi semi-sinkron

Last but not least - akses ke shell. Amazon RDS tidak mengizinkan akses host langsung ke instans DB melalui Telnet, Secure Shell (SSH), atau Windows Remote Desktop Connection (RDP). Anda masih dapat menggunakan klien pada host aplikasi untuk terhubung ke DB melalui alat standar seperti klien mysql.

Ada batasan lain, seperti yang dijelaskan dalam dokumentasi RDS.

Ketersediaan tinggi dengan MySQL di EC2


Untuk mengotomatisasi tugas penerapan dan pengelolaan/pemeliharaan (sambil mempertahankan kontrol), dimungkinkan untuk menggunakan ClusterControl. Sama seperti dengan RDS, Anda memiliki kemudahan dalam menerapkan pengaturan basis data dalam beberapa menit melalui GUI. Menambahkan node, menjadwalkan pencadangan, melakukan failover, dan sebagainya, juga dapat dilakukan dengan mudah melalui GUI. Ada opsi untuk mengoperasikan MySQL secara langsung di EC2, dan dengan demikian mempertahankan kendali atas opsi ketersediaan tinggi. Saat menelusuri rute ini, penting untuk memahami cara memanfaatkan berbagai fitur AWS yang Anda inginkan. Pastikan Anda membaca buku putih 'DIY Cloud Database' kami.

Penerapan

ClusterControl dapat mengotomatiskan penyebaran berbagai pengaturan database ketersediaan tinggi - dari replikasi master-slave hingga cluster multi-master. Semua rasa MySQL utama didukung - Oracle MySQL, MariaDB dan Percona Server. Beberapa penyiapan awal VPC/grup keamanan diperlukan, dan ini dijelaskan dengan baik di whitepaper Database Cloud DIY. Perhatikan bahwa konsep serupa berlaku, baik itu AWS atau Google Cloud atau Azure

ClusterControl Terapkan di EC2

Galera Cluster adalah alternatif yang baik untuk dipertimbangkan saat menerapkan layanan MySQL yang sangat tersedia. Ini telah memantapkan dirinya sebagai pengganti yang kredibel untuk arsitektur master-slave MySQL tradisional, meskipun itu bukan pengganti drop-in. Sebagian besar aplikasi masih dapat diadaptasi untuk berjalan di atasnya. Dimungkinkan untuk menentukan segmen yang berbeda untuk database yang menjangkau beberapa wilayah AWS.

ClusterControl memperluas cluster di EC2

Dimungkinkan untuk menyiapkan 'replikasi hibrida' dengan menggabungkan replikasi sinkron dalam Cluster Galera dan replikasi asinkron antara kluster dan satu atau lebih budak. Opsi seperti menunda slave memberikan tingkat perlindungan tambahan pada data.

ClusterControl Tambahkan replikasi di EC2

Lapisan proxy

Untuk mencapai ketersediaan tinggi, menerapkan penyiapan yang sangat tersedia tidak cukup. Aplikasi harus entah bagaimana mengetahui node mana yang berfungsi dan mana yang tidak. Perubahan topologi, mis. memindahkan master ke host lain, juga perlu disebarkan entah bagaimana untuk menghindari kesalahan di lapisan aplikasi. ClusterControl mendukung penerapan proxy seperti HAProxy, MaxScale, dan ProxySQL. Untuk HAProxy dan ProxySQL, ada opsi tambahan untuk menerapkan instance redundan dengan Keepalive dan VirtualIP.

Manajer ClusterControl penyeimbang beban pada node EC2

Replika lintas wilayah

Amazon RDS menyediakan layanan replika baca. Replika lintas wilayah memberi Anda kemampuan untuk mengukur pembacaan, karena AWS memiliki layanannya di sejumlah pusat data di seluruh dunia. Semua replika baca dapat diakses dan dapat digunakan untuk membaca dalam jumlah maksimum lima wilayah. Node ini independen dan dapat digunakan di jalur peningkatan Anda, atau dapat dipromosikan ke database mandiri.

Selain itu, Amazon menawarkan penerapan Multi-AZ berdasarkan DRBD, replikasi disk sinkron. Apa bedanya dengan Read Replicas? Perbedaan utamanya adalah hanya mesin database pada instance utama yang aktif, yang mengarah ke variasi arsitektur lainnya.

Berbeda dengan replika baca, pemutakhiran versi mesin basis data terjadi pada replika utama. Perbedaan lainnya adalah AWS RDS akan melakukan failover secara otomatis dengan DRBD, sedangkan replika baca (menggunakan replikasi asinkron) akan memerlukan operasi manual dari Anda.

Kegagalan multi-AZ di RDS menggunakan perubahan DNS untuk menunjuk ke instans siaga, menurut Amazon ini harus terjadi dalam 60-120 detik selama failover. Karena standby menggunakan data penyimpanan yang sama dengan yang utama, mungkin akan ada pemulihan transaksi/log. Basis data yang lebih besar mungkin menghabiskan banyak waktu untuk pemulihan InnoDB, jadi harap pertimbangkan itu dalam rencana DR dan perhitungan RTO Anda.

Tentu saja, ini disertai dengan biaya tambahan. Mari kita lihat beberapa contoh dasar. Biaya host db.t2.medium dengan 2vCPU, ram 4GB adalah 185,98 USD per bulan, harga akan berlipat ganda saat Anda mengaktifkan replika Multizona (MZ) menjadi 370,98 UDB. Harga akan bervariasi menurut wilayah tetapi akan berlipat ganda dalam MZ.

Perbandingan biaya

Untuk mencapai hal yang sama dengan EC2, Anda dapat menggunakan mesin virtual Anda di berbagai wilayah. Setiap Wilayah AWS sepenuhnya independen. Pengaturan Wilayah AWS dapat diubah di konsol, dengan mengatur variabel lingkungan EC2_REGION, atau dapat diganti dengan menggunakan parameter --region dengan Antarmuka Baris Perintah AWS. Ketika set server Anda sudah siap, Anda dapat menggunakan ClusterControl untuk menyebarkan dan memantau replikasi Anda. Anda juga dapat mengatur replikasi secara manual melalui konsol menggunakan perintah standar.

Replikasi lintas teknologi

Dimungkinkan untuk mengatur replikasi antara instans MySQL atau MariaDB DB Amazon RDS dan instans MySQL atau MariaDB yang berada di luar Amazon RDS. Ini dilakukan dengan menggunakan metode replikasi standar di mysql, melalui log biner. Untuk mengaktifkan log biner, Anda perlu memodifikasi konfigurasi my.cnf. Tanpa akses ke shell, tugas ini menjadi tidak mungkin di RDS. Itu dilakukan dengan cara yang tidak begitu jelas. Anda memiliki dua pilihan. Salah satunya adalah mengaktifkan pencadangan - atur pencadangan otomatis pada instans DB Amazon RDS Anda dengan retensi ke lebih tinggi dari 0. Atau aktifkan replikasi ke server slave bawaan. Kedua tugas tersebut akan mengaktifkan log biner yang nantinya dapat Anda gunakan untuk replikasi Anda.

Aktifkan log biner melalui pencadangan RDS

Pertahankan binlog di instans master Anda hingga Anda memverifikasi bahwa binlog telah diterapkan pada replika. Pemeliharaan ini memastikan bahwa Anda dapat memulihkan instans master jika terjadi kegagalan.

Penghalang jalan lainnya bisa berupa izin. Izin yang diperlukan untuk memulai replikasi pada instans DB Amazon RDS dibatasi dan tidak tersedia untuk pengguna master Amazon RDS Anda. Karena itu, Anda harus menggunakan perintah Amazon RDS mysql.rds_set_external_master dan mysql.rds_start_replication untuk mengatur replikasi antara database langsung dan database Amazon RDS Anda.

Pantau peristiwa failover untuk instans Amazon RDS yang merupakan replika Anda. Jika terjadi failover, instans DB yang merupakan replika Anda mungkin dibuat ulang di host baru dengan alamat jaringan yang berbeda. Untuk informasi tentang cara memantau peristiwa failover, lihat Menggunakan Pemberitahuan Peristiwa Amazon RDS.

Dalam contoh di bawah ini, kita akan melihat cara mengaktifkan replikasi dari RDS ke DB eksternal yang terletak di instans EC2.
Anda harus mengaktifkan log biner, kami menggunakan slave RDS di sini.

Tentukan jumlah jam untuk menyimpan log biner.

mysql -h RDS_MASTER -u<username> -u<password>
call mysql.rds_set_configuration('binlog retention hours', 7);

Pada RDS MASTER, buat pengguna replikasi dengan perintah berikut:

CREATE USER 'repl'@'ec2DBslave' IDENTIFIED BY 's3cr3tp4SSw0rd';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'ec2DBslave';

Pada RDS SLAVE, jalankan perintah:

mysql -u<username> -u<password> -h RDS_SLAVE
call mysql.rds_stop_replication;
SHOW SLAVE STATUS;  Exec_Master_Log_Pos, Relay_Master_Log_File.

Pada RDS SLAVE, jalankan mysqldump dengan format berikut:

mysqldump -u<username> -u<password> -h RDS_SLAVE --routines --triggers --single-transaction --databases DB1 DB2 DB3 > mysqldump.sql

Impor dump DB ke database eksternal:

mysql -u<username> -u<password> -h ec2DBslave
tee import_database.log;
source mysqldump.sql;
CHANGE MASTER TO 
 MASTER_HOST='RDS_MASTER', 
 MASTER_USER='repl',
 MASTER_PASSWORD='s3cr3tp4SSw0rd',
 MASTER_LOG_FILE='<Relay_Master_Log_File>',
 MASTER_LOG_POS=<Exec_Master_Log_Pos>;

Buat filter replikasi untuk mengabaikan tabel yang dibuat oleh AWS hanya di RDS

CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('mysql.rds\_%');

Mulai replikasi

START SLAVE;

Verifikasi status replikasi

SHOW SLAVE STATUS;

Itu saja untuk saat ini. Mengelola MySQL di AWS adalah topik besar. Beri tahu kami pendapat Anda di bagian komentar di bawah.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HA untuk MySQL dan MariaDB - Membandingkan Replikasi Master-Master dengan Galera Cluster

  2. Cara Membuat Database MySQL atau MariaDB Anda Sangat Tersedia di AWS dan Google Cloud

  3. Bagaimana CHAR_LENGTH() Bekerja di MariaDB

  4. Dasar-dasar Enkripsi Database Server MariaDB

  5. Membandingkan Solusi Failover DBaaS dengan Pengaturan Pemulihan Manual