File-position checkpoints can point inside a transaction, causing --resume to fail with a missing TABLE_MAP error
Mantenedores costumam responder em até 10 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 68/100
Direção de pesquisa
Start in go/logic/migrator.go at Checkpoint() and resume handling, then trace currentCoordinates, LastTrxCoords, and StartSync() in go/binlog/gomysql_reader.go. Reproduce the file-position checkpoint scenario described in the issue and verify that checkpoints use a restartable transaction boundary while preserving preceding DML, allowing --resume to avoid the missing TABLE_MAP error.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Using gh-ost v1.1.11 (2ed192cd39d8a5173b6ef7c4beaa746a2d3bf1aa) on Aurora MySQL 8.0 with binlog_format=ROW, without --gtid.
After running with --checkpoint --execute, stopping the process, and restarting with --resume, binlog streaming repeatedly fails with:
StreamEvents encountered unexpected error:
... invalid table id, no corresponding table map event
The streamer repeatedly reconnects at the same position. Row copying can reach 100%, but binlog processing remains stuck.
Evidence
The following is an actual checkpoint and surrounding binlog events, with database/table names anonymized and irrelevant columns omitted. Numeric positions are unchanged.
mysql> SELECT gh_ost_chk_id, gh_ost_chk_coords, gh_ost_is_cutover
FROM app_db._table_a_ghk;
gh_ost_chk_id: 1
gh_ost_chk_coords: mysql-bin-changelog.001644:98771662
gh_ost_is_cutover: 0
mysql> SHOW BINLOG EVENTS
IN 'mysql-bin-changelog.001644' FROM 98746801 LIMIT 10;
Pos Event_type End_log_pos Info
98746801 Anonymous_Gtid 98746886 SET @@SESSION.GTID_NEXT='ANONYMOUS'
98746886 Query 98746991 BEGIN
98746991 Table_map 98747104 table_id: 5131 (app_db._other_table_gho; another concurrent migration)
98747104 Write_rows 98755290 table_id: 5131
98755290 Write_rows 98763476 table_id: 5131
98763476 Write_rows 98771662 table_id: 5131
98771662 Write_rows 98779848 table_id: 5131 <-- saved checkpoint
98779848 Write_rows 98786279 table_id: 5131 flags: STMT_END_F
98786279 Xid 98786310 COMMIT
98786310 Anonymous_Gtid 98786395 SET @@SESSION.GTID_NEXT='ANONYMOUS'
The checkpoint points to a Write_rows event after its required Table_map, rather than a transaction boundary.
Suspected cause
Checkpoint()savesGetCurrentBinlogCoordinates()asLastTrxCoords.
- In file-position mode,
currentCoordinatesadvances on every event, including intermediate row events.
- Resume loads the saved coordinates and passes that position directly to
StartSync(). The new reader therefore lacks the preceding table map.
The reader separately tracks completed transactions in LastTrxCoords on XID events, but checkpoint creation does not use that value.
Expected behavior
File-position checkpoints should store a restartable transaction boundary, while ensuring all preceding DML has been applied, so --resume can continue.
- Linguagem predominante
- Go
- Estrelas
- 13.6k
- Forks
- 1.4k
- Merge médio
- 9d 19h
- PRs com merge (30d)
- 1
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/gh-ost
-
`--resume` without `--execute` drops the ghost table it correctly skipped alteringTalvez já em andamento @ajm188 assumiu há 56 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
Mantenedores costumam responder em até 10 dias
-
[Suggestion] Apply simple validation to alter commandTalvez já em andamento @drkemp187 assumiu há 106 dias. Abertaenhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
github/gh-ost#1431 · 4 comentários ·
Mantenedores costumam responder em até 10 dias
-
Migration hangs when --attempt-instant-ddl succeedsTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
Mantenedores costumam responder em até 10 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
Mantenedores costumam responder em até 10 dias
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statementTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
github/gh-ost#1780 · 1 comentário ·
Mantenedores costumam responder em até 10 dias
Todas as issues de github/gh-ost
Issues semelhantes
-
[Docs] Four internal links return 404 (Models concept, Contributing to Docs, Providers reference)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
meshery/meshery#23520 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
flaky: execenv TestRelayControlledCancelAndDirectParentDeath reads an empty pid file under loadAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
SocialGouv/iterion#3263 ·
Mantenedores costumam responder em até 1 dia
-
Container registry refuses image names with "__" or "--" (NAME_INVALID), which the OCI distribution spec allows since v1.1.0Talvez já em andamento @lazerg assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Unsupported language versionAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
itadori26/trisse-home#226 ·
Mantenedores costumam responder em até 1 dia