Ejemplos detallados de operaciones de expansión del clúster de base de datos GBase 8a

El clúster de base de datos de GBase 8a admite operaciones de expansión de clústeres existentes y puede expandir simultáneamente varios nodos de datos y nodos de administración. La expansión generalmente se debe a problemas de rendimiento o de ocupación del espacio. GBase utiliza la función de redistribución para redistribuir datos a todos los nodos de datos para reequilibrar el espacio de datos. Este artículo es un manual y pasos de operación detallados.

Original: http://www.gbase8.cn/1133

La expansión y la contracción son dos resultados completamente opuestos, pero los pasos generales de operación son básicamente similares, pero opuestos. Consulte los pasos de escala. Ejemplo de paso de operación de contracción de GBase 8a

objetivos

El objetivo de este artículo es expandir un clúster de 2 nodos a 3 nodos, es decir, agregar 1 nodo de gestión y cumplimiento de datos. El status quo es el siguiente:

Estado del clúster de 2 nodos

Clúster de 2 nodos

Para conocer algunas precauciones de la versión V95, consulte  Precauciones para una nueva instalación de GBase 8a cluster V95

Edite el archivo de configuración de la operación de expansión

No se introducirán los pasos de descompresión del subpaquete. Vayamos directamente al directorio gcinstall del paquete de instalación y escribamos demo.options. Complete la información del usuario de acuerdo con la situación real.

Tenga en cuenta que este artículo utiliza la versión V95, su formato es diferente al V8, consulte la introducción correspondiente del manual de instalación. Pero la parte importante es la misma. entre ellos

installPrefix es el directorio de instalación del clúster; sea coherente con el nodo original.
coordinatorHost es la IP del nodo que se va a expandir. Separe
CoordinatorHostNodeID con una coma cuando haya más de uno. Esto solo es útil para IPV6, ipv4 se puede escribir o no y se ignora internamente.
dataHost La IP del nodo de datos para esta expansión
existeCoordinateHost La IP del nodo de administración existente, múltiple
Nodo de datos delimitado por comas IP existe DataHost ya existe, una pluralidad de
dba dbaUser nombre de usuario del sistema operativo separados por comas , que es v95 en el
dba creado por el usuario dba dbaGroup nombre de usuario
del sistema operativo grupo de usuarios dba sistema operativo contraseña de usuario dbaPwd
La contraseña de usuario root del sistema operativo rootPwd no es necesaria en V95.
genDBPwd Este es el nombre de V95, que representa la contraseña del usuario raíz de la base de datos. Distinga entre usuarios de bases de datos y usuarios de sistemas operativos.

[gbase@localhost gcinstall]$ cat demo.options
installPrefix= /opt/gbase
coordinateHost = 10.0.2.203
coordinateHostNodeID = 203
dataHost = 10.0.2.203
existCoordinateHost =10.0.2.102,10.0.2.202
existDataHost =10.0.2.102,10.0.2.202
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase1234'
rootPwd = '111111'
#rootPwdFile = rootPwd.json
genDBPwd=''

A continuación se muestra cómo se ve una versión V8 de demo.options. Intente utilizar el usuario root para loginUser. dbRootPwd es la contraseña del usuario raíz de la base de datos.

[root@localhost gcinstall]# cat demo.options
installPrefix= /opt
coordinateHost = 10.0.2.106
coordinateHostNodeID = 106
dataHost = 10.0.2.106
#existCoordinateHost =
#existDataHost =
loginUser= root
loginUserPwd = '111111'
#loginUserPwdFile = loginUserPwd.json
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase1234'
rootPwd = '111111'
#rootPwdFile = rootPwd.json
dbRootPwd = ''
#mcastAddr = 226.94.1.39
mcastPort = 5493
[root@localhost gcinstall]#

Detener el servicio de base de datos

Si el servicio de expansión tiene nodos de gestión, es necesario detener los servicios de base de datos de todos los nodos. Si solo expande el nodo de datos, puede omitir este paso.

Si el servicio no se detiene y el nodo de administración se expande, el paso de instalación de expansión informará este error. Debe detener todos los nodos de gcluster antes de extender gcluster. Puede buscar "todavía en ejecución" en gcinstall.log para encontrarlos.

Para detener el servicio, opere en cada nodo usted mismo. Este artículo utiliza la operación remota ssh.

[gbase@localhost gcinstall]$ ssh 10.0.2.102 "gcluster_services all stop"
The authenticity of host '10.0.2.102 (10.0.2.102)' can't be established.
ECDSA key fingerprint is d1:17:f6:1e:3b:97:e4:db:37:d5:9b:cb:00:14:66:b6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.102' (ECDSA) to the list of known hosts.
gbase
[email protected]'s password:
Stopping GCMonit success!
Stopping gcrecover :                                       [  OK  ]
Stopping gcluster :                                        [  OK  ]
Stopping gcware :                                          [  OK  ]
Stopping gbase :                                           [  OK  ]
Stopping syncserver :                                      [  OK  ]
[gbase@localhost gcinstall]$ ssh 10.0.2.202 "gcluster_services all stop"
[email protected]'s password:
Stopping GCMonit success!
Stopping gcrecover :                                       [  OK  ]
Stopping gcluster :                                        [  OK  ]
Stopping gcware :                                          [  OK  ]
Stopping gbase :                                           [  OK  ]
Stopping syncserver :                                      [  OK  ]
[gbase@localhost gcinstall]$

Iniciar el servicio de instalación

Llame a gcinstall.py para iniciar la instalación con las opciones de demostración escritas anteriormente.

Tenga en cuenta que si el nodo de administración se expande, debe copiar todos los [metadatos] del nodo de administración existente en el nuevo nodo de administración. El tiempo que se consume depende del número de tablas, el disco y el rendimiento de la red. Puede llevar de varios minutos a varias horas.

[gbase@localhost gcinstall]$ ./gcinstall.py --silent=demo.options
*********************************************************************************
Thank you for choosing GBase product!

此处省略许可信息输出...

*********************************************************************************
Do you accept the above licence agreement ([Y,y]/[N,n])? y
*********************************************************************************
                     Welcome to install GBase products
*********************************************************************************
Environmental Checking on gcluster nodes.
CoordinateHost:
10.0.2.203
DataHost:
10.0.2.203
Are you sure to install GCluster on these nodes ([Y,y]/[N,n])? y
10.0.2.203              start install on host 10.0.2.203
10.0.2.202              start install on host 10.0.2.202
10.0.2.102              start install on host 10.0.2.102

此处省略n多中间日志输出

10.0.2.203              install cluster on host 10.0.2.203 successfully.
10.0.2.202              install cluster on host 10.0.2.202 successfully.
10.0.2.102              install cluster on host 10.0.2.102 successfully.
update and sync configuration file...
Starting all gcluster nodes...
sync coordinator system tables...
adding new datanodes to gcware...
[gbase@localhost gcinstall]$

Ver estado actual

El nuevo nodo de gestión ha proporcionado servicios normalmente y el nodo de datos aún no ha participado.

[gbase@localhost gcinstall]$ gcadmin
CLUSTER STATE:         ACTIVE
VIRTUAL CLUSTER MODE:  NORMAL

=============================================================
|           GBASE COORDINATOR CLUSTER INFORMATION           |
=============================================================
|   NodeName   | IpAddress  | gcware | gcluster | DataState |
-------------------------------------------------------------
| coordinator1 | 10.0.2.102 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
| coordinator2 | 10.0.2.202 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
| coordinator3 | 10.0.2.203 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
=========================================================================================================
|                                    GBASE DATA CLUSTER INFORMATION                                     |
=========================================================================================================
| NodeName |                IpAddress                 | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
|  node1   |                10.0.2.102                |       5        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node2   |                10.0.2.202                |       5        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node3   |                10.0.2.203                |                | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------

Edite el archivo de configuración de la nueva estrategia de distribución

Preste atención al pedido de IP, intente ser el mismo que el pedido anterior y coloque la IP del nodo de datos recién agregada al final.

[gbase@localhost gcinstall]$ cat gcChangeInfo.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
 <rack>
  <node ip="10.0.2.102"/>
  <node ip="10.0.2.202"/>
  <node ip="10.0.2.203"/>
 </rack>
</servers>
[gbase@localhost gcinstall]$

Agregar nueva estrategia de distribución

En este paso, se sincronizarán los metadatos de algunos nodos de datos, por lo que llevará un poco de tiempo.

Verifique el estado del clúster y verá que se agregó una nueva política con un Id. De distribución de 6, y el Id. Anterior es 5. Esta identificación se utilizará más adelante.

[gbase@localhost gcinstall]$ gcadmin distribution gcChangeInfo.xml p 1 d 1
gcadmin generate distribution ...

NOTE: node [10.0.2.203] is coordinator node, it shall be data node too
copy system table to 10.0.2.203
gcadmin generate distribution successful

[gbase@localhost gcinstall]$ gcadmin
CLUSTER STATE:         ACTIVE
VIRTUAL CLUSTER MODE:  NORMAL

=============================================================
|           GBASE COORDINATOR CLUSTER INFORMATION           |
=============================================================
|   NodeName   | IpAddress  | gcware | gcluster | DataState |
-------------------------------------------------------------
| coordinator1 | 10.0.2.102 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
| coordinator2 | 10.0.2.202 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
| coordinator3 | 10.0.2.203 |  OPEN  |   OPEN   |     0     |
-------------------------------------------------------------
=========================================================================================================
|                                    GBASE DATA CLUSTER INFORMATION                                     |
=========================================================================================================
| NodeName |                IpAddress                 | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
|  node1   |                10.0.2.102                |      5,6       | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node2   |                10.0.2.202                |      5,6       | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node3   |                10.0.2.203                |       6        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------

[gbase@localhost gcinstall]$ gcadmin showdistribution

                                 Distribution ID: 6 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                   10.0.2.102                   |         1          |                   10.0.2.202                   |
------------------------------------------------------------------------------------------------------------------------
|                   10.0.2.202                   |         2          |                   10.0.2.203                   |
------------------------------------------------------------------------------------------------------------------------
|                   10.0.2.203                   |         3          |                   10.0.2.102                   |
========================================================================================================================

                                 Distribution ID: 5 | State: old | Total segment num: 2

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                   10.0.2.102                   |         1          |                   10.0.2.202                   |
------------------------------------------------------------------------------------------------------------------------
|                   10.0.2.202                   |         2          |                   10.0.2.102                   |
========================================================================================================================
[gbase@localhost gcinstall]$

Inicializar nodedatamap

[gbase@localhost gcinstall]$ gccli

GBase client 9.5.2.17.115980. Copyright (c) 2004-2020, GBase.  All Rights Reserved.

gbase> initnodedatamap;
Query OK, 0 rows affected, 5 warnings (Elapsed: 00:00:01.36)

gbase>

Redistribución

Este paso redistribuirá los datos a todos los nodos. El tiempo real puede ser minutos, horas o días. La cantidad de datos redistribuidos según sea necesario está relacionada con el rendimiento del hardware.

Nota: La base de datos proporciona un parámetro gcluster_rebalancing_random_table_quick_mode. Para tablas distribuidas aleatoriamente, ya no participará en el reequilibrio de datos. Si expande para espacio en disco, desactive este parámetro.

gbase> show variables like '%quick%';
+----------------------------------------------+-------+
| Variable_name                                | Value |
+----------------------------------------------+-------+
| gcluster_rebalancing_random_table_quick_mode | 1     |
+----------------------------------------------+-------+
1 row in set (Elapsed: 00:00:00.00)

gbase> set global gcluster_rebalancing_random_table_quick_mode=0;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> show variables like '%quick%';
+----------------------------------------------+-------+
| Variable_name                                | Value |
+----------------------------------------------+-------+
| gcluster_rebalancing_random_table_quick_mode | 0     |
+----------------------------------------------+-------+
1 row in set (Elapsed: 00:00:00.01)

Durante la redistribución, puede verificar el progreso a través de la tabla gclusterdb.rebalancing_status hasta que todos estén COMPLETADOS.

gbase> rebalance instance;
Query OK, 21 rows affected (Elapsed: 00:00:00.87)

gbase> select status,count(*) from gclusterdb.rebalancing_status group by status;
+-----------+----------+
| status    | count(*) |
+-----------+----------+
| STARTING  |       15 |
| RUNNING   |        3 |
| COMPLETED |        3 |
+-----------+----------+
3 rows in set (Elapsed: 00:00:00.61)


gbase> select status,count(*) from gclusterdb.rebalancing_status group by status;
+-----------+----------+
| status    | count(*) |
+-----------+----------+
| COMPLETED |       21 |
+-----------+----------+
1 row in set (Elapsed: 00:00:00.19)

Compruebe si hay residuos

Consulte la tabla gbase.table_distribution para ver si quedan tablas antiguas con el ID 5. Si es así, ejecute manualmente un nombre de biblioteca de tabla de reequilibrio. Nombre de tabla y espere a que se complete la redistribución.

gbase> select count(*) from gbase.table_distribution where data_distribution_id=5;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (Elapsed: 00:00:00.00)

Eliminar el antiguo mapa de datos de nodo


gbase> refreshnodedatamap drop 5;
Query OK, 0 rows affected, 6 warnings (Elapsed: 00:00:01.80)

gbase>

Eliminar la antigua estrategia de distribución

[gbase@localhost gcinstall]$ gcadmin rmdistribution 5
cluster distribution ID [5]
it will be removed now
please ensure this is ok, input [Y,y] or [N,n]: y
gcadmin remove distribution [5] success
[gbase@localhost gcinstall]$ gcadmin showdistribution

                                 Distribution ID: 6 | State: new | Total segment num: 3

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                   10.0.2.102                   |         1          |                   10.0.2.202                   |
------------------------------------------------------------------------------------------------------------------------
|                   10.0.2.202                   |         2          |                   10.0.2.203                   |
------------------------------------------------------------------------------------------------------------------------
|                   10.0.2.203                   |         3          |                   10.0.2.102                   |
========================================================================================================================
[gbase@localhost gcinstall]$

Resultados finales

Se ha expandido con éxito de un clúster de 2 nodos a un clúster de 3 nodos.

para resumir

El núcleo de todo el paso es

1. Instale un nuevo servicio de nodo

2. Agregue nuevas estrategias de distribución para utilizar nuevos nodos de datos

3. Redistribuir datos

4. Eliminar información antigua

Manipulación accidental

Durante la expansión, si hay accidentes en ciertos pasos, como error, tiempo de inactividad, corte de energía, desconexión de la red, etc., consulte

Operación de expansión de GBase 8a Solución inesperada

Supongo que te gusta

Origin blog.csdn.net/java2000_net/article/details/108657973
Recomendado
Clasificación