Les sommes de contrôle des données sont une nouvelle fonctionnalité introduite dans 9.3, et:
il y a un nouveau paramètre GUC "ignore_checksum_failure" qui forcera PostgreSQL à continuer de traiter une transaction même si une corruption est détectée
En cas d'échec de la somme de contrôle sur un maître de réplication, les données corrompues seront-elles répliquées sur les esclaves ou la réplication s'arrêtera-t-elle? Cela dépend-il du réglage de ignore_checksum_failure
?
Ce README contient des informations utiles mais ne répond pas directement à la question.
postgresql
replication
postgresql-9.3
checksum
Jack dit d'essayer topanswers.xyz
la source
la source
Réponses:
Si les données ont été corrompues sur le disque, la corruption ne doit pas être répliquée sauf si elle était déjà présente dans la sauvegarde à partir de laquelle la réplique a été créée.
Bien sûr, si vous ignorez les échecs de somme de contrôle, le maître peut commencer à se tromper et cette erreur sera reproduite.
Si la corruption se produit dans la mémoire, tous les paris sont désactivés.
la source
ignore_checksum_failure
paramètre inclut l'avertissement que "ce comportement peut ... propager ... la corruption". Sans mentionner explicitement la réplication (streaming), il semblerait que cela soit implicite ici. Normalement, une erreur de somme de contrôle entraînerait l'abandon de la transaction, donc aucune donnée ne serait répliquée. Ignorer cette erreur vous permettrait de valider la transaction et d'écrire des données (potentiellement) corrompues, qui seraient également répliquées.