Red de conocimiento informático - Problemas con los teléfonos móviles - Conjunto de operaciones básicas de TiDB

Conjunto de operaciones básicas de TiDB

1. Configuración recomendada para el entorno de prueba

2. Configuración recomendada para el entorno de producción

3. Si la configuración de CPU y disco del servidor tikv es alta, puede considerar multi- Implementación de instancias, según cada La instancia de tikv asigna recursos de hardware en proporción a 16-20 núcleos + 64G de memoria + 800G de disco.

Además, también debe prestar atención a la configuración de inventario.ini y ansible/conf/tikv.yml.

4. El servidor tidb depende del tipo de negocio. Si la lógica empresarial está sesgada hacia SQL de tipo AP, debe considerar configurar una gran memoria para evitar OOM.

Si se trata de un negocio de tipo TP puro y la configuración de CPU del servidor tidb es alta, también puede considerar la implementación de instancias múltiples a cada servidor tidb se le asignan entre 20 y 32 núcleos para evitar cambios innecesarios de contexto de CPU. A cada servidor tidb se le asignan entre 20 y 32 núcleos, lo que puede evitar cambios innecesarios de contexto de CPU y reducir el consumo de CPU del sistema.

5. El disco del servidor pd se puede configurar con un disco SSD de 200 ~ 500G, que se utiliza principalmente para guardar información de datos de origen. Cuando la escala del clúster es grande y hay mucha información de datos de origen, los discos SSD pueden evitar que el acceso a la información de datos de origen se convierta en el cuello de botella del clúster.

1. Requisitos de la versión del sistema operativo

Se recomienda Centos 7.3 y superior, se admite redhat 7.3 y superior y no se recomiendan otras versiones del sistema.

2. Para ansible, jinja y otras versiones de paquetes de dependencia de software, solo necesita verificar si la versión de software de la máquina de control central (la máquina que ejecuta ansible) cumple con las condiciones.

La máquina de control central:

Máquina de monitoreo (grafana):

3. El disco IO del entorno de prueba no cumple con los requisitos

ansible -playbook bootstrap.yml --extra-vars "dev_mode=True"

Agregue dev_mode=True para evitar los puntos de referencia relacionados con el disco del sistema durante la implementación

4. Apague el firewall y active la sincronización del reloj.

p>

systemctl status firewalld

systemctl status chronyd/ntpd

5. Todos los servidores del clúster deben cerrarse. Todos los servidores del clúster deben configurarse con diferentes nombres de host

De lo contrario, puede editar set_hostname=True en inventario.ini para implementarlo automáticamente.

Establezca hostname=True en inventario.ini para cambiar automáticamente el nombre del host

6. Ajuste los parámetros

Parámetros, tidb.yml, tikv.yml en el directorio ansible/conf/, posiblemente Parámetros comunes que deben ajustarse

tidb.yml:

grpc-connection-count: si la configuración de la CPU del servidor es alta y la cantidad de instancias de tikv es grande, este parámetro puede se puede ajustar a 20 ~ 32

umbral lento: umbral de registro de consultas lento, el valor predeterminado es 300 ms

nivel: nivel de registro, el valor predeterminado es información, se puede ajustar para depurar o generar errores según la situación

nivel: nivel de registro, el valor predeterminado es información, que se puede ajustar para depuración o error según la situación

tidb.debug o error

tikv.yml:

sync-log: configuración de sincronización de Raft-log, el valor predeterminado es verdadero, el consumo de E/S del disco es alto, se recomienda configurarlo en falso para entornos de prueba/producción no financieros

region-split-check-diff: detecta el umbral de división de región, se recomienda aumentar el disco no SSD a 32 MB

rocksdb defaultcf block-cache-size(GB)?= MEM * 80% / Número de instancias de TiKV * 30% (configurado para implementación de múltiples instancias, la implementación de una sola instancia no es necesaria)

rocksdb writecf block-cache-size(GB)? / Número de instancias de TiKV * 45% (configurado para implementación de instancias múltiples, no es necesario modificar la implementación de instancia única)

rocksdb lockcf block-cache-size(GB)? / Número de instancias de TiKV * 2,5 % (mínimo 128 MB) (configurado para implementación de múltiples instancias, no necesario para implementación de instancia única)

raftdb defaultcf block-cache-size(GB)? 80 % / Número de instancias de TiKV * 2,5 % (mínimo 128 MB) (configurado para implementación de instancias múltiples, no necesario para implementación de instancia única)

¿Qué debo cambiar para un escenario de instancias múltiples? ?

Grupo de lectura:

Coprocesador:

Alta simultaneidad

Simultaneidad normal

Baja simultaneidad

Tres parámetros, número recomendado de instancias * Valor del parámetro = Núcleo de CPU * 0,8.

Raftstore:

Capacidad

?Capacidad total del disco/instancia TiKV número, por ejemplo "100 GB"

Después de la modificación, puede usar el siguiente comando para verificar

cat tidb-ansible/conf/tikv.yml |grep -Ev "^$| #"

¿Ejecutar sin errores?

ansible-playbook Rolling_update.yml --tags=tidb/tikv

Actualización continua, las etiquetas son opcionales

7. El sitio web oficial tiene un plan de implementación en línea + fuera de línea relativamente completo, una guía de actualización en línea y documentos de expansión y reducción en línea. Para obtener más detalles, consulte:

/op-guide /ansible-deployment/

/op-guide/offline-ansible-deployment/

/op-guide/ansible-deployment-scale/

1. Migrar de MySQL a MySQL

TiDB es compatible con MySQL

sintaxis, por lo que para pequeñas cantidades de datos, se recomienda utilizar mysqldump y mydumper para exportar directamente todos los datos y luego importarlos a TiDB a través de source y myloader.

./bin/mydumper -h?127.0.0.1 -P?3306?-u raíz -t?16?-F?64?-B prueba -T t1,t2 --skip-tz- utc -o ./var/test

./bin/loader -h?127.0.0.1 -u root -P?4000?-t?32?-d ./var/test

Para obtener más información, consulte: /op-guide/migration/#use-mydumper-loader-import-full-volume-data

Si tiene grandes cantidades de datos, más de unos cientos gigabytes (Gbps), puede comunicarse con el fabricante original para solicitar una prueba de la herramienta Lightning, que puede importar datos a una velocidad promedio de 20 Gbps por hora. La velocidad promedio del cargador para importar datos es de 20 G/hora, mientras que la velocidad del rayo es de aproximadamente 100 ~ 150 G/hora

2. Migrar desde Oracle

Actualmente, existen varios métodos que puede consulte

Sincronización completa + incremental con OGG

Utilice la función de transferencia de datos de la versión Navicat Premium, que admite la migración de Oracle/SqlServer a OGG.

Utilice la función de transferencia de datos de la versión Navicat Premium para admitir la migración completa de datos de Oracle/SqlServer a TiDB.

Analice registros OGG a través de Kafka y otras herramientas de cola de mensajes, y desarrolle y escriba en Herramientas TiDB/MySQL

Actualmente, también estamos cooperando activamente con plataformas profesionales de isomorfismo de datos y nos esforzamos por hacer que las fuentes de datos TiDB sean compatibles con más herramientas de migración de datos lo antes posible.

1. Inicie el clúster

ansible-playbook start.yml --tags=tidb/tikv/pd

Asegúrese de que inventario.ini esté configurado correctamente y tiene un indicador opcional, ubicado en el directorio ansible correcto.

ansible-playbook stop.yml --tags=tidb/tikv/pd

En el directorio ansible correcto, asegúrese de que inventario.ini esté configurado correctamente y marcado como opcional

p>

3. Detenga un único servidor tidb/servidor tikv

ansible-playbook stop.yml --tags=tidb/tikv/pd -l IP

-l Seguido de la IP o alias configurado en inventario.ini

4. Acceder a tidb

TiDB es compatible con el protocolo MySQL.

Todos los métodos de conexión a MySQL son aplicables a TiDB

mysql -uroot -h127.0.0.1 -P4000 -p

Las herramientas GUI de uso común, navicat, etc. pueden acceder directamente a tidb

p>

También es compatible con jdbc, odbc, etc. Cabe señalar que la versión 8.0 del cliente mysql y el cliente mariadb pueden tener problemas de compatibilidad, por lo que no se recomienda su uso

La sintaxis SQL es básicamente la misma que Compatible con MySQL. Para incompatibilidad, consulte la comparación /sql/mysql-compatibility/# y -mysql-compatibility

5. Modificar parámetros

Puede modificar tidb modificando tidb-ansible -ansible, modificando el archivo de configuración tidb-ansible/conf/tidb.yml y luego ejecutando ansible-playbook Rolling_update.yml --tags=tidb/tikv

También puede iniciar sesión directamente en el servidor, buscar implementar_dir/conf/tidb.toml, editar el archivo directamente y luego pkill tidb-server para reiniciar el servicio

6. Ver información de la versión de tidb

select tidb_version();

Versión de lanzamiento: v2.1.0-rc.3-24- g23f90a6

7.g23f90a6

Git Commit Hash: 23f90a68be321e724280da6033a2b63ebf6cc7dd

Rama Git: HEAD

Tiempo de compilación UTC: 2018-10-10 09:18:39

GoVersion: go versión go1.11 linux/amd64

Raza habilitada: false

Versión mínima de TiKV: 2.1.0-alpha.1-ff3dd160846b7d1aed9079c389fc188f7f5ea13e

Lista de verificación antes del lanzamiento: false

7. Realice una copia de seguridad de los datos de tidb

p>

La copia de seguridad completa se puede completar usando mydumper, la copia de seguridad incremental requiere que binlog esté habilitado. Live recovery utiliza la versión comercial de la herramienta reparo.

8. Ver datos de monitoreo

En el archivo de configuración ansible inventario.ini, hay una configuración del servidor de monitoreo

[monitoring_servers]

10.1.163.87

Cuando se implemente, el servidor utilizará esta configuración de forma predeterminada. > Los componentes de Grafana se implementan en este servidor de configuración de forma predeterminada cuando se implementan a través de

/op-guide/dashboard-overview-info/

9. Recopilar estadísticas

set @@tidb_build_stats_ concurrency=20;

set @@tidb_distsql_scan_concurrency=100;

set @@tidb_index_serial_scan_concurrency=20;

analizar tabla xxx índice xxx;

Modificar los tres parámetros anteriores puede mejorar la eficiencia del escaneo.

Para obtener información estadística específica, consulte: /sql/statistics/#Introducción a las estadísticas

1. La transacción es demasiado grande

TiDB tiene restricciones en transacciones, en resumen Las palabras son las siguientes:

El número de declaraciones SQL en una sola transacción no puede exceder 5000 (tidb.

Una sola entrada KV no excede los 6 MB

El número total de entradas KV no supera los 30w

El tamaño total de las entradas KV no supera los 100 MB

Nota: Suponiendo que una tabla tiene 4 índices, entonces el KV la entrada correspondiente a un dato es datos + índice. Un registro **** de 5 KV

Si se trata de inserción o eliminación por lotes, se recomienda modificarlo primero

set tidb_batch_insert = 1;?

set?tidb_batch_delete = 1;

actualiza mysql.tidb set variable_value='24h' donde variable_name='tikv_gc_life_time';

Luego ejecute SQL

Si se trata de una actualización por lotes, se recomienda ejecutar en un bucle límite

2. El tiempo de vida del GC es más corto que la duración de la transacción.

¿El intervalo de tiempo de vida del GC es demasiado corto y los datos que deben leerse mediante la transacción larga pueden ser Para limpiarlos, puede usar el siguiente comando para aumentar?

actualizar mysql. tidb set variable_value='30m' donde variable_name='tikv_gc_life_time';

3. Pérdida de conexión con el servidor MySQL durante la consulta Conexión

Si ocurre pánico, inicie sesión

Si aparece oom en dmesg, ejecute el comando: dmesg -T | grep -i oom

Si no hay oom durante mucho tiempo También recibirá este error al acceder, que es generalmente causado por el tiempo de espera de TCP. Si TCP no se utiliza durante mucho tiempo, el sistema operativo lo eliminará.