Tres lugares y cinco centros, TiDB POC mejor exploración de postura

Fuente original: https://tidb.net/blog/b4732d88

Antecedentes de las pruebas POC

En una determinada provincia propensa a terremotos, para evitar desastres a nivel de salas de computadoras o desastres a nivel de ciudad causados ​​por terremotos, que harían que todo el sistema no estuviera disponible, se planeó construir un sistema de base de datos distribuido de alta disponibilidad con cinco centros y cinco copias en tres lugares para garantizar requisitos de alta disponibilidad. En este sistema, es necesario acceder al tráfico de aplicaciones de diferentes regiones, y el desarrollo inicial de la aplicación adoptó una estrategia de subbase de datos horizontal de cientos de bases de datos y cientos de tablas. Para minimizar el retraso de la aplicación ~ base de datos y el retraso en la recuperación de datos desde la capa informática de la base de datos hasta la capa de almacenamiento en las salas de ordenadores y ciudades, es necesario garantizar que el tráfico empresarial y el líder de fragmentación de datos estén en la misma sala de ordenadores. .

Artículos de prueba POC

#Se ha desensibilizado la información confidencial y la información del caso de prueba se puede utilizar como referencia y aprendizaje.

imagen.png

Información del entorno de prueba

Configuración del entorno del software de la máquina.

Hay un total de 12 máquinas físicas que alojan Alibaba Private Cloud, de las cuales 10 se utilizan para clústeres de implementación y 2 se utilizan para implementar programas de sincronización o probar la expansión de la capacidad HTAP.

La configuración de una sola unidad es la siguiente:

Elementos de configuración Información de configuración
Versión del kernel del sistema Kirin v10, arquitectura de brazo
UPC Haiguang 64c (hiperroscado)
Memoria 512GB
disco 4*ssd nvme de 3TB
versión tidb v7.1.0-->v7.1.1

Información de máquina y espacio.

Hay tres ciudades: cd, ya, lz.

Cinco salas de informática: cd tiene dos salas de informática AZ1 y AZ2; ya tiene dos salas de informática AZ3 y AZ4; lz tiene una sala de informática AZ5.

Latencia: el retraso entre dos salas de ordenadores en la misma ciudad es inferior a 1 ms; el retraso entre cd y ya es de 3 ms; el retraso entre cd y lz es de 7 ms; el retraso entre ya y lz es de 9 ms

Topología de colocación de máquinas: dos máquinas por sala de ordenadores

Control de unidad de flujo

necesidad

La arquitectura del centro de datos de tres sitios tiene los siguientes requisitos:

  1. db_00-24 El líder de estas 25 bibliotecas está en AZ1, db_25-49 El líder de estas 25 bibliotecas está en AZ2, db_50-74 El líder de estas 25 bibliotecas está en AZ3, db_75-99 El líder de estas 25 bibliotecas está en AZ4
  2. AZ5 no puede tener un líder. Incluso si cualquiera de las primeras cuatro AZ falla, AZ5 no puede tener un líder.
  3. 5 réplicas (réplicas máximas)

imagen-20230927162241463.png

Solución (existe error)

1. Etiquete la máquina

以az1的两台机器为例:
tikv_server:
  -host1
     config:
        server.lables: {az: "az1" ,host : "host1" }
  -host2
     config:
        server.lables: {az: "az1" ,host : "host2" }

2. Establezca reglas de ubicación según el nivel AZ para determinar la función de réplica.

az1数据副本(全能型)放置规则,(az2\3\4规则类似):
​
 "group_id": "pd",
        "id": "cd1",
        "start_key": "",
        "end_key": "",
        "role": "voter",
        "count": 1,
        "label_constraints": [
            {"key": "az", "op": "in", "values": ["az1"]}
        ],
        "location_labels": ["az", "host"]
​
​
az5数据副本(只同步,不提供服务)放置规则:
​
 "group_id": "pd",
        "id": "lz",
        "start_key": "",
        "end_key": "",
        "role": "follower",
        "count": 1,
        "label_constraints": [
            {"key": "az", "op": "in", "values": ["az5"]}
        ],
        "location_labels": ["az", "host"]

Para obtener más información, consulte la documentación de uso de las reglas de ubicación | Centro de documentación de PingCAP

3. Utilice la regla de ubicación en SQL para configurar la regla de ubicación del líder de la réplica principal

创建放置在az1数据的放置规则:
CREATE PLACEMENT POLICY p1 LEADER_CONSTRAINTS="+az=az1" FOLLOWER_CONSTRAINTS="{+az=az2: 1,+az=az3: 1,+az=az4: 1,+az=az5: 1}"
​
​
在百库百表下每个az约有进250+库,2500+表
​
生成更改表放置规则的sql语句,约2500+DDL
select concatenate('alter table' ,table_achema ,'.',table_name,'placement policy = p1' from information_schema.tables where right(table_schema ,2) between '00' and '24' order by table_schema
备注:在库已有放置规则的情况下,库下新建无放置规则的表
​

Para obtener más información, consulte Reglas de ubicación en SQL | Centro de documentación de PingCAP

error1

**descripción del error:**Error de programación de pd de TiDB v7.1.0

**fenómeno de error:** La copia de datos no se puede programar de acuerdo con la regla de ubicación establecida en la regla de ubicación en SQL

imagen-20230928144438235.png

solución de error:

升级pd从v7.1.0到v7.1.1或整体升级集群到v7.1.1
​
可以从v7.1.1的镜像源中获取7.1.1版本pd,在一台和外网相通的机器上拉取需要的组件:
tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64
参考:https://docs.pingcap.com/zh/tidb/stable/production-deployment-using-tiup#%E5%87%86%E5%A4%87-tiup-%E7%A6%BB%E7%BA%BF%E7%BB%84%E4%BB%B6%E5%8C%85
​
打热补丁
tiup cluster patch <cluster-name> <package-path> [flags]
参考:https://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-patch#tiup-cluster-patch
​
或整体升级集群版本,参考:https://docs.pingcap.com/zh/tidb/stable/upgrade-tidb-using-tiup#%E4%BD%BF%E7%94%A8-tiup-%E5%8D%87%E7%BA%A7-tidb
​

error2

**descripción del error: **las reglas de ubicación no pueden surtir efecto por completo

**fenómeno de error:** Después de establecer la regla de ubicación de acuerdo con az, todavía habrá líderes regionales para las tablas de la biblioteca del sistema, como la biblioteca mysql y la biblioteca information_schema en az5, y el número de copias de algunas tablas es mayor que 5 copias. .

**solución de error:** Abandonar la práctica de definir roles de réplica según AZ y adoptar la solución de líder de rechazo Referencia: Topología de implementación entre centros de datos | Centro de documentación de PingCAP

imagen-20230928145921664.png

Ingresos después de ajustar el plan

imagen-20230928150154012.png

El impacto y la exploración de la obtención de TSO en todas las ciudades

Descripción del problema y análisis preliminar.

En la prueba de estrés, az1, az2, az3 y az4 representaron cada uno el 25% del tráfico. El tráfico fue consistente con el líder de la réplica maestra de datos, pero los retrasos en la respuesta fueron inconsistentes.

imagen-20230928153010136.png

La medición real confirma el impacto de la adquisición de TSO entre ciudades

imagen-20230928153637572.png

Mejoramiento

Divida un grupo en 4 grupos.

imagen-20230928154450929.png

Recuperación ante desastres y corte de tráfico

necesidad

1. Cuando ocurre un desastre a nivel de la sala de computadoras, es necesario cambiar el tráfico. Para garantizar el mejor rendimiento, tanto el líder de PD como el líder de la región deben igualar el tráfico tanto como sea posible.

2. Después de que una sala de computadoras en la misma ciudad cuelgue, el tráfico se cambiará primero a otra sala de computadoras en la misma ciudad.

3. Cuando dos salas de computadoras en una ciudad están colgadas, por ejemplo, az1 y az2 del CD están colgadas, todo el tráfico cambiará a az3 y az4, pero no a az5.

interruptor líder pd

给pd menber 打上权重,保证灾难时优先调度pd leader 到同城节点
​
交互模式
tiup ctl:v<CLUSTER_VERSION> pd -i -u http://127.0.0.1:2379
​
以az1流量为例,设置pd leader 调度策略
tiup ctl:v7.1.0 pd member leader_priority  pd-1 5
tiup ctl:v7.1.0 pd member leader_priority  pd-2 3
tiup ctl:v7.1.0 pd member leader_priority  pd-3 1
tiup ctl:v7.1.0 pd member leader_priority  pd-4 1
tiup ctl:v7.1.0 pd member leader_priority  pd-5 0
​
​
手动pd leader 切换(为避免切换后不稳定,需要先调整调度权重)
tiup ctl:v7.1.0 pd member leader transfer pd3
​
​

cambio de líder de región

Interruptor problemático:

第一步:
假设原放置az1的region leader需要切换到az2,执行sql获得语句,约2500+DDL
select concatenate('alter table' ,table_achema ,'.',table_name,'placement policy = p2' from information_schema.tables where right(table_schema ,2) between '00' and '24' order by table_schema
第二步:
执行获得的2500+个DDL
​
问题:切换时间长
数据库层操作:alter table xx placement policy az2; -- 之前是 az1
​
最终耗时:28 分钟
​
​

Cambiar después de la optimización:

换一个思路不再更改表绑定更换规则,而是直接更改绑定的规则的内容
ALTER PLACEMENT POLICY p1 LEADER_CONSTRAINTS="+az=az2" FOLLOWER_CONSTRAINTS="{+az=az1: 1,+az=az3: 1,+az=az4: 1,+az=az5: 1}"
​
切换时常约3分钟

escribe al final

1. POC (prueba de concepto) es una muy buena forma de probar las capacidades de la base de datos y puede ayudarnos a verificar y comprender varias funciones.

2. Esta vez solo extraje tres puntos encontrados durante todo el proceso de prueba para compartir, con la esperanza de ayudar a los usuarios de TiDB con necesidades similares.

Introducción del autor: BraveChen, del Digital China Titanium Team, es un equipo técnico profesional dedicado a proporcionar a las empresas soluciones TiDB generales de bases de datos distribuidas. Los miembros del equipo tienen una rica experiencia en la industria de bases de datos, todos tienen certificados de calificación avanzada de TiDB, están activos en la comunidad de código abierto de TiDB y son socios certificados oficialmente. Actualmente, ha brindado servicios profesionales de entrega de TiDB a más de 10 clientes, cubriendo industrias clave como finanzas, valores, logística, electricidad, gobierno y comercio minorista.

El autor del marco de código abierto NanUI pasó a vender acero y el proyecto fue suspendido. La primera lista gratuita en la App Store de Apple es el software pornográfico TypeScript. Acaba de hacerse popular, ¿por qué los grandes empiezan a abandonarlo? Lista de octubre de TIOBE: Java tiene la mayor caída, C# se acerca Java Rust 1.73.0 lanzado Un hombre fue alentado por su novia AI a asesinar a la Reina de Inglaterra y fue sentenciado a nueve años de prisión Qt 6.6 publicado oficialmente Reuters: RISC-V La tecnología se convierte en la clave de la guerra tecnológica entre China y Estados Unidos. Nuevo campo de batalla RISC-V: no controlado por ninguna empresa o país, Lenovo planea lanzar una PC con Android.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5674736/blog/10115088
Recomendado
Clasificación