Vous pouvez vous référer à la documentation https://galeracluster.com/library/documentation/index.html
, ici seule la méthode d'installation est présentée
1) Trois nœuds, créez des sources yum séparément
[root@ydong ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.0-galera/centos/7/x86_64/
gpgcheck = 0
2) Installationinstall MariaDB-client MariaDB-Galera-server galera
yum install MariaDB-client \
MariaDB-Galera-server \
galera
3) Préparez la configuration du système et la configuration de la réplication des nœuds pour chaque nœud, reportez - vous au document
[mysqld]
skip_name_resolve=ON
innodb_file_per_table=ON
[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.199.157,192.168.199.141,192.168.199.155"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
# this is only for embedded server
4) Démarrez le cluster, commencez d'abord sur n'importe quel nœud, vous devez ajouter --wsrep-new-cluster
, pour initialiser le cluster, le reste des nœuds peut démarrer normalement
/etc/init.d/mysql start --wsreq-new-cluster
其余节点可以直接使用systemctl
systemctl start mysql
5) Afficher l'état du cluster de base de données dans mysql
#证明已经有三个节点成功启动了
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.00 sec)
6) Testez le cluster
MariaDB [ydong]> CREATE TABLE my_cluster ( id INT UNSIGNED , message char(10));
MariaDB [ydong]> INSERT INTO my_cluster VALUES (1,'hello');
[root@ydong ~]# mysql -e 'SELECT * FROM ydong.my_cluster'
+------+---------+
| id | message |
+------+---------+
| 1 | hello |
+------+---------+
7) Déconnectez un nœud, continuez à y écrire des données pendant cette période, puis redémarrez le nœud cassé.
再次插入一条数据
[root@ydong ~]# mysql -e 'SELECT * FROM ydong.my_cluster'
+------+---------+
| id | message |
+------+---------+
| 1 | hello |
| 2 | hi |
+------+---------+
重启断掉的节点会自动重新启动
8) Redémarrez l'ensemble du service de cluster.Si tous les services de cluster se bloquent en raison d'un cas de force majeure et doivent être redémarrés, les nœuds doivent être démarrés dans l'ordre, sinon une partie des données sera perdue. Documents de référence
killall mysqld
9) Le /var/lib/grastate.dat
fichier enregistre le dernier mysql qui a arrêté le nœud, dont l'un est safe_to_bootstrap=1
le mysql correct qui doit être démarré lorsque tout le cluster est redémarré. Ceci 1
est automatiquement écrit par le système. Si nous voulons démarrer la base de données où cet élément est 0. Ne démarre pas la base de données
[root@ydong ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 9c81c2b4-fa9c-11ea-80a0-bbd29ca18721
seqno: 5
safe_to_bootstrap: 0
[root@ydong ~]# /etc/init.d/mysql start
Starting MariaDB.200920 13:47:37 mysqld_safe Logging to '/var/lib/mysql/ydong.com.err'.
200920 13:47:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
................................../etc/init.d/mysql: 第 262 行:kill: (14016) - 没有那个进程
ERROR!
10) 1
La base de données que nous avons redémarrée , car c'est un processus /var/lib/mysql.sock
tué , il y a toujours mysql.sock, cela provoquera des conflits, vous devez d'abord supprimer, le test ci-dessus a été supprimé
rm -rf /var/lib/mysql/mysql.sock
[root@ydong ~]# /etc/init.d/mysql start --wsrep-new-cluster
Starting MariaDB.200920 13:50:36 mysqld_safe Logging to '/var/lib/mysql/ydong.com.err'.
200920 13:50:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
. SUCCESS!
11) Nous commençons deux autres nœuds
[root@ydong ~]# systemctl restart mysql
[root@ydong ~]# systemctl status mysql
● mysql.service - LSB: start and stop MariaDB
Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
Active: active (running) since 日 2020-09-20 13:51:20 CST; 5s ago
12) Afficher l'état du cluster
wsrep_cluster_size | 3
wsrep_ready | ON |
wsrep_thread_count | 2