Nous travaillons avec une MariaDb 10.4.14 et nous streamons le binlog avec la suite Debezium. Nous rencontrons un problème car l'horodatage dans le streamer binlog est un uint32 qui ne fournit pas une précision à la milliseconde.

Savez-vous s'il est possible d'obtenir cette précision en changeant une config dans MariaDb ou Debezium par exemple ?

0
kiki 16 nov. 2020 à 13:54

1 réponse

Meilleure réponse

Non, ce n'est pas possible, car l'horodatage est stocké dans un entier 32 bits.

Le format d'en-tête/description est défini comme suit (à partir de MySQL Connector/C mariadb_rpl.h) :

struct st_mariadb_rpl_format_description_event
{
  uint16_t format;
  char *server_version;
  uint32_t timestamp;
  uint8_t header_len;
};

L'implémentation du protocole pour un événement de journal binaire format_description peut être trouvée sur le FORMAT_DESCRIPTION_EVENT du protocole Client/Serveur

Modification de l'horodatage de uint32_t, par ex. vers uint64_t ou MYSQL_TIME casserait le protocole et donc toute la réplication mais aussi les applications existantes qui lisent le log binaire.

1
Georg Richter 16 nov. 2020 à 22:44