Mysql 8 innodb cluster setup langkah demi langkah

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

PV Power Plant Monitoring and Management System

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

MySQL InnoDB Cluster

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.3

Server 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 https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

Matikan 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.1

Kami 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

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()

> cl=dba.createCluster('TestCluster', {ipWhitelist: '10.10.10.1,10.10.10.2,10.10.10.3'})

> dba.configureLocalInstance()

> cl.status()

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
_0

Tambahkan 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
_1

Setelah menambahkan semua 3 server, cluster. status () akan mengembalikan yang berikut ini

Shell 

10.10.10.10
_2

Jika 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
_3

Buat direktori untuk file konfigurasi cluster kami

Shell 

10.10.10.10
_4

Kami akan melakukan konfigurasi menggunakan bootstrap , saat menentukan alamat IP, Anda harus menentukan alamat server RW saat ini

Shell 

10.10.10.10
_5

Hasil dari konfigurasi yang sukses, output

Shell 

10.10.10.10
_6

Informasi 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
_7

Nyalakan saat startup dan jalankan router kami

Shell 

10.10.10.10
_8

Memeriksa

Shell 

10.10.10.10
_9

Kesimpulan – 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

Bagaimana cara saya terhubung ke kluster InnoDB?

Membuat Kluster InnoDB .
Sambungkan ke instans MySQL yang ingin Anda jadikan instans utama di Cluster InnoDB dengan menerbitkan. mysql-js> shell. .
Keluarkan dba. createCluster() perintah untuk membuat Cluster, dan menggunakan cluster variabel yang ditugaskan untuk menyimpan nilai yang dihasilkan. mysql-js> kluster = dba

Apa itu klaster MySQL InnoDB?

Sebuah InnoDB Cluster terdiri dari setidaknya tiga instance MySQL Server, dan menyediakan fitur penskalaan dan ketersediaan tinggi . InnoDB Cluster menggunakan teknologi MySQL berikut. MySQL Shell, yang merupakan klien tingkat lanjut dan editor kode untuk MySQL.

Bagaimana cara mengatur MySQL cluster Linux?

Langkah 1 — Menginstal dan Mengonfigurasi Cluster Manager. Pertama-tama kita akan mulai dengan mendownload dan menginstal MySQL Cluster Manager, ndb_mgmd. .
Langkah 2 — Menginstal dan Mengonfigurasi Node Data. .
Langkah 3 — Mengonfigurasi dan Memulai Server dan Klien MySQL. .
Langkah 4 — Memverifikasi Instalasi MySQL Cluster

Bagaimana cara membuat cluster database di MySQL?

Mengimpor Cluster Ke MySQL Cluster Manager. Prosedur Dasar
Mengimpor Cluster Ke MySQL Cluster Manager. Contoh. Membuat dan Mengonfigurasi Cluster Target. Menyiapkan Cluster Mandiri untuk Migrasi. Verifikasi Semua File PID Proses Cluster. Menguji dan Memigrasikan Cluster Mandiri