1. Descripción general del clúster PXC
1.1 Introducción a PXC
- Clúster Percona XtraDB (denominado PXC)
- Es una solución de clúster MySQL de alta disponibilidad basada en Galera
- Galera Cluster es una solución de alta disponibilidad gratuita y de código abierto desarrollada por Codership
- El clúster PXC se compone principalmente de dos partes: Percona Server con XtraDB (complemento de almacenamiento de datos) y parches de replicación de conjuntos de escritura (complemento de sincronización, replicación multimaestro)
- Sitio web oficial: http://galeracluster.com
1.2 Características de PXC
- Sólida consistencia de datos, sin demora de sincronización (datos escritos en el servidor maestro, todos los servidores esclavos deben tenerlos inmediatamente)
- Sin operación de conmutación maestro-esclavo, sin necesidad de usar IP virtual (sin necesidad de una estructura maestro-esclavo múltiple, sin necesidad de direcciones vip)
- Admite el motor de almacenamiento InnoDB
- Replicación de subprocesos múltiples (trabajo síncrono de subprocesos múltiples), fácil de implementar y usar.
- Admite nodos para unirse automáticamente, sin necesidad de copiar datos manualmente (el servidor sincronizará automáticamente los datos durante el tiempo de inactividad, no se requiere configuración manual)
1.3 Puertos correspondientes
puerto | ilustrar |
---|---|
3306 | Puerto de servicio de base de datos |
4444 | puerto SST |
4567 | puerto de comunicación del clúster |
4568 | Puerto IST |
acero inoxidable | Sincronización completa de transferencia de instantáneas de estado |
ES | Sincronización incremental de transferencia de estado incremental |
-
El puerto de comunicación del clúster se refiere al puerto de comunicación entre los servidores del clúster, el puerto de servicio de la base de datos 3306 y el puerto de comunicación del clúster 4567 están abiertos todo el tiempo;
-
El puerto SST 4444 y el puerto IST 4568 solo están abiertos cuando los datos están sincronizados.
1.4 Funciones de anfitrión
- 3 servidores
nombre de la CPU | dirección IP en | Role |
---|---|---|
pxcnode10 | 192.168.2.10 | servidor de base de datos |
pxcnode20 | 192.168.2.20 | servidor de base de datos |
pxcnode30 | 192.168.2.30 | servidor de base de datos |
##在每台主机上都修改自己的主机名
[root@localhost ~]# hostname pxcnode10 ;su --在192.168.2.10上执行
[root@localhost ~]# hostname pxcnode20 ;su --在192.168.2.20上执行
[root@localhost ~]# hostname pxcnode30 ;su --在192.168.2.30上执行
##在每台主机上执行修改hosts文件
vim /etc/hosts
#添加下面内容:
192.168.2.10 pxcnode10
192.168.2.20 pxcnode20
192.168.2.30 pxcnode30
2. Implementar PXC
2.1 Instalar el paquete
- Introducción al software
software | efecto |
---|---|
percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm | Programa de espera activa en línea |
qpress.1.1-14.11.x86_64.rpm | compresor recursivo |
Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar | programa de servicio de clúster |
- Descarga de software
Enlace de descarga de percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm:
https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/qpress.1.1-14.11.x86_64.rpm dirección de descarga:
http://rpm.pbone.net/results_limit_2_srodzaj_2_dl_40_search_qpress.htmlPercona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar enlace de descarga:
https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/ÚLTIMO/
- Las siguientes operaciones deben realizarse en los tres servidores
##下载软件包:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.13/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/AndreasStieger%3A/branches%3A/Archiving/RedHat_RHEL-6/x86_64/qpress-1.1-14.11.x86_64.rpm
wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-57/Percona-XtraDB-Cluster-5.7.25-31.35/binary/redhat/7/x86_64/Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
##安装软件包
[root@pxcnode10 ~]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
[root@pxcnode10 ~]# yum -y install *.rpm
2.2 Servicio de configuración
- Archivos de configuración relacionados
/etc/percona-xtradb-cluster.conf.d/ ---所有的配置文件
- Descripción del archivo de configuración
- mysqld.cnf ------servicio de base de datos que ejecuta el archivo de configuración de parámetros
- mysqld_safe.cnf ------ archivo de configuración del proceso mysqld
- wsrep.cnf-------Archivo de configuración de clúster PXC
- Modificar el archivo de configuración (mysqld.cnf)
[mysqld]
server-id=1 #server-id, no se permiten duplicados
datadir=/var/lib/mysql #La ruta del directorio de la base de datos
socket=/var/lib/mysql/mysql.sock #ruta del archivo socker
log-error=/var/log/mysqld.log #La ruta del archivo de registro
pid-file=/var/run/mysqld/mysqld.pid #ruta del archivo pid
log-bin #Binlog el registro está habilitado de forma predeterminada
log_slave_updates #Habilitar replicación en cadena
expire_logs_days=7 #El número de días para mantener el archivo de registro, el archivo de registro predeterminado se mantiene durante 7 días
##pxcnode10操作
[root@pxcnode10 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[root@pxcnode10 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下:
server-id=10
##pxcnode20操作
[root@pxcnode20 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[root@pxcnode20 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下:
server-id=20
##pxcnode30操作
[root@pxcnode30 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[root@pxcnode30 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下:
server-id=30
- Modifique el archivo de configuración del clúster (wsrep.cnf)
wsrep_cluster_address=gcomm:// #Lista de miembros del clúster, 3 deben ser iguales
wsrep_node_address=192.168.70.63 #dirección IP local
wsrep_cluster_name=pxc-cluster #Nombre del clúster, se puede personalizar, 3 deben ser iguales
wsrep_node_name=pxc-cluster-node #Nombre de host local
wsrep_sst_auth="sstuser:s3cretPass" #SST autorización de usuario de sincronización de datos, 3 deben ser iguales
##在pxcnode10操作如下:
[root@pxcnode10 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下:
wsrep_cluster_address=gcomm://192.168.2.20,192.168.2.30,192.168.2.10 ---集群成员列表
wsrep_node_address=192.168.2.10 ---本机IP地址
wsrep_node_name=pxcnode10 ---本机主机名
wsrep_sst_auth="sstuser:1234" SST数据同步用户密码
##在pxcnode20操作如下:
[root@pxcnode20 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下:
wsrep_cluster_address=gcomm://192.168.2.10,192.168.2.30,192.168.2.20 ---集群成员列表
wsrep_node_address=192.168.2.20 ---本机IP地址
wsrep_node_name=pxcnode20 ---本机主机名
wsrep_sst_auth="sstuser:1234" SST数据同步用户密码
##在pxcnode30操作如下:
[root@pxcnode30 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下:
wsrep_cluster_address=gcomm://192.168.2.10,192.168.2.20,192.168.2.30 ---集群成员列表
wsrep_node_address=192.168.2.30 ---本机IP地址
wsrep_node_name=pxcnode30 ---本机主机名
wsrep_sst_auth="sstuser:1234" SST数据同步用户密码
2.3 Iniciar el servicio
- Ejecutar en cualquier
- Inicie el servicio de clúster
- Agregar usuario autorizado
[root@pxcnode10 ~]# systemctl start [email protected] ---启动集群服务
##查看数据库初始密码
[root@pxcnode10 ~]# grep pass /var/log/mysqld.log
2023-02-27T10:23:13.040978Z 1 [Note] A temporary password is generated for root@localhost: qgCeYyfl3a*j
##使用初始密码登录mysql
[root@pxcnode10 ~]# mysql -uroot -p'qgCeYyfl3a*j'
##修改root密码
mysql> alter user 'root'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
##添加授权用户
mysql> grant reload ,lock tables,replication client,process on *.* to sstuser@'localhost' identified by '1234';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
--添加授权用户,数据会自动同步到主机20和30上。
reload装载数据的权限;lock tables锁表的权限;
replication client查看服务状态的权限;process管理服务的权限(查看进程信息);
授权用户和密码必须是集群的配置文件中指定的(wsrep_sst_auth="sstuser:1234")。
2.4 Inicie los otros dos servicios de base de datos
##pxcnode20和pxcnode30都需要执行
[root@pxcnode20 ~]# systemctl start mysql
---启动过程比较慢,因为第一次启动都会向pxcnode10做全量同步。
3. Configuración de prueba
- Ver información del clúster
- Se puede operar en cualquiera
mysql> mostrar estado como “%wsrep%”;
wsrep_incoming_addresses 192.168.233.72:3306,192.168.233.73:3306,192.168.233.71:3306 //Lista de miembros
wsrep_cluster_size 3 //Número de servidores de clúster
wsrep_cluster_status Primary //Estado de clúster wsrep_connected ONp // Estado
de conexión
ws
3.1 Función de sincronización de clúster de prueba
- Agregue usuarios autorizados para acceder a los datos en cualquier servidor
- El uso de usuarios autorizados en el lado del cliente para conectarse a cualquier servidor de base de datos puede almacenar datos y ver los mismos datos
- Al crear una tabla, debe haber un campo de clave principal
##在任意一台服务器上创建授权用户
mysql> grant all on *.* to 'test'@'%' identified by '1234';
##测试test这个用户是否可以登录其他的服务器mysql。
[root@pxcnode10 ~]# mysql -h 192.168.2.30 -utest -p1234
[root@pxcnode10 ~]# mysql -h 192.168.2.20 -utest -p1234
[root@pxcnode10 ~]# mysql -h 192.168.2.10 -utest -p1234
--测试完成我这边都可以登录。
##创建数据并创建表
mysql> create database sxy default charset=utf8;
mysql> create table t1(id int primary key auto_increment,name char(10)not null,sex enum('boy','girl'),age int unsigned);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 values(1,'bob','boy',29);
##在任意一台服务器查看t1表信息。
[root@pxcnode20 ~]# mysql -h192.168.2.10 -utest -p1234 -e " select * from sxy.t1;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+------+------+------+
| id | name | sex | age |
+----+------+------+------+
| 1 | bob | boy | 29 |
+----+------+------+------+
-----其他的我这边就不展示了。
3.2 Probar la función de alta disponibilidad y la recuperación automática del servidor de base de datos.
- Recuperación automática de fallas de prueba
- Cualquier tiempo de inactividad del servidor de la base de datos no afectará el acceso de los usuarios a los datos.
- Sincronice automáticamente los datos durante el tiempo de inactividad después de que el servidor esté funcionando
3.2.1 Simular el tiempo de inactividad de pxcnode20
##模拟pxcnode20服务停止
[root@pxcnode20 ~]# systemctl stop mysql
[root@pxcnode20 ~]# netstat -nltp |grep 3306
3.2.2 El cliente se conecta a pxcnode10 para ver el estado del clúster
[root@pxcnode10 ~]# mysql -h192.168.2.10 -utest -p1234
mysql> show status like "%wsrep%";
- Como se muestra en la figura: la cantidad de servidores en el clúster ha cambiado a 2 y solo se están ejecutando 192.168.2.10 y 192.168.2.30.
3.2.3 Insertar datos en la tabla sxy.t1 de pxcnode10
mysql> use sxy;
mysql> insert into t1(name,sex,age) values('andy','boy',24),('lucy','girl',29);
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t1;
- Como se muestra en la figura, los datos en un círculo rojo son los datos recién insertados cuando el servidor pxcnode20 está inactivo. Dado que el servidor pxcnode20 está inactivo, solo quedan dos servidores. El tamaño del paso está relacionado con la cantidad de servidores, por lo que el los datos recién insertados aumentarán automáticamente. El tamaño del paso es 2.
3.2.4 Ver el contenido de la tabla sxy.t1 en pxcnode30
[root@pxcnode10 ~]# mysql -h192.168.2.30 -utest -p1234 -e " select * from sxy.t1;"
+----+------+------+------+
| id | name | sex | age |
+----+------+------+------+
| 1 | bob | boy | 29 |
| 3 | andy | boy | 24 |
| 5 | lucy | girl | 29 |
+----+------+------+------+
##可以看的出来数据同步正常。
3.2.5 Restaurar pxcnode20 para ver el estado del clúster
[root@pxcnode20 ~]# systemctl start mysql
[root@pxcnode20 ~]# netstat -ntlp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 11409/mysqld
[root@pxcnode20 ~]# mysql -uroot -p1234 -e 'show status like "%wsrep%";'
- Como se muestra en la figura: pxcnode20 se ha unido al clúster y la cantidad de servicios del clúster se convierte en 3.
3.2.6 El cliente accede a pxcnode20 para ver el contenido de la tabla sxy.t1
[root@pxcnode20 ~]# mysql -uroot -p1234 -e "select * from sxy.t1";
mysql: [Warning] Using a password on the command line interface can be insecure.
+----+------+------+------+
| id | name | sex | age |
+----+------+------+------+
| 1 | bob | boy | 29 |
| 3 | andy | boy | 24 |
| 5 | lucy | girl | 29 |
+----+------+------+------+
---可以看的出来新插入的数据已经同步OK。