Anuncio de lanzamiento de la función de separación de lectura y escritura de DBPack

En la versión v0.1.0, lanzamos la función de transacciones distribuidas y brindamos una vista previa de la función de separación de lectura y escritura. En la versión v0.2.0, agregamos la función de enrutamiento de solicitud de consulta personalizada a través de sugerencias y solucionamos algunos errores. Además, en esta versión, también ofrecemos una vista previa de la función de registro de auditoría, que se lanzará oficialmente en v0.3.0. UseDB 

Solucionar situaciones de errores

  1. PHP 8.0 pdo lanza una excepción transaction not active 

    Cuando el cliente Mysql envía el resultado de la ejecución de sql al usuario, si no hay anomalías en la ejecución, el primer paquete enviado es OKPacket, y hay un indicador en este paquete para identificar si la solicitud de sql está en una transacción. Como se muestra abajo:

    imagen-20220629161325409

    El contenido de este paquete es:

    07 00 00 // 前 3 个字节表示 payload 的长度为 7 个字节
    01 // sequence 响应的序号,前 4 个字节一起构成了 OKPacket 的 header
    00 // 标识 payload 为 OKPacket
    00 // affected row
    00 // last insert id
    03 00 // 状态标志位
    00 00 // warning 数量
    

    Las versiones anteriores de dbpack establecieron el bit indicador en 0, el controlador mysql anterior a java, golang, .net core y php 8.0 pueden coordinar correctamente las transacciones, y el controlador pdo de php 8.0 verificará el bit indicador, por lo que la versión anterior a php 8.0 está en Se lanza una excepción cuando se usa dbpack para coordinar transacciones distribuidas . transaction not active 

  2. Excepción de deserialización del algoritmo de equilibrio de carga

    imagen-20220707170118827

    Esta excepción hace que las solicitudes de consulta dividida de lectura y escritura se ejecuten entre bases de datos con un algoritmo aleatorio.

  3. otros errores

nuevas características

Usar sugerencia para personalizar el enrutamiento de solicitudes de consulta UseDB 

P.ej:

SELECT /*+ UseDB('employees-master') */ emp_no, birth_date, first_name, last_name, gender, hire_date FROM employees WHERE emp_no = ?

Agregue una anotación a la solicitud de consulta. El parámetro de la anotación es el nombre de la fuente de datos y puede especificar a qué fuente de datos se enruta la solicitud SQL para su ejecución. UseDB 

Función de vista previa

Esta versión agrega la función de registro de auditoría. Se puede habilitar agregándolo a la configuración , por ejemplo: AuditLogFilter 

filters:
  - name: auditLogFilter
    kind: AuditLogFilter
    conf:
      audit_log_dir: /var/log/dbpack/
      # unit MB
      max_size: 300
      # unit Day
      max_age: 28
      # maximum number of old log files to retain
      max_backups: 1
      # determines if the rotated log files should be compressed using gzip
      compress: true
      # whether to record the audit log before or after the sql request is actually executed
      record_before: true

Cuando está habilitado, DBPack registra registros de auditoría en el siguiente formato:

[timestamp],[username],[ip address],[connection id],[command type],[command],[sql text],[args],[affected row]

El registro es el siguiente:

2022-06-14 07:15:44,dksl,172.18.0.1:60372,1,COM_QUERY,,SET NAMES utf8mb4,[],0
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,INSERT,INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES (?, ?, ?, ?, ?, ?),['100000' '1992-01-07' 'scott' 'lewis' 'M' '2014-09-01'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,DELETE,DELETE FROM employees WHERE emp_no = ?,['100000'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,INSERT,INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES (?, ?, ?, ?, ?, ?),['100001' '1992-01-07' 'scott' 'lewis' 'M' '2014-09-01'],1
2022-06-14 07:15:45,dksl,172.18.0.1:60372,1,COM_STMT_EXECUTE,SELECT,SELECT emp_no, birth_date, first_name, last_name, gender, hire_date FROM employees WHERE emp_no = ?,['100001'],0

ilustrar

Planes de la próxima versión:

  • V0.3.0

    Registro de auditoría, seguimiento de enlace de solicitud de SQL

  • V0.4.0

    Cifrado y descifrado de datos confidenciales, limitación de corriente, fusión

  • V0.5.0

    Función de sub-biblioteca y sub-tabla

La versión v0.2.0 lanzada esta vez puede resolver los requisitos de transacciones distribuidas del usuario y los requisitos de separación de lectura y escritura. Las dos funciones se pueden usar en combinación sin invadir el negocio del usuario, y la experiencia es muy fluida.

Los entusiastas del código abierto pueden unirse a nosotros en la construcción de la comunidad DBPack, unirse a grupos o participar en la construcción de la comunidad, comuníquese a través de WeChat: scottlewis.

Enlace

Supongo que te gusta

Origin www.oschina.net/news/202526/dbpack-0-2-0-released
Recomendado
Clasificación