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

Instalasi Offline MariaDB Cluster untuk CentOS

Sebagian besar langkah penginstalan yang tersedia di Internet mencakup penginstalan online standar, dengan asumsi host database memiliki koneksi internet aktif ke repositori paket dan memenuhi semua dependensi. Namun, langkah dan perintah penginstalan sedikit berbeda untuk penginstalan offline. Instalasi offline adalah praktik umum di lingkungan yang ketat dan aman seperti sektor keuangan dan militer untuk kepatuhan keamanan, mengurangi risiko paparan, dan menjaga kerahasiaan.

Dalam posting blog ini, kita akan menginstal MariaDB Cluster tiga-simpul di lingkungan offline pada host CentOS. Pertimbangkan tiga node berikut untuk instalasi ini:

  • mariadb1 - 192.168.0.241
  • mariadb2 - 192.168.0.242
  • mariadb3 - 192.168.0.243

Unduh Paket

Bagian yang paling memakan waktu adalah mendapatkan semua paket yang diperlukan untuk instalasi kami. Pertama, buka repositori MariaDB masing-masing yang ingin kita instal (dalam contoh ini, OS kita adalah CentOS 7 64bit):

  • MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/ 
  • MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
  • MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
  • MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/ 
  • MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/

Pastikan Anda mengunduh versi minor yang sama persis untuk semua paket terkait MariaDB. Dalam contoh ini, kami mengunduh MariaDB versi 10.4.13. Ada banyak paket dalam repositori ini tetapi kami tidak membutuhkan semuanya hanya untuk menjalankan MariaDB Cluster. Beberapa paket sudah usang dan untuk tujuan debugging. Untuk MariaDB Galera 10.4 dan CentOS 7, kita perlu mengunduh paket berikut dari repositori MariaDB 10.4:

  • jemalloc
  • galera-3/galera-4
  • libzstd
  • Cadangan MariaDB
  • Server MariaDB
  • klien MariaDB
  • MariaDB dibagikan
  • MariaDB umum
  • Kompatibel MariaDB

Perintah wget berikut akan menyederhanakan proses pengunduhan:

wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Beberapa dari paket ini memiliki ketergantungan pada paket lain. Untuk memuaskan semuanya, mungkin yang terbaik adalah memasang citra ISO sistem operasi dan mengarahkan manajer paket yum untuk menggunakan citra ISO sebagai repositori basis offline. Jika tidak, kami akan membuang banyak waktu untuk mengunduh/mentransfer paket dari satu host/media ke host/media lainnya.

Jika Anda mencari paket MariaDB yang lebih lama, cari di repositori arsipnya di sini. Setelah diunduh, transfer paket ke semua server basis data melalui drive USB, pembakar DVD, atau penyimpanan jaringan apa pun yang terhubung ke host basis data.

Pasang Gambar ISO Secara Lokal

Beberapa dependensi perlu dipenuhi selama instalasi dan salah satu cara untuk mencapainya dengan mudah adalah dengan menyiapkan repositori yum offline di server database. Pertama, kita harus mengunduh image CentOS 7 DVD ISO dari situs mirror CentOS terdekat, di bawah direktori "isos":

$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso

Anda dapat mentransfer gambar dan memasangnya secara langsung atau membakarnya ke dalam DVD dan menggunakan drive DVD dan menghubungkannya ke server. Dalam contoh ini, kita akan memasang citra ISO sebagai DVD di server:

$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS

Kemudian, aktifkan repositori CentOS-Media (c7-media) dan nonaktifkan repositori online standar (base,updates,extras):

$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media

Kami sekarang siap untuk instalasi.

Menginstal dan Mengonfigurasi Server MariaDB

Langkah-langkah penginstalan cukup mudah jika kita telah menyiapkan semua paket yang diperlukan. Pertama, disarankan untuk menonaktifkan SElinux (atau setel ke mode permisif):

$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Navigasi ke direktori tempat semua paket berada, dalam hal ini, /root/installer/. Pastikan semua paket ada di sana:

$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm

Mari kita instal dependensi mariabackup yang disebut socat terlebih dahulu lalu jalankan perintah yum localinstall untuk menginstal paket RPM dan memenuhi semua dependensi:

$ yum install socat
$ yum localinstall *.rpm

Mulai layanan MariaDB dan periksa statusnya:

$ systemctl start mariadb
$ systemctl status mariadb

Pastikan Anda tidak melihat kesalahan dalam prosesnya. Kemudian, jalankan skrip mysql_secure_installation untuk mengonfigurasi kata sandi root MySQL dan pengerasan:

$ mysql_secure_installation

Pastikan kata sandi root MariaDB sama di semua host MariaDB. Buat pengguna MariaDB untuk melakukan pencadangan dan SST. Ini penting jika kita ingin menggunakan mariabackup yang direkomendasikan sebagai metode SST untuk MariaDB Cluster, dan juga untuk tujuan pencadangan:

$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];

Kita perlu memodifikasi file konfigurasi default untuk memuat fungsionalitas MariaDB Cluster. Buka /etc/my.cnf.d/server.cnf dan pastikan baris berikut ada untuk konfigurasi minimal:

[mysqld]
log_error = /var/log/mysqld.log

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this

Jangan lupa untuk mengganti nilai wsrep_node_address dengan alamat IP node database untuk komunikasi MariaDB Cluster. Juga, nilai wsrep_provider mungkin berbeda tergantung pada server MariaDB dan versi Cluster MariaDB yang telah Anda instal. Temukan jalur libgalera_smm.so dan tentukan sesuai di sini.

Ulangi langkah yang sama pada semua node database dan sekarang kita siap untuk memulai cluster kita.

Bootstrap Cluster

Karena ini adalah cluster baru, kita dapat memilih salah satu node MariaDB untuk menjadi node referensi untuk proses bootstrap cluster. Mari kita pilih mariadb1. Pastikan MariaDB di stop dulu, lalu jalankan perintah galera_new_cluster untuk bootstrap:

$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb

Pada dua node lainnya (mariadb2 dan mariadb3), kita akan memulainya menggunakan perintah start MariaDB standar:

$ systemctl stop mariadb
$ systemctl start mariadb

Verifikasi apakah semua node adalah bagian dari cluster dengan melihat status terkait wsrep pada setiap node:

MariaDB> SHOW STATUS LIKE 'wsrep%';

Pastikan status yang dilaporkan adalah sebagai berikut:

wsrep_local_state_comment     | Synced
wsrep_cluster_size            | 3
wsrep_cluster_status          | Primary

Untuk MariaDB 10.4 dan Galera Cluster 4, kita bisa mendapatkan informasi anggota cluster langsung dari tabel mysql.wsrep_cluster_members pada setiap node MariaDB:

$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid                            | cluster_uuid                         | node_name     | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local  | AUTO                  |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local  | AUTO                  |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local  | AUTO                  |
+--------------------------------------+--------------------------------------+---------------+-----------------------+

Jika terjadi kesalahan selama cluster bootstrap, periksa log kesalahan MySQL di /var/log/mysqld.log pada semua node MariaDB. Setelah sebuah cluster di-bootstrap dan dijalankan, jangan jalankan skrip galera_new_cluster lagi untuk memulai layanan MariaDB. Seharusnya cukup dengan menggunakan perintah "systemctl start/restart mariadb" standar, kecuali jika tidak ada node database dalam status PRIMARY lagi. Lihat posting blog ini, Cara Bootstrap MySQL atau MariaDB Cluster untuk memahami mengapa langkah ini penting.

Langkah Bonus

Sekarang Anda sudah memiliki cluster database yang berjalan tanpa fitur pemantauan dan manajemen. Mengapa Anda tidak mengimpor cluster database ke ClusterControl? Instal ClusterControl di server lain yang terpisah, dan atur SSH tanpa kata sandi dari server ClusterControl ke semua node database. Misalkan IP server ClusterControl adalah 192.168.0.240, jalankan perintah berikut di server ClusterControl:

$ whoami
root

$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243

Kemudian buka ClusterControl -> Import -> MySQL Galera dan masukkan detail SSH yang diperlukan:

Pada langkah kedua di bawah Tentukan Server MySQL, matikan "Penemuan Node Otomatis " dan tentukan semua alamat IP dari node database, dan pastikan ada centang hijau di sebelah alamat IP, yang menunjukkan bahwa ClusterControl dapat mencapai node melalui SSH tanpa kata sandi:

Klik Impor dan tunggu sampai pekerjaan impor selesai. Anda akan melihatnya di bawah daftar cluster:

Anda berada di tangan yang tepat sekarang. Perhatikan bahwa ClusterControl akan default ke fitur perusahaan penuh 30 hari dan setelah kedaluwarsa, ClusterControl akan kembali ke Edisi Komunitas, yang gratis selamanya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengantar Penerapan MySQL Menggunakan Peran yang Mungkin

  2. Bagaimana LEAST() Bekerja di MariaDB

  3. Penyeimbangan Beban Basis Data:Pengaturan Terdistribusi vs Terpusat

  4. Bagaimana SEC_TO_TIME() Bekerja di MariaDB

  5. Fungsi AVG() di MariaDB