Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menginstal Percona XtraDB Cluster di CentOS 7

Selamat datang di blog lain. Kali ini saya di sini untuk menunjukkan kepada kalian bagaimana cara men-setup percona XtraDB cluster. Oke, jadi apa itu percona XtraDB? XtraDB adalah solusi pengelompokan MySQL, Ini memastikan ketersediaan tinggi, mencegah downtime dan kehilangan data dan menyediakan skalabilitas linier untuk lingkungan yang berkembang. Saat Anda menjalankan kueri, kueri tersebut dieksekusi secara lokal di node. Semua data tersedia secara lokal, tidak perlu akses jarak jauh. Solusi yang baik untuk menskalakan beban kerja baca. Anda dapat menempatkan kueri baca ke salah satu node. Setelah Anda menginstal percona XtraDB, Anda tidak perlu menginstal MySQL secara terpisah, XtraDB akan mendapatkannya dari repositori percona dan Anda akan dapat menyiapkan cluster setelah membaca artikel ini.

prasyarat:

Untuk mengkonfigurasi cluster percona XtraDB di Server Linux kita membutuhkan tiga server, informasinya seperti berikut:

server percona1:192.168.56.110

percona2 server:192.168.56.113

Server percona3:192.168.56.114

OS:CentOS 7

Anda juga dapat menggunakan dua server tetapi dokumen resmi merekomendasikan jumlah server yang ganjil. misalnya 3,5,7 dan seterusnya. hanya saja jangan pergi untuk jumlah node yang genap, mereka menyebutnya split-brain. Split-brain adalah keadaan di mana node kehilangan kontak satu sama lain dan kemudian keduanya mencoba untuk mengendalikan sumber daya bersama atau menyediakan layanan cluster secara bersamaan

CATATAN:Kami memerlukan akses root pada node tempat kami akan menginstal Percona XtraDB Cluster
(baik login sebagai pengguna dengan hak akses root atau dapat menjalankan perintah dengan Sudo

Pemeriksaan awal:

Tambahkan entri di bawah ini di file /etc/hosts Anda ——> di semua server (percona1,percona2,percona3)

192.168.56.110 percona1.localdomain percona1
192.168.56.113 percona2.localdomain percona2
192.168.56.114 percona3.localdomain percona3

Buka port firewall:

Kita perlu membuka port di bawah ini di semua server (percona1,percona2,percona3)
3306
4444
4567
4568

firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public - -add-port=4568/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/udp --permanentfirewall- cmd --reloadfirewall-cmd --list-all
[[email protected] ~]# firewall-cmd --list-allpublic (aktif)target:defaulticmp-block-inversion:nointerfaces:enp0s3 enp0s8sources:services:ssh dhcpv6-client mysqlports:3306/tcp 4567/tcp 4568/tcp 4444/tcp 4567/udpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:rich rules

Nonaktifkan SELinux:——->di semua server(percona1,percona2,percona3)

[[email protected] ~]# setenforce 0

Ini akan menempatkan SELinux dalam mode permisif untuk sesi saat ini tetapi kita perlu menonaktifkannya secara permanen.
edit /etc/sysconfig/selinux file set variabel selinux sebagai dinonaktifkan di semua server (percona1,percona2,percona3):
vi /etc/sysconfig/selinux
SELINUX=disabled

Semua server harus dapat diakses satu sama lain, Untuk memeriksa aksesibilitas, ping setiap server.

Instll di bawah prereq RPM:——->di semua server(percona1,percona2,percona3)

epel-release
libev
socat

[[email protected] ~]# yum -y install epel-release Terpasang:epel-release.noarch 0:7-11[[email protected] yum.repos.d]# yum -y install libev Terpasang :libev.x86_64 0:4.15-7.el7[[email protected] Desktop]# yum -y install socat Terpasang:socat.x86_64 0:1.7.3.2-2.el7

Tambahkan Repositori Percona:——->di semua server(percona1,percona2,percona3)

Sekarang kita akan menambahkan repositori percona di ketiga server (percona1,percona2,percona3):

[[email protected] ~]# sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpmInstalled:percona-release.noarch 0:1.0-13 Selesai !

Instal Percona-XtraDB-Cluster:——->di semua server(percona1,percona2,percona3)

[[email protected] ~]# yum install -y Percona-XtraDB-Cluster-57Plugin yang dimuat:cermin tercepat, langpacksMemuat kecepatan cermin dari file host yang di-cache...Diinstal:Percona-XtraDB-Cluster-57.x86_64 0:5.7 .27-31.39.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.27-31.39 .1.el7Ketergantungan Terpasang:Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.27-31.39.1.el7 Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.27-31.39.1.el7 percona-xtrabackup-24.x86_64 0:2.4.17-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-MD5.x86_64 0 :2.52-3.el7 qpress.x86_64 0:11-1.el7Diganti:mariadb-libs.x86_64 1:5.5.60-1.el7_5Selesai!

Coba cek apakah Percona XtraDB sudah terpasang atau belum.

[[email protected] ~]# yum search Percona-XtraDBCATATAN: Sampai di sini semua langkah di atas harus dilakukan di semua server (percona1,percona2,percona3)
Mengonfigurasi Node untuk Replikasi Write-Set
ON Percona1:

Mari mulai server MySQL dan ubah kata sandi root hanya di server percona1

[[email protected] ~]# systemctl start mysql[[email protected] ~]# grep password /var/log/mysqld.log2019-12-11T10:35:12.135133Z 1 [Catatan] Kata sandi sementara dihasilkan untuk [email protected]:hJ(l8ySe>f>ENote :salin kata sandi "hJ(l8ySe>f>E" kita akan mengubah kata sandi ini:[[email protected] ~]# mysql_secure_installation --- ---->di semua server(percona1,percona2,percona3)Mengamankan penyebaran server MySQL.Masukkan kata sandi untuk root pengguna:Kata sandi yang ada untuk root akun pengguna telah kedaluwarsa. Harap setel kata sandi baru.Kata sandi baru:Masukkan kembali kata sandi baru:VALIDATE PASSWORD PLUGIN dapat digunakan untuk menguji kata sandi dan meningkatkan keamanan. Plugin ini memeriksa kekuatan kata sandi dan memungkinkan pengguna untuk menyetel hanya kata sandi yang cukup aman. Apakah Anda ingin menyiapkan plugin VALIDATE PASSWORD? Tekan y|Y untuk Ya, apa saja kunci lain untuk Tidak:Menggunakan kata sandi yang ada untuk root.Ubah kata sandi untuk root ? ((Tekan y|Y untuk Ya, tombol lain untuk Tidak):... skipping.Secara default, instalasi MySQL ation memiliki pengguna anonim, memungkinkan siapa saja untuk masuk ke MySQL tanpa harus membuat akun pengguna untuk mereka. Ini dimaksudkan hanya untuk menguji, dan untuk membuat penginstalan berjalan sedikit lebih lancar. Anda harus menghapusnya sebelum pindah ke lingkungan produksi. Hapus pengguna anonim? (Tekan y|Y untuk Ya, sembarang tombol lain untuk Tidak):yesSuccess. Biasanya, root hanya diperbolehkan untuk terhubung dari 'localhost'. Ini memastikan bahwa seseorang tidak dapat menebak kata sandi root dari jaringan. Larang login root dari jarak jauh? (Tekan y|Y untuk Ya, tombol lain untuk Tidak):yesSuccess. Secara default, MySQL dilengkapi dengan database bernama 'test' yang dapat diakses siapa saja. Ini juga dimaksudkan hanya untuk pengujian, dan harus dihapus sebelum pindah ke lingkungan produksi. Hapus database pengujian dan akses ke sana? (Tekan y|Y untuk Ya, tombol lain untuk Tidak) :... skipping.Memuat ulang tabel hak istimewa akan memastikan bahwa semua perubahan yang dibuat sejauh ini akan segera berlaku. Muat ulang tabel hak istimewa sekarang? (Tekan y|Y untuk Ya, sembarang tombol lain untuk Tidak) :yesSuccess.All done!

Sekarang hentikan server MySQL di percona1.

[[email protected] ~]# systemctl stop mysql

Sekarang kita akan mengkonfigurasi replikasi kita, kita akan menambahkan informasi replikasi di file my.cnf.

Konfigurasikan Pengaturan Replikasi di percona1:
cat>>/etc/my.cnf<
 

Sekarang inisialisasi cluster dengan bootstrap node pertama. Ini harus node dengan database utama Anda, yang akan digunakan sebagai sumber data untuk cluster dalam kasus kami adalah server percona1

[[email protected] ~]# systemctl start [email protected] mengkonfigurasi replikasi kita perlu membuat user tersendiri untuk replikasi yang akan digunakan untuk proses replikasi. mengapa kita membutuhkan pengguna replikasi? ketika Anda menambahkan simpul baru ke kluster, ia membuang konfigurasi simpul saat ini dan mentransfernya ke simpul kedua karena alasan itu kami membutuhkan pengguna terpisah.

CATATAN: Pastikan pengguna harus sama dengan yang disebutkan pada variabel “wsrep_sst_auth” dalam konfigurasi replikasi yang digunakan dalam file my.cnf.

[[email protected] ~]#mysql -u root -p mysql>buat contoh [email protected]'%' diidentifikasi dengan 'perconapasswd';mysql>berikan semua pada *.* ke [email protected] '%';mysql>hak flush;
ON Percona2:

Konfigurasikan Pengaturan Replikasi di percona2:

cat>>/etc/my.cnf<2EOinnodb_mode 

Sekarang mulai mysql dan ini akan menambahkan node ini ke cluster.

[[email protected] ~]# systemctl start mysql
ON Percona3:

Konfigurasikan Pengaturan Replikasi di percona3:

cat>>/etc/my.cnf<
 Sekarang mulai mysql dan ini akan menambahkan node ini ke cluster.

[[email protected] ~]# systemctl start mysql

Anda akan mengamati pesan seperti itu di log mysql (var/log/mysqld.log)

(percona2):Transfer status dari 0,0 (percona1) selesai

1.0 (percona3):Transfer status dari 0.0 (percona1) selesai

Untuk memastikan cluster telah diinisialisasi, jalankan perintah berikut:

mysql> tampilkan status seperti 'wsrep%';+----------------------------------+- -------------------------------------------------- ----------+| Nama_variabel | Nilai |+-----------------------------------+------------ --------------------------------------------------+ | wsrep_local_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_protocol_version | 9 || wsrep_last_applied | 6 |...| wsrep_flow_control_recv | 0 || wsrep_flow_control_interval | [ 173, 173 ] || wsrep_flow_control_interval_low | 173 || wsrep_flow_control_interval_high | 173 || wsrep_flow_control_status | MATI |..| wsrep_local_state | 4 || wsrep_local_state_comment | Disinkronkan || wsrep_cert_index_size | 1 || wsrep_cert_bucket_count | 22 || wsrep_gcache_pool_size | 2384 |..| wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306 || wsrep_cluster_weight | 3 || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERASIONAL || wsrep_gcomm_uuid | 1d16f574-1c1b-11ea-b5dd-574c9a653584 || wsrep_cluster_conf_id | 3 || wsrep_cluster_size  | 3 || wsrep_cluster_state_uuid | 6d95cd36-1c1a-11ea-999a-83631204f6e3 || wsrep_cluster_status | Utama || wsrep_connected | AKTIF || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codership Oy  || wsrep_provider_version | 3.39(rb3295e6) || wsrep_ready | ON |+-----------------------------------+------------ --------------------------------------------------+ 71 baris dalam set (0,00 detik)

Seperti yang Anda lihat, ukuran cluster adalah 3 “wsrep_cluster_size | 3” dan Anda juga dapat melihat IP dari ketiga node kami
wsrep_incoming_addresses | 192.168.56.110:3306,192.168.56.114:3306,192.168.56.113:3306

Uji cluster kami:

Saya membuat database di percona 1 dan kemudian kami akan memeriksa percoan 3 apakah sudah direplikasi.

mysql> tampilkan database;+--------------------+| Basis Data |+--------------------+| skema_informasi || mysql || skema_kinerja || sys |+--------------------+4 baris dalam set (0,03 detik)mysql> CREATE DATABASE perconatest;Kueri OK, 1 baris terpengaruh (0,03 detik) 

Sekarang mari kita periksa percona3 kita akan melihat bahwa DB 'perconatest' akan dibuat

[[email protected] ~]# mysql -uroot -p -e "tampilkan database"Masukkan kata sandi:+--------------------+| Basis Data |+--------------------+| skema_informasi || mysql || perconatest || skema_kinerja || sys |+--------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menginstal MySQLdb (perpustakaan akses data Python ke MySQL) di Mac OS X?

  2. #1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maksimal adalah 1000 byte

  3. MySQL:Lihat dengan Subquery di FROM Clause Limitation

  4. Tidak ada penyedia Entity Framework yang ditemukan untuk penyedia ADO.NET 'MySql.Data.MySqlClient'

  5. Apa cara yang diketahui untuk menyimpan struktur pohon dalam DB relasional?