Clúster de alta disponibilidad de PXC (MySQL)

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.html

  • Percona-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%”;
inserte la descripción de la imagen aquí

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%";

inserte la descripción de la imagen aquí

  • 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;

inserte la descripción de la imagen aquí

  • 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%";'

inserte la descripción de la imagen aquí

  • 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。

Supongo que te gusta

Origin blog.csdn.net/weixin_45625174/article/details/129244600
Recomendado
Clasificación