max-lag-millis parameter description is misleading when running on master
Les mainteneurs répondent en général sous 10 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 48/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- aws, go, mysql
- Domaine
- databases, documentation
Piste de recherche
Commencez par le contrôle du retard du heartbeat indiqué dans go/logic/migrator.go:504, puis trouvez la documentation de --max-lag-millis et --cut-over-lock-timeout-seconds. Précisez que le retard du heartbeat doit rester inférieur aux deux seuils et veillez à ce que les questions signalées concernant le rollback et le verrouillage des métadonnées reçoivent une réponse d’un maintainer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
This comes out of an issue we kept running into causing great pain and outages
We would run with
gh-ost --allow-on-master -assume-rbr \
-critical-load Threads_running=700 \
-critical-load-hibernate-seconds 60 \
-max-load Threads_running=100 \
-nice-ratio 0.2 \
-chunk-size 5000 \
-ask-pass \
-database=sbtest \
-table=sbtest1 \
-user sbtest \
-host=XXX \
-postpone-cut-over-flag-file /tmp/gh-ost-postpone-cut-over-flag-sbtest1.log \
-skip-foreign-key-checks -throttle-additional-flag-file /tmp/gh-ost-throttle_flag-sbtest1.log \
--alter "add column c1 int(11) NOT NULL DEFAULT '1';" \
-verbose -initially-drop-old-table -execute 2>&1 | tee /tmp/gh-ost-sbtest1.log
Then once row copy was complete, we would be in migrating stage for a long time applying binlogs. At this point heartbeat lag would be 10-30 seconds. We thought if we increased max-lag-millis from 1500 to 10000 this would give us less throttling and speed up binlog reading and applies (silly us!)
Heartbeat lag would drop below 10 seconds, we would remove the cutover file and then run into
"ERROR Timeout while waiting for events up to lock"
which made sense since 10 seconds > cutover lock timeout of 6 seconds
Our ask is that we edit the documentation to point out this important effect of the seemingly innocent parameter as evident here https://github.com/github/gh-ost/blob/master/go/logic/migrator.go#L504
if heartbeatLag > maxLagMillisecondsThrottle || heartbeatLag > cutOverLockTimeout {
this.migrationContext.Log.Debugf("current HeartbeatLag (%.2fs) is too high, it needs to be less than both --max-lag-millis (%.2fs) and --cut-over-lock-timeout-seconds (%.2fs) to continue", heartbeatLag.Seconds(), maxLagMillisecondsThrottle.Seconds(), cutOverLockTimeout.Seconds())
return true, nil
}
I also have 2 questions,
- after this error gh-ost went back to the migrating stage, supposedly to do rollbacks which caused an availability issue and we had to kill the process. What is it rolling back, since no cutover was done, should it not simply abandon things and release locks?
- we obviously didn't wait for rollback to complete but should the metadata locks not released prior to the rollback and just after this error occurs? In our case both the new and old tables remained locked till we killed the process.
For context we are on AWS Aurora and the high hearbeat lag is a side effect of aurora_binlog_replication_max_yield_seconds set to non-zero
- Langage dominant
- Go
- Étoiles
- 13.6k
- Forks
- 1.4k
- Merge moyen
- 9 j 19 h
- PR mergées (30 j)
- 1
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/gh-ost
-
`--resume` without `--execute` drops the ghost table it correctly skipped alteringPeut-être pris @ajm188 l’a pris il y a 56 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 10 jours
-
[Suggestion] Apply simple validation to alter commandPeut-être pris @drkemp187 l’a pris il y a 106 jours. Ouverteenhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
github/gh-ost#1431 · 4 commentaires ·
Les mainteneurs répondent en général sous 10 jours
-
Migration hangs when --attempt-instant-ddl succeedsPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
Les mainteneurs répondent en général sous 10 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
Les mainteneurs répondent en général sous 10 jours
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statementPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
github/gh-ost#1780 · 1 commentaire ·
Les mainteneurs répondent en général sous 10 jours
Toutes les issues de github/gh-ost
Issues similaires
-
type:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nightgauge/nightgauge#3266 ·
Les mainteneurs répondent en général sous 1 jour
-
area: ai-models priority: normal
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
prime-radiant-inc/evener#6325 ·
Les mainteneurs répondent en général sous 1 jour
-
team:library-maintainers
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
padok-team/burrito#1208 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bazel-contrib/rules_go#4784 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour