Pengguna database open source sering kali harus menggunakan campuran alat dan skrip buatan sendiri untuk mengelola lingkungan database produksi mereka. Namun, meskipun memiliki skrip buatan sendiri dalam solusi, sulit untuk mempertahankannya dan mengikuti fitur database baru, persyaratan keamanan, atau peningkatan. Dengan versi utama baru dari database, termasuk MySQL 8.0, tugas ini bisa menjadi lebih sulit.
Inti dari ClusterControl adalah fungsionalitas otomatisasinya yang memungkinkan Anda mengotomatiskan tugas database yang harus Anda lakukan secara teratur, seperti menerapkan database baru, menambahkan dan menskalakan node baru, mengelola cadangan, ketersediaan tinggi dan failover, perubahan topologi, peningkatan, dan banyak lagi. Prosedur otomatis akurat, konsisten, dan dapat diulang sehingga Anda dapat meminimalkan risiko perubahan pada lingkungan produksi.
Selain itu, dengan ClusterControl, pengguna MySQL tidak lagi tunduk pada penguncian vendor; sesuatu yang dipertanyakan oleh banyak orang baru-baru ini. Anda dapat menerapkan dan mengimpor berbagai versi dan vendor MySQL dari satu konsol secara gratis.
Pada artikel ini, kami akan menunjukkan kepada Anda cara menerapkan MySQL 8.0 dengan konfigurasi yang telah teruji pertempuran dan mengelolanya secara otomatis. Anda akan menemukan di sini cara melakukannya:
- Penginstalan ClusterControl
- Proses penerapan MySQL
- Menerapkan cluster baru
- Impor cluster yang ada
- Menskalakan MySQL
- Mengamankan MySQL
- Pemantauan dan Tren
- Pencadangan dan Pemulihan
- Pemulihan otomatis Node dan Cluster (pengalihan otomatis)
Instalasi ClusterControl
Untuk memulai dengan ClusterControl, Anda memerlukan mesin virtual atau host khusus. VM dan persyaratan sistem yang didukung dijelaskan di sini. VM dasar dapat dimulai dari 2 GB, 2 inti, dan ruang Disk 20 GB ruang penyimpanan, baik di tempat maupun di awan.
Instalasi dijelaskan dengan baik dalam dokumentasi tetapi pada dasarnya, Anda mengunduh skrip instalasi yang memandu Anda melalui langkah-langkahnya. Script wizard mengatur database internal, menginstal paket yang diperlukan, repositori, dan tweak lain yang diperlukan. Untuk lingkungan tanpa akses internet, Anda dapat menggunakan proses instalasi offline.
ClusterControl memerlukan akses SSH ke host database, dan pemantauan dapat berbasis agen atau tanpa agen. Manajemen tidak memiliki agen.
Untuk mengatur SSH tanpa kata sandi ke semua node target (ClusterControl dan semua host database), jalankan perintah berikut di server ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Salah satu cara paling nyaman untuk mencoba kontrol klaster mungkin opsi untuk menjalankannya di wadah buruh pelabuhan.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
Setelah penerapan berhasil, Anda seharusnya dapat mengakses UI Web ClusterControl di {host's IP address}:{host's port}, misalnya:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Penerapan dan Penskalaan
Menerapkan MySQL 8.0
Setelah kita memasuki antarmuka ClusterControl, hal pertama yang harus dilakukan adalah menyebarkan database baru atau mengimpor yang sudah ada. Versi baru 1.7.2 memperkenalkan dukungan untuk versi 8.0 dari Oracle Community Edition dan Percona Server. Pada saat penulisan blog ini, versi saat ini adalah Oracle MySQL Server 8.0.15 dan Percona Server untuk MySQL 8.0-15. Pilih opsi “Deploy Database Cluster ” dan ikuti petunjuk yang muncul.
Kontrol Cluster:Menyebarkan Kluster Basis DataSaat memilih MySQL, kita harus menentukan User, Key atau Password dan port untuk terhubung dengan SSH ke server kita. Kami juga memerlukan nama untuk cluster baru kami dan jika kami ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk kami.
Setelah mengatur informasi akses SSH, kita harus memasukkan data untuk mengakses database kita. Kami juga dapat menentukan repositori mana yang akan digunakan. Konfigurasi repositori merupakan aspek penting untuk server database dan cluster. Anda dapat memiliki tiga jenis repositori saat menerapkan server/cluster database menggunakan ClusterControl:
- Gunakan Repositori Vendor
Menyediakan perangkat lunak dengan menyiapkan dan menggunakan repositori perangkat lunak pilihan vendor database. ClusterControl akan menginstal versi terbaru dari apa yang disediakan oleh repositori vendor database. - Jangan Siapkan Repositori Vendor
Sediakan perangkat lunak dengan menggunakan repositori perangkat lunak yang sudah ada sebelumnya yang sudah disiapkan di node. Pengguna harus mengatur repositori perangkat lunak secara manual pada setiap node database dan ClusterControl akan menggunakan repositori ini untuk penyebaran. Ini bagus jika node database berjalan tanpa koneksi internet. - Gunakan Mirrored Repositories (Buat repositori baru)
Buat dan mirror repositori vendor database saat ini, lalu terapkan menggunakan repositori mirrored lokal. Ini memungkinkan Anda untuk "membekukan" versi paket perangkat lunak saat ini.
Pada langkah selanjutnya, kita perlu menambahkan server kita ke cluster yang akan kita buat. Saat menambahkan server kami, kami dapat memasukkan IP atau nama host lalu memilih antarmuka jaringan. Untuk yang terakhir, kami harus memiliki server DNS atau telah menambahkan server MySQL kami ke file resolusi lokal (/etc/hosts) dari ClusterControl kami, sehingga dapat menyelesaikan nama yang sesuai yang ingin Anda tambahkan.
Di layar kita dapat melihat contoh penerapan dengan satu server master dan dua server slave. Daftar server bersifat dinamis dan memungkinkan Anda membuat topologi canggih yang dapat diperpanjang setelah instalasi awal.
ClusterControl:Tentukan TopologiKetika semua sudah diatur tekan tombol menyebarkan. Anda dapat memantau status pembuatan pengaturan replikasi baru kami dari monitor aktivitas ClusterControl. Proses penerapan juga akan menangani pemasangan alat mysql populer seperti percona toolkit dan percona-xtradb-backup.
Kontrol Cluster:Menyebarkan Detail ClusterSetelah tugas selesai, kita dapat melihat cluster kita di layar ClusterControl utama dan pada tampilan topologi. Perhatikan bahwa kami juga menambahkan penyeimbang beban (ProxySQL) di depan instance database.
Kontrol Cluster:TopologiSeperti yang dapat kita lihat pada gambar, setelah cluster kita dibuat, kita dapat melakukan beberapa tugas di atasnya, langsung dari bagian topologi.
Kontrol Cluster:Manajemen TopologiImpor Cluster Baru
Kami juga memiliki opsi untuk mengelola pengaturan yang ada dengan mengimpornya ke ClusterControl. Lingkungan seperti itu dapat dibuat dengan ClusterControl atau metode lain (boneka, chef, ansible, docker ...). Prosesnya sederhana dan tidak memerlukan pengetahuan khusus.
Kontrol Cluster:Impor Cluster yang AdaPertama, kita harus memasukkan kredensial akses SSH ke server kita. Kemudian kami memasukkan kredensial akses ke database kami, direktori data server, dan versinya. Kami menambahkan node dengan IP atau nama host, dengan cara yang sama seperti saat kami menerapkan, dan tekan Impor. Setelah tugas selesai, kami siap untuk mengelola cluster kami dari ClusterControl. Pada titik ini kita juga dapat menentukan opsi untuk pemulihan otomatis node atau cluster.
Menskalakan MySQL
Dengan ClusterControl, menambahkan lebih banyak server ke server adalah langkah yang mudah. Anda dapat melakukannya dari GUI atau CLI. Untuk pengguna yang lebih mahir, Anda dapat menggunakan ClusterControl Developer Studio dan menulis kondisi basis sumber daya untuk memperluas cluster Anda secara otomatis.
Saat menambahkan node baru ke penyiapan, Anda memiliki opsi untuk menggunakan cadangan yang ada sehingga tidak perlu membebani node master produksi dengan pekerjaan tambahan.
ClusterControl Scaling MySQLDengan dukungan bawaan untuk penyeimbang beban (ProxySQL, Maxscale, HAProxy), Anda dapat menambah dan menghapus node MySQL secara dinamis. Jika Anda ingin mengetahui lebih mendalam tentang cara terbaik untuk mengelola replikasi dan pengelompokan MySQL, silakan baca whitepaper replikasi MySQL untuk replikasi HA.
Mengamankan MySQL
MySQL hadir dengan sedikit keamanan di luar kotak. Ini telah ditingkatkan dengan versi terbaru namun sistem tingkat produksi masih memerlukan dua minggu dalam konfigurasi default my.cnf.
ClusterControl menghapus kesalahan manusia dan menyediakan akses ke serangkaian fitur keamanan, untuk secara otomatis melindungi database Anda dari peretasan dan ancaman lainnya.
ClusterControl memungkinkan dukungan SSL untuk koneksi MySQL. Mengaktifkan SSL menambahkan tingkat keamanan lain untuk komunikasi antara aplikasi (termasuk ClusterControl) dan database. Klien MySQL membuka koneksi terenkripsi ke server database dan memverifikasi identitas server tersebut sebelum mentransfer informasi sensitif apa pun.
ClusterControl akan menjalankan semua langkah yang diperlukan, termasuk membuat sertifikat di semua node database. Sertifikat tersebut dapat dipertahankan nanti di tab Manajemen Kunci.
ClusterControl:Manajer kunci SSLInstalasi server Percona dilengkapi dengan dukungan tambahan untuk plugin audit. Audit berkelanjutan adalah tugas penting untuk memantau lingkungan database Anda. Dengan mengaudit database Anda, Anda dapat mencapai akuntabilitas atas tindakan yang diambil atau konten yang diakses. Selain itu, audit dapat mencakup beberapa komponen sistem penting, seperti yang terkait dengan data keuangan untuk mendukung serangkaian peraturan yang tepat seperti SOX, atau peraturan GDPR UE. Proses terpandu memungkinkan Anda memilih apa yang harus diaudit dan bagaimana memelihara file log audit.
ClusterControl:Aktifkan Log Audit untuk Percona Server 8.0Pemantauan
Saat bekerja dengan sistem basis data, Anda harus dapat memantaunya. Itu akan memungkinkan Anda untuk mengidentifikasi tren, merencanakan peningkatan atau peningkatan, atau bereaksi secara efektif terhadap masalah atau kesalahan yang mungkin muncul.
ClusterControl 1.7.2 yang baru hadir dengan pemantauan resolusi tinggi yang diperbarui untuk MySQL 8.0. Ini menggunakan Prometheus sebagai penyimpanan data dengan bahasa kueri PromQL. Daftar dasbor termasuk MySQL Server General, MySQL Server Cache, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview, dan Cluster Overview Dashboards.
ClusterControl menginstal agen Prometheus, mengonfigurasi metrik, dan memelihara akses ke konfigurasi eksportir Prometheus melalui GUI-nya, sehingga Anda dapat mengelola konfigurasi parameter dengan lebih baik seperti flag kolektor untuk eksportir (Prometheus). Kami menjelaskan secara rinci apa yang dapat dipantau baru-baru ini di artikel Cara Memantau MySQL dengan Prometheus &ClusterControl.
Kontrol Cluster:DasborPeringatan
Sebagai operator database, kita perlu diberitahu setiap kali sesuatu yang kritis terjadi pada database kita. Tiga metode utama di ClusterControl untuk mendapatkan peringatan meliputi:
- pemberitahuan email
- integrasi
- penasihat
Anda dapat mengatur pemberitahuan email pada tingkat pengguna. Buka Setelan> Notifikasi Email . Di mana Anda dapat memilih antara kekritisan dan jenis peringatan yang akan dikirim.
Kontrol Cluster:NotifikasiMetode selanjutnya adalah dengan menggunakan layanan Integrasi. Ini untuk meneruskan kategori acara tertentu ke layanan lain seperti tiket ServiceNow, Slack, PagerDuty, dll. sehingga Anda dapat membuat metode dan integrasi notifikasi lanjutan dalam organisasi Anda.
Kontrol Cluster:IntegrasiYang terakhir adalah melibatkan analisis metrik yang canggih di bagian Penasihat, tempat Anda dapat membuat pemeriksaan dan pemicu cerdas.
Kontrol Cluster:Penasihat OtomatisPencadangan dan Pemulihan
Setelah MySQL Anda aktif dan berjalan, dan memiliki pemantauan, sekarang saatnya untuk langkah berikutnya:pastikan Anda memiliki cadangan data Anda.
ClusterControl:Buat CadanganClusterControl menyediakan antarmuka untuk manajemen cadangan MySQL dengan dukungan untuk penjadwalan dan laporan kreatif. Ini memberi Anda dua opsi untuk metode pencadangan.
- Logis:mysqldump
- Biner:xtrabackup/mariabackup
Strategi pencadangan yang baik adalah bagian penting dari sistem manajemen basis data apa pun. ClusterControl menawarkan banyak opsi untuk pencadangan dan pemulihan/pemulihan.
ClusterControl:Jadwal pencadangan dan Repositori CadanganRetensi cadangan ClusterControl dapat dikonfigurasi; Anda dapat memilih untuk menyimpan cadangan Anda untuk jangka waktu tertentu atau tidak pernah menghapus cadangan. Enkripsi AES256 digunakan untuk mengamankan cadangan Anda dari elemen jahat. Untuk pemulihan cepat, cadangan dapat dipulihkan langsung ke cluster baru - ClusterControl menangani proses pemulihan penuh mulai dari peluncuran penyiapan basis data baru hingga pemulihan data, menghapus langkah-langkah manual yang rawan kesalahan dari proses.
Cadangan dapat diverifikasi secara otomatis setelah selesai, dan kemudian diunggah ke layanan penyimpanan cloud (AWS, Azure, dan Google). Kebijakan penyimpanan yang berbeda dapat ditentukan untuk cadangan lokal di pusat data serta cadangan yang diunggah di awan.
Pemulihan otomatis node dan cluster
ClusterControl menyediakan dukungan lanjutan untuk deteksi dan penanganan kegagalan. Ini juga memungkinkan Anda untuk menyebarkan proxy yang berbeda untuk mengintegrasikannya dengan tumpukan HA Anda sehingga tidak perlu menyesuaikan string koneksi aplikasi atau entri dns untuk mengarahkan aplikasi ke node master baru.
Ketika server master sedang down, ClusterControl akan membuat pekerjaan untuk melakukan failover otomatis. ClusterControl melakukan semua pekerjaan latar belakang untuk memilih master baru, menerapkan server slave fail-over, dan mengonfigurasi penyeimbang beban.
Kontrol Cluster:Pemulihan otomatis simpulKegagalan otomatis ClusterControl dirancang dengan prinsip-prinsip berikut:
- Pastikan master benar-benar mati sebelum Anda melakukan failover
- Kegagalan hanya sekali
- Jangan melakukan failover ke budak yang tidak konsisten
- Hanya menulis ke master
- Jangan memulihkan master yang gagal secara otomatis
Dengan algoritme bawaan, failover sering kali dapat dilakukan dengan cukup cepat sehingga Anda dapat memastikan SLA tertinggi untuk lingkungan database Anda.
Prosesnya sangat dapat dikonfigurasi. Muncul dengan beberapa parameter yang dapat Anda gunakan untuk mengadopsi pemulihan ke spesifik lingkungan Anda. Di antara opsi yang berbeda, Anda dapat menemukan Replication_stop_on_error, Replication_auto_rebuild_slave, Replication_failover_blacklist, Replication_failover_whitelist, Replication_skip_apply_missing_txs, Replication_onfail_failover_script dan banyak lainnya.