LOAD DATA INFILE not replicating properly in cluster
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
MySQL patches by Codership | Status tracked in 5.6 | |||||
5.5 |
Fix Released
|
High
|
Teemu Ollakka | |||
5.6 |
Fix Released
|
High
|
Teemu Ollakka | |||
Percona XtraDB Cluster moved to https://jira.percona.com/projects/PXC | Status tracked in 5.6 | |||||
5.5 |
Fix Released
|
Undecided
|
Unassigned | |||
5.6 |
Fix Released
|
Undecided
|
Unassigned | |||
codership-maria |
New
|
Undecided
|
Unassigned |
Bug Description
When I start large LOAD DATA INFILE, if I understand correctly, Galera does implicit commits on every 10k rows, correct?
However these implicit commits are not seem to be replicated to other nodes. The problem is during the LOAD is in progress, I can see increasing row count on the same node where I run the LOAD, but all other nodes show 0 rows.
Also, when I interrupt the LOAD command with CTRL+C, the writing node has already tens of thousands rows present in the table, while all other nodes have this table empty.
No errors in error log, wsrep status shows all the nodes are "Synced", cluster size is OK. Until I write to the table again of course.
How to reproduce:
- start large LOAD DATA INFILE on one node to InnoDB table, after first batch is committed (select count(*) showing rows) - abort the statement.
- check the table contents on other nodes
| version_comment | Percona XtraDB Cluster (GPL), wsrep_23.7.5.r3880 |
| wsrep_provider_
Changed in codership-mysql: | |
assignee: | nobody → Seppo Jaakola (seppo-jaakola) |
importance: | Undecided → Medium |
status: | New → In Progress |
milestone: | none → 5.5.32-23.7.6 |
Changed in codership-mysql: | |
status: | Fix Committed → Fix Released |
Turns out that there is a regression bug, LOAD DATA transaction does not commit anymore at 10K row insert intervals. I will push a fix for this and create a regression test for it. data_splitting= ON|OFF
Also, as this changes the logic of LOAD DATA processing, will add a configuration variable to control whether such LOAD DATA transaction splitting is wanted or not: wsrep_load_