Puede consultar la documentación https://galeracluster.com/library/documentation/index.html
, aquí solo se introduce el método de instalación
1) Tres nodos, crea fuentes yum por separado
[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) Instalacióninstall MariaDB-client MariaDB-Galera-server galera
yum install MariaDB-client \
MariaDB-Galera-server \
galera
3) Prepare la configuración del sistema y la configuración de replicación de nodos para cada nodo, consulte el documento
[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) Inicie el clúster, primero comience en cualquier nodo, debe agregar --wsrep-new-cluster
, para inicializar el clúster, el resto de los nodos pueden comenzar normalmente
/etc/init.d/mysql start --wsreq-new-cluster
其余节点可以直接使用systemctl
systemctl start mysql
5) Ver el estado del clúster de la base de datos en mysql
#证明已经有三个节点成功启动了
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.00 sec)
6) Prueba el clúster
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) Desconecte un nodo, siga escribiendo datos en él durante este período y luego reinicie el nodo roto.
再次插入一条数据
[root@ydong ~]# mysql -e 'SELECT * FROM ydong.my_cluster'
+------+---------+
| id | message |
+------+---------+
| 1 | hello |
| 2 | hi |
+------+---------+
重启断掉的节点会自动重新启动
8) Reinicie todo el servicio de clúster. Si todos los servicios de clúster se cuelgan por fuerza mayor y deben reiniciarse, los nodos deben iniciarse en orden, de lo contrario se perderá parte de los datos. Documentos de referencia
killall mysqld
9) El /var/lib/grastate.dat
archivo registra el último mysql que cerró el nodo, uno de los cuales es safe_to_bootstrap=1
el mysql correcto que debe iniciarse cuando se reinicia todo el clúster. El 1
sistema lo escribe automáticamente. Si queremos iniciar la base de datos donde este elemento es 0. No iniciará la base de datos
[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 datos que reiniciamos como , debido a que es un proceso /var/lib/mysql.sock
muerto , todavía hay mysql.sock, esto causará conflictos, primero debe eliminarlo, la prueba anterior se ha eliminado
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) Estamos comenzando otros dos nodos
[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) Ver el estado del clúster
wsrep_cluster_size | 3
wsrep_ready | ON |
wsrep_thread_count | 2