Conjunto de operaciones básicas de TiDB
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/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á.