Data adalah mata uang dari aplikasi web, seluler, sosial, perusahaan, dan cloud saat ini dan memastikan data selalu tersedia adalah prioritas utama untuk setiap organisasi yang mendukung secara digital – menit waktu henti akan, jika berhadapan dengan klien, mengakibatkan hilangnya pendapatan secara signifikan dan . Dalam kasus sistem data internal, waktu henti apa pun dapat berdampak serius pada produktivitas, kemampuan untuk membuat keputusan berdasarkan informasi data, dan bahkan berpotensi terhadap kelangsungan operasi
Metode berbagi data bukanlah hal baru tetapi generasi berikutnya dari layanan web, cloud, dan komunikasi serta persyaratannya untuk skalabilitas, waktu aktif, dan ketangkasan tanpa kompromi telah memperkenalkan tantangan basis data baru
Dalam studi kasus teknis ini, kami akan memandu Anda melalui proses langkah-demi-langkah menginstal dan menyiapkan MySQL InnoDB Cluster dan menghubungkan Router MySQL dalam konteks pengembangan aplikasi bertenaga data besar untuk pemantauan pembangkit energi surya dan
Konteks – solusi pemantauan & pengelolaan energi PV berbasis data besar
Klien kami adalah perintis dan perusahaan terkemuka dalam pemantauan PV (fotovoltaik), energi cerdas, dan manajemen umpan di seluruh daya dan pemanas terbarukan. Perusahaan ini menawarkan solusi pemantauan dan manajemen profesional untuk pembangkit listrik PV di seluruh dunia, yang memungkinkan pengelolaan pembangkit individual dalam armada dan untuk pembangkit yang akan disortir dan tampilan yang diadaptasi sesuai dengan kebutuhan kelompok pengguna.
Analisis kesalahan terperinci dan penjagaan pemecahan masalah yang cepat terhadap kehilangan hasil tanaman, mengamankan investasi. Pengguna mendapat manfaat dari efisiensi waktu dan anggaran
Komunikasi mulus antara WEB, pencatat data, dan masing-masing komponen memastikan identifikasi masalah secara tepat waktu, melindungi tingkat hasil. Pengguna yang mudah digunakan dan manajemen sistem menawarkan opsi ekstensif untuk memfilter, mengelompokkan, dan melihat secara tepat sesuai dengan kebutuhan dan keinginan masing-masing pengguna, baik berdasarkan wilayah, jenis sistem, kontrak layanan, atau spesifikasi lainnya
Penyajian data terstruktur berarti pengguna tidak pernah kehilangan ikhtisar. Dan kompilasi informasi sistem individual yang cerdas dan real-time memungkinkan analisis kesalahan yang cepat, pemecahan masalah yang lebih cepat, dan pada akhirnya, alur kerja yang lebih lancar dan pengoptimalan hasil
Keandalan Database Sangat Penting
Sifat dari sistem pemantauan dan manajemen pembangkit PV klien kami berarti aliran data yang aman dan andal sangatlah penting. Bagian dari tugas kami adalah memastikan hal itu dan keputusan dibuat untuk melakukannya dengan menggunakan cluster MySQL InnoDB
Solusinya?
Cluster MySQL InnoDB adalah solusi Oracle High Availability yang diinstal melalui MySQL dengan kemampuan multi-master dan failover otomatis untuk ketersediaan tinggi. Ini memungkinkan replikasi basis data yang meningkatkan toleransi kesalahan dengan memastikan kegagalan satu bagian infrastruktur tidak pernah terbukti fatal karena cadangan data yang direplikasi dapat ditarik dari bagian lain infrastruktur
Saat membangun sistem yang sangat mudah diakses dan toleran terhadap kesalahan, kami membuat titik di infrastruktur tempat data digandakan. Duplikasi data meningkatkan ketersediaannya jika terjadi masalah dengan sebagian infrastruktur dan mempercepat proses penulisan atau pembacaan data
Duplikasi data paling umum terjadi di bagian infrastruktur berikut
- penyeimbang beban
- server penyimpanan
- server basis data
- server cadangan
Studi kasus teknis ini menimbulkan pertanyaan tentang bagaimana mengatur database MySQL terdistribusi untuk toleransi kesalahan dengan meningkatkan jumlah replikasi database yang tersedia
Tujuan kami adalah mencapai ini murni melalui MySQL tanpa menggunakan perangkat lunak pihak ketiga
Hasilnya adalah sekelompok 4 server, 1 titik masuk (router MySQL) dan 3 server penyimpanan data (1 master dan 2 sekunder)
Diagram Cluster MySQL InnoDB
Saat memulai instalasi, kami menggunakan 3 server untuk MySQL secara langsung dan 1 server untuk terhubung ke cluster kami – router MySQL
Server MySQL
Shell 10.10.10.1 10.10.10.2 10.10.10.3Server router
Shell 10.10.10.10_OS Centos 7 c menonaktifkan selinux dan firewalld. MySQL akan menggunakan versi 5. 7
Hubungkan repositori
Shell rpm -i //dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpmMatikan versi 8 dan nyalakan 5. 7
Shell yum install yum-utils yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community yum repolist yum install mysql-community-server mysql-shell Rules /etc/my.cnf Shell [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid bind-address=0.0.0.0 port=3301 # Replication part server_id=1 gtid_mode=ON enforce_gtid_consistency=ON master_info_repository=TABLE relay_log_info_repository=TABLE binlog_checksum=NONE log_slave_updates=ON log_bin=binlog binlog_format=ROW plugin-load = group_replication.so # Group replication part transaction_write_set_extraction=XXHASH64 loose-group_replication_start_on_boot = OFF loose-group_replication_local_address = 10.10.10.1:33011 loose-group_replication_bootstrap_group = OFF report_port = 3301 report_host = 10.10.10.1Kami menggantung Mysql di port 3301, tempat pertukaran data antar server cluster
Kami kemudian membawa file /etc/my. cnf ke formulir ini di ketiga server cluster, ubah IP dalam variabel loose-group_replication_local_address dan report_host , dan juga ubah server_id – itu unik untuk setiap server
Dan mulai MySQL dan lakukan pengaturan awal
Shell systemctl start mysqld grep 'password' /var/log/mysqld.log mysql_secure_installation _Kami sekarang mulai membuat cluster. Pertama, kami akan membuat pengguna cladmin di ketiga server, untuk ini kami akan menggunakan konsol MySQLh
Output dari cl. status () seharusnya seperti ini
Shell MySQL 10.10.10.1:3301 ssl JS > cluster.status() { "clusterName": "TestCluster", "defaultReplicaSet": { "name": "default", "primary": "10.10.10.1:3301", "ssl": "REQUIRED", "status": "OK_NO_TOLERANCE", "statusText": "Cluster is NOT tolerant to any failures.", "topology": { "10.10.10.1:3301": { "address": "10.10.10.1:3301", "mode": "R/W", "readReplicas": {}, "role": "HA", "status": "ONLINE" } }, "topologyMode": "Single-Primary" }, "groupInformationSourceMember": "mysql://[email protected]:3301" } _Saat kami melakukan perubahan pada konfigurasi cluster, pastikan untuk menjalankan perintah
Shell > dba.configureLocalInstance()Kami melakukan tindakan serupa di ketiga server, jangan lupa untuk menulis IP dan ID yang benar di /etc/my. cnf (server_id, loose-group_replication_local_address, report_host)
Setelah langkah sebelumnya dilakukan pada node yang kami sambungkan (server ke-2 dan ke-3 dalam contoh kami), kami mengeksekusi
Shell [[email protected] ~] mysql -p > set GLOBAL group_replication_allow_local_disjoint_gtids_join=ON; Shell [[email protected] ~] mysqlsh > \c 127.0.0.1:3301 > dba.configureLocalInstance("127.0.0.1:3301", {mycnfPath: "/etc/my.cnf", clusterAdmin: "cladmin", clusterAdminPassword: "StrongPassword!#1"}) > \c [email protected]:3301 > dba.checkInstanceConfiguration() _Setelah prosedur ini di server kedua, kami kembali ke server pertama
Shell [[email protected] ~] mysqlsh --uri [email protected]:3301 --cluster > cluster.addInstance('[email protected]:3301', {ipWhitelist: '10.10.10.1,10.10.10.2,10.10.10.3'}) > cluster.status() > dba.configureLocalInstance() _Kami juga menjalankan dba. configureLocalInstance () di server kedua
Keluaran klaster. status () harus seperti ini
Shell 10.10.10.10_0Tambahkan server ke-3 dengan cara yang sama
Jika kami perlu memperluas cluster ke 5 server atau lebih, kami perlu mengedit daftar putih. Ini dapat dilakukan melalui MySQLh (MySQL Shell) dengan masuk ke mode sql atau langsung di /etc/my. cnf (jangan lupa untuk me-restart daemon mysql)
Contoh cara melakukannya menggunakan konsol MySQLh (bergantian di setiap node RW)
Shell 10.10.10.10_1Setelah menambahkan semua 3 server, cluster. status () akan mengembalikan yang berikut ini
Shell 10.10.10.10_2Jika cluster berantakan ke keadaan satu server, itu harus dimulai dengan loose-group_replication_bootstrap_group = ON
parameter di /etc/my. cnf Setelah memulai, parameter perlu dimatikan lagi, jika tidak, server ini akan selalu terpisah dari cluster dan bekerja secara mandiri
Konfigurasi Router Mysql
Tambahkan lobak dan masukkan paket
Shell 10.10.10.10_3Buat direktori untuk file konfigurasi cluster kami
Shell 10.10.10.10_4Kami akan melakukan konfigurasi menggunakan bootstrap , saat menentukan alamat IP, Anda harus menentukan alamat server RW saat ini
Shell 10.10.10.10_5Hasil dari konfigurasi yang sukses, output
Shell 10.10.10.10_6Informasi koneksi berikut dapat digunakan untuk terhubung ke cluster setelah MySQL Router dimulai dengan konfigurasi yang dihasilkan
Koneksi protokol MySQL klasik ke cluster 'TestCluster'
Koneksi Baca/Tulis. localhost. 6446 – Koneksi Baca/Hanya. localhost. Koneksi protokol 6447 X ke cluster 'TestCluster'. – Baca/Tulis Koneksi. localhost. 64460 – Koneksi Baca/Hanya. localhost. 64470
Port 6446 – untuk koneksi RW
Port 6447 – untuk koneksi RO
Buat file layanan systemd untuk memulai router mysql dengan file konfigurasi yang kami hasilkan
Shell 10.10.10.10_7Nyalakan saat startup dan jalankan router kami
Shell 10.10.10.10_8Memeriksa
Shell 10.10.10.10_9Kesimpulan – ketersediaan tinggi & basis data yang toleran terhadap kesalahan
Pilihan MySQL InnoDB Cluster telah terbukti sangat kuat dan cara yang sangat efektif untuk mencapai tingkat ketersediaan dan toleransi kesalahan yang diperlukan untuk pemantauan dan pengelolaan hasil pembangkit tenaga surya yang efektif. Kami berharap kombinasi kasus penggunaan bisnis dan panduan instalasi langkah demi langkah teknis menyoroti kapan dan di mana MySQL InnoDB Cluster dapat menjadi solusi yang tepat untuk solusi perangkat lunak yang berpusat pada basis data dalam menyelesaikan tantangan ketersediaan dan toleransi kesalahan