Paramètres et conditions du journal des transactions
Découvrez comment préparer la base de données MySQL et les variantes prises en charge pour Oracle GoldenGate, y compris le paramètre de journalisation binaire requis et les variables de serveur de base de données.
Configurer les propriétés de journalisation
Oracle GoldenGate s'appuie sur les journaux binaires MySQL pour stocker les données dont il a besoin pour répliquer les transactions source. Les journaux binaires sur le système source doivent être configurés correctement avant de démarrer le traitement Oracle GoldenGate.
Cette section traite des options de démarrage de journal binaire et des variables système suivantes qui s'appliquent à Oracle GoldenGate pour MySQL.
| Options de journalisation | Valeurs | Fonction | Exigences |
|---|---|---|---|
binlog_annotate_row_events |
ON, OFF |
Variable système qui indique au serveur principal d'écrire ces événements dans le journal binaire. | Requis pour MariaDB et Oracle GoldenGate 23.8 et versions antérieures. OFF |
binlog_expire_logs_seconds |
0 - 4294967295 |
Lorsque cette option est prise en charge, cette variable système définit la période d'expiration du journal binaire, en secondes. | La valeur recommandée est : >=86400 |
binlog_format |
ROW, STATEMENT, MIXED |
Variable système qui définit le format de journalisation binaire. | Obligatoire lorsque MySQL est utilisé comme base de données source. Si la valeur est définie sur
|
binlog retention hours |
1 - 168 |
Si elle est prise en charge, cette variable système définit la période d'expiration du journal binaire, en heures. | La valeur recommandée est : >=24 |
binlog_row_image |
FULL, MINIMAL, NOBLOB |
Variable système qui définit différents niveaux de journalisation au niveau de la colonne dans le journal binaire. | Obligatoire lorsque MySQL est utilisé comme base de données source.
|
binlog_row_metadata |
FULL, MINIMAL |
Variable système qui configure la quantité de métadonnées ajoutées au journal binaire pour la journalisation basée sur les lignes. | Requis lorsque la version MySQL 8.0 ou supérieure est utilisée comme base de données source pour la prise en charge des instructions LDD.
|
event_scheduler |
ON, OFF |
Variable système qui permet la création de travaux de mise à jour et de purge du signal d'activité. | Obligatoire si la fonctionnalité de signal d'activité d'Oracle GoldenGate est implémentée.
|
log_bin |
ON, OFF |
Variable système qui indique le statut de la journalisation binaire. | Obligatoire lorsque MySQL est utilisé comme base de données source. If not already ON, set by assigning a name, such as log-bin=binlog. |
log_replica_updates |
ON, OFF |
Variable système qui consigne les mises à jour dans le journal binaire du serveur secondaire lorsqu'elles sont reçues d'un serveur principal. | Requis lorsque MySQL est utilisé comme base de données source et est configuré pour effectuer une capture à partir d'un serveur de répliques.
|
server_id |
0 - 4294967295 |
Variable système requise pour être spécifiée lorsque la journalisation binaire est activée. Pour une réplique principale de réplication et chaque réplique de réplication, assurez-vous que les valeurs sont >0 et uniques. | Obligatoire lorsque MySQL est utilisé comme base de données source.
|
Vérifier la journalisation au niveau de la base de données
Afin de vérifier les paramètres de journalisation binaire actuels de la base de données requis pour prendre en charge Oracle GoldenGate Capture pour la base de données MySQL, exécutez les requêtes suivantes. Si les paramètres doivent être modifiés, suivez les instructions sous Activer la journalisation au niveau de la base de données.
-
Connectez-vous à MySQL en tant que compte d'administrateur de service de base de données root ou affecté.
[root@srcdbserver ~]$ mysql -uroot -p -
Exécutez la commande suivante pour déterminer si la base de données est activée pour la journalisation binaire. Si le résultat est ON, le journal binaire de la base de données est activé.
show variables like 'log_bin'; -
Exécutez les commandes suivantes pour déterminer si la base de données est activée avec les bons paramètres de journal binaire et
server_id. Assurez-vous que la valeurbinlog_formatest définie surROW, quebinlog_row_imageetbinlog_row_metadatasont définies surFULLet que la variableserver_idest définie sur>=1et qu'elles sont uniques pour une réplique principale et toutes les répliques.show variables like 'binlog_%'; show variables like 'server_id'; -
Répétez le processus pour interroger les variables pour les autres options répertoriées dans Configuration des propriétés de journalisation, en fonction de vos besoins, tels que la prise en charge des instructions LDD et MariaDB.
Activer la journalisation au niveau base de données
Si nécessaire, procédez comme suit pour activer les paramètres de journalisation binaire de base de données requis pour prendre en charge Oracle GoldenGate Capture pour une base de données MySQL. Modifiez uniquement les paramètres qui doivent être activés ou modifiés, en fonction des résultats de Vérification de la journalisation au niveau de la base de données.
-
Modifiez le fichier de configuration MySQL,
my.cnfpour Linux oumy.inipour Windows, afin d'activer les variables système requises pour prendre en charge la capture Oracle GoldenGate pour MySQL.[root@srcdbserver ~]$ vi /etc/my.cnf -
Pour activer le journal binaire, ajoutez une entrée au fichier de configuration, comme suit, à l'aide d'une valeur de connexion de votre préférence.
log-bin=*binlog* -
Pour définir le format de journalisation binaire et les variables
server_idcorrects, définissez les éléments suivants :binlog-format=ROW binlog-row-image=FULL #For MySQL 8.0 and above, for DDL support binlog-row-metadata=FULL #Set to value > 0 and <= 4294967295 server-id=1 -
Ajoutez des variables supplémentaires pour les autres options répertoriées dans Configuration des propriétés de journalisation, en fonction de vos exigences, telles que la prise en charge des instructions LDD et MariaDB.
-
Enregistrez et fermez le fichier.
-
Redémarrez la base de données pour que les paramètres prennent effet.
[root@srcdbserver ~]$ service mysqld restart -
Vérifiez le statut du service de base de données à l'aide de la commande suivante :
[root@srcdbserver ~]$ service mysqld status
Modification de variables système pour les services Amazon et Azure MySQL Database
Pour configurer les bases de données Amazon et Azure MySQL pour la fonctionnalité d'extraction et de signal d'activité Oracle GoldenGate, les modifications requises doivent être effectuées à l'aide des groupes de paramètres, de la création ou de la modification de base de données ou des paramètres de serveur, s'ils ne sont pas déjà définis sur les valeurs requises. Suivez les instructions suivantes pour modifier ces variables système :
-
Pour activer la journalisation binaire dans Amazon, vous devez activer les sauvegardes de la base de données. Dans le cas contraire, la variable
log_binindiqueOFFet le processus Extract abandonne, indiquant qu'il ne peut pas extraire la liste des fichiersbinlog.Activer les sauvegardes lors de la création de la base de données ou en modifiant une base de données existante pour inclure un régiment de sauvegarde.
-
Pour les bases de données Amazon MySQL, définissez la variable
binglog_formatsurROW, la variablebinlog_row_imagesurFULL, la variableevent_schedulersurONsi vous implémentez la fonctionnalité de signal d'activité Oracle GoldenGate, et définissez la variablebinlog_row_metadatasurFULLsi vous activez la prise en charge de la capture LDD.Suivez les instructions fournies par Amazon pour créer ou modifier un groupe de paramètres existant afin d'effectuer ces modifications.
https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/
-
Pour les bases de données Azure MySQL, définissez la variable
binlog_formatsurROWet la variablebinlog_row_imagesurFULL. Suivez les instructions fournies par Microsoft pour modifier les paramètres serveur de l'instance de base de données.https://docs.microsoft.com/en-us/azure/mysql/howto-server-parameters
Garantir la disponibilité des données
Conservez suffisamment de données de journal binaires pour que si vous arrêtez le processus Extract ou qu'il y a une interruption non planifiée, le processus Extract puisse recommencer à partir de ses points de reprise. Le processus Extract doit avoir accès au journal binaire qui contient le début de la plus ancienne unité de travail non validée, puis à tous les journaux binaires. La période de conservation recommandée est d'au moins 24 heures pour les données de transaction, y compris les informations actives et archivées. Vous devrez peut-être effectuer des tests pour déterminer le meilleur délai de conservation en fonction du volume de données et des besoins métier.
Si les données dont l'extraction a besoin pendant le traitement n'ont pas été conservées, que ce soit dans les journaux actifs ou de sauvegarde, l'une des actions correctives suivantes peut être requise :
-
Modifier le processus Extract pour effectuer une capture à partir d'un point ultérieur pour lequel des données de journal binaires sont disponibles (et accepter une éventuelle perte de données sur la cible).
-
Resynchronisez les tables source et cible, puis redémarrez l'environnement Oracle GoldenGate.
La conservation des données de journal binaires peut être augmentée avec différentes mesures en fonction de la base de données ou de la variante MySQL.
-
Pour MySQL Server, MySQL Heatwave, Azure Database for MySQL et MariaDB, la variable
binlog_expire_logs_secondspeut être augmentée pour ajuster la période de conservation. -
Pour Amazon Aurora pour MySQL et Amazon RDS pour MySQL, les paramètres de conservation de journal binaire par défaut sont
NULL, ce qui signifie que, pour Aurora, les journaux sont purgés paresseusement et pour RDS pour MySQL, ils ne sont pas conservés. Utilisez la procédure suivante pour définir le paramètrebinlognombre d'heures de conservation. Exemple :call mysql.rds_set_configuration('binlog retention hours', 24);
Capture sur une réplique de réplication MySQL
Vous pouvez configurer Oracle GoldenGate pour la capture à partir d'une réplique de réplication MySQL.
En général, les transactions appliquées à la réplique sont journalisées dans les journaux de relais et non dans le fichier binlog de la réplique. Pour que la réplique écrive les transactions qu'elle reçoit de la base de données principale dans son fichier binlog, vous devez démarrer la réplique de réplication avec l'option log_replica_updates 1 dans my.cnf en conjonction avec les autres paramètres de journalisation binaire pour Oracle GoldenGate. Une fois que les transactions de la base principale se trouvent dans le fichier binlog de la réplique, vous pouvez configurer une extraction Oracle GoldenGate standard sur la réplique pour commencer la capture.