Linux explora la influencia del tiempo del sistema en la base de datos

00. Antecedentes

Encontré algunos problemas relacionados con la sincronización de tiempo ntp cuando trabajaba recientemente:

  • El impacto del servicio ntp en la arquitectura de alta disponibilidad de la base de datos (falla de la arquitectura de alta disponibilidad)
  • La relación entre ntp y la zona horaria del sistema linux, cpu tick (afecta la ejecución de procesos relacionados con el tiempo)
  • Después de que se ajusta el ntp o la zona horaria del sistema, ¿qué impacto tendrá en los datos existentes en la base de datos?

01. ¿Qué es el servicio ntp?

NTP es un protocolo de sincronización de la hora de la red, que es un protocolo que se utiliza para sincronizar la hora de cada computadora en la red.

Principio de comunicación : primero, el host inicia NTP. El cliente enviará un mensaje de ajuste de hora al servidor NTP. Luego, el servidor NTP enviará la hora estándar actual al cliente. Después de que el cliente reciba la hora del servidor, ajustará su hora en función de esta información. De esta manera, se realiza la sincronización de la hora de la red.

Hay dos modos de sincronización específicos

  • El número de servidores es relativamente pequeño, puede sincronizar directamente con el servidor de tiempo
  • Hay muchos servidores locales, servidor de sincronización de tiempo autoconstruido localmente para la sincronización de tiempo entre clústeres

Operación normal

  • Utilice ntpd para calibrar el reloj ( cambie la velocidad del tiempo ) en lugar de ajustar la hora en el reloj de la computadora ( cambie la hora específica ).
  • Puede usar ntpdate para sincronizar la hora cuando la computadora acaba de iniciarse, pero aún no se han iniciado muchos servicios.
  • NTPD registrará la desviación de la frecuencia de oscilación del temporizador del BIOS durante la sincronización con el servidor de tiempo. De esta manera, incluso si hay un problema con la red, la máquina puede mantener un tiempo de viaje bastante preciso.

Dos comandos para la sincronización horaria

  • ntpd : Calibra la hora, calibra la hora un poco y finalmente corrige la hora lentamente. El servicio ntpd puede corregir el tic de la CPU mientras corrige la hora . El tic pertenece al reloj del hardware y puede cambiar relativamente la velocidad del tiempo. ntpd tiene una configuración de autoprotección: si la diferencia de tiempo entre esta máquina y la fuente es demasiado grande, ntpd no se ejecutará.

  • ntpdate : No considerará si otros programas tendrán problemas y ajustará directamente la hora del sistema de forma sincrónica, lo que puede afectar al programa.

  • cpu tick : una frecuencia de actualización similar a cpu. Por ejemplo: en un juego, los cambios en el mundo del juego son discretos, lo que significa que la computadora actualiza los cambios en las cosas con una frecuencia fija. Si la velocidad es demasiado lenta, el jugador puede sentir que todo salta; si la velocidad es demasiado rápida, naturalmente será más suave, pero se comerá la CPU. La hora del sistema está relacionada con la frecuencia de actualización de la CPU.

02. sincronización de hora ntp

Utilice el comando ntpdate directamente para sincronizar con el servidor de tiempo (el servicio ntpd del cliente debe cerrarse primero)

ntpdate -u x.x.x.x

El xxxx aquí puede ser la dirección IP del servidor de tiempo de la red pública o la dirección de un servidor ntp autoconstruido.

Varios servidores de tiempo de la red pública: Servidor de tiempo de Alibaba Cloud.Las señales de tiempo provienen de GPS y señales de satélite Beidou y están equipadas con relojes atómicos para mantener el tiempo.

http://time1.aliyun.com
http://time2.aliyun.com
http://time3.aliyun.com
http://time4.aliyun.com
http://time5.aliyun.com
http://time6.aliyun.com
http://time7.aliyun.com

También puede construir su propio servidor ntp (se omite la configuración específica, introducción directa al uso regular)

# 安装  
yum install ntp

# 开机自启动
chkconfig ntpd on

# 查看NTP是否正常运行
netstat -tlunp | grep ntp

# 配置防火墙过滤规则
/sbin/iptables -I INPUT -p udp --dport 123 -j ACCEPT

Configure el archivo / etc / sysconfig / ntpd

  • El servicio ntp solo sincronizará la hora del sistema de forma predeterminada. Si desea que ntp sincronice la hora del hardware al mismo tiempo, puede configurar el archivo / etc / sysconfig / ntpd. En el archivo / etc / sysconfig / ntpd, agregue SYNC_HWCLOCK = yes para que la hora del hardware se pueda sincronizar con la hora del sistema.

Inicie el servicio ntpd

service ntpd start

Configure el cliente NTP (se omiten otros detalles, políticas de firewall, etc.) :

En vim /etc/ntp.conf en todos los clientes, agregue:

server x.x.x.x 

xxxx es la dirección del servidor ntp configurada anteriormente

Nota : Cuando el error de tiempo entre el servidor y el cliente es demasiado grande (puede ser de 1000 segundos), la modificación de la hora puede traer problemas impredecibles al sistema y las aplicaciones, ¡y NTP detendrá la sincronización de la hora! Por lo tanto, si descubre que la hora no está sincronizada después de que se inicia el NTP, debe considerar que puede deberse a la diferencia horaria. En este caso, debe sincronizar manualmente la hora ntpdate.

Ver el estado del servidor ntp y el servidor ntp superior

ntpq -p
  • remoto: La IP o el nombre de host de la máquina local y el ntp superior, "+" tiene una conexión para ser candidato, "*" está en uso
  • refid: dirección ntp de un nivel superior
  • st: nivel de estrato
  • cuando: cuántos segundos atrás se sincronizó la hora
  • encuesta: cuántos segundos después de la próxima actualización
  • alcance: el número de veces que el servidor ntp superior ha solicitado una actualización
  • retrasar: Retraso de la red
  • compensar: Compensación de tiempo
  • estar nervioso: Diferencia entre la hora del sistema y la hora de la BIOS
# ntpq -p
remote  refid                  			st 	t 	when 	poll 	reach   delay   offset  jitter
==============================================================================================
*		time4.aliyun.co 10.137.38.86    2 	u  	111  	128  	377   	27.480	-5.995	1.852

Sincronice manualmente la hora una vez: / usr / sbin / ntpdate 10.137.38.86 (IP del host del servidor, aquí el cliente debe cerrar el servicio NTP primero )

Inicie el servicio NTP:

service ntpd start

Observe el estado de sincronización de la hora:

ntpq -p

Observe el comando ntpstat del resultado de sincronización

# ntpstat

unsynchronised
polling server every 8 s

Si la sincronización falla, la sincronización lleva tiempo. Espere de 5 a 10 minutos para volver a consultar:

Every 2.0s: ntpstat Tue Jul 11 16:55:57 2017synchronised to NTP server (10.10.11.247) at stratum 12 time correct to within 605 ms polling server every 128 s

La sincronización de la hora está completa. ¿La fecha es coherente con la hora del host del servidor? ! !

03. hora del sistema linux

La hora de Linux se divide en System Clock (hora del sistema) y Real Time Clock (hora de hardware, RTC para abreviar).

  • Hora del sistema: se refiere a la hora en el kernel de Linux actual.
  • Hora del hardware: hora en la que hay energía de la batería en la placa base.

Ver la hora del sistema

date

Ver la hora del hardware

hwclock --show
或
clock --show

Sincronización de la hora del hardware y la hora del sistema. Reinicie el sistema, la hora del hardware leerá la sincronización de la hora del sistema. Si el sistema no se reinicia, use los comandos hwclock o clock para lograr la sincronización.

硬件时钟与系统时钟同步:(hc代表硬件时间,sys代表系统时间)
# hwclock --hctosys
或者 
# clock --hctosys

系统时钟和硬件时钟同步:
# hwclock --systohc
或者
# clock --systohc

Utilice el comando tzselect para establecer la zona horaria
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

04. ¿Cómo afecta la hora del sistema a la base de datos?

Almacenamiento de campo de tiempo de base de datos

  • La capa inferior del "campo de tiempo" de la base de datos se traduce en una marca de tiempo y se almacena en el disco.
  • Por ejemplo, inserte un campo de datos de tiempo, que se traducirá en una marca de tiempo según la zona horaria de la base de datos actual y luego se almacenará en el disco (si es una marca de tiempo directamente, la traducción se ignora).
  • La base de datos genera automáticamente funciones de tiempo (ahora, el sistema) también obtendrá la marca de tiempo de linux actual, y luego traducirá la zona horaria de la base de datos actual a la visualización de la hora y almacenará directamente la marca de tiempo de Linux correspondiente. Los resultados de visualización de estas funciones pueden ser inconsistentes con la hora de Linux (Linux y la zona horaria de la base de datos son diferentes)

Leer el campo de hora de la base de datos

  • Traduzca la marca de tiempo del disco a la zona horaria de la base de datos actual y luego envíela al cliente para que la muestre.
  • Las funciones de tiempo relacionadas con la base de datos leen directamente la marca de tiempo de Linux

Modificar la hora o la zona horaria del sistema

  • La base de datos también puede configurar los parámetros relacionados con la zona horaria, generalmente, deben determinarse durante el despliegue y no se modificarán posteriormente (causará confusión en la visualización de la hora).

  • La zona horaria de la base de datos es generalmente coherente con la zona horaria de Linux. Si son inconsistentes, la misma marca de tiempo será diferente a la que se muestra en la base de datos.

  • La hora del sistema de la base de datos depende de la hora del sistema Linux. Algunas funciones de la base de datos ahora y el sistema leen la marca de tiempo de Linux. Si la zona horaria es inconsistente, los resultados de la misma marca de tiempo entre Linux y la base de datos son diferentes.

  • La modificación de la hora del sistema Linux tendrá un impacto en la hora del sistema de la base de datos, y definitivamente tendrá un impacto en el momento actual y en el sistema. Si su empresa tiene requisitos únicos de tiempo, definitivamente informará un error (si la hora se modifica en el futuro).

  • ntp puede sincronizar la hora en otra máquina con el servidor actual (si es para ajustar la hora al futuro, no hay problema). Si algunos procesos o negocios dependen de la secuencia de tiempo, entonces ajuste la hora al pasado, no será un error! ! !

  • ntp Sincronice la hora o modifique la zona horaria del sistema Linux, no afectará los datos existentes, solo los datos que se almacenarán.

Resumen: La modificación de la zona horaria es arriesgada y la modificación de la hora es en el futuro, dependiendo de si hay una empresa que depende de la secuencia horaria (por ejemplo, la modificación de la hora en el pasado).

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/112757684
Recomendado
Clasificación