-
Type:
Task
-
Status: Stalled (View Workflow)
-
Priority:
Critical
-
Resolution: Unresolved
-
Fix Version/s: 10.5
-
Component/s: Replication
Currently no true LOCK=NONE exists on slave.
Alter table is first committed on master then it is replicated on slaves.
The purpose of this task is to create a true LOCK=NONE
Implementation Idea
Master will write BEGIN_DDL_EVENT in binlog after it hits ha_prepare_inplace_alter_table.
Then master will write QUERY_EVENT on binlog with actual alter query .
On commit/rollback master will write COMMIT_DDL_EVENT/ROLLBACK_DDL_EVENT.
On slave there will be pool of threads(configurable global variable), which
will apply these DDLs. On reciving BEGIN_DDL_EVENT slave thread will pass the
QUERY_EVENT to one of the worker thread. Worker thread will execute untill
ha_inplace_alter_table. Actual commit_inplace_alter will be called by sql thread.
If sql thread recieve some kind of rollback event , then it will somehow signal
worker thread to stop executing alter. If none of the worker threads are avaliable
then event will be enqueued, then If we recieved rollback event the we will simply
discard event from queue, If we recieved commit event then SQL thread will syncrolysly
process DDL event.
- relates to
-
MDEV-16329 Cross-engine ALTER ONLINE TABLE
-
- Open
-
-
MDEV-17567 Atomic DDL
-
- Open
-
-
MDEV-16223 Background ADD INDEX
-
- Open
-
-
MDEV-16281 Implement parallel ADD INDEX
-
- Open
-
-
MDEV-7974 backport fix for mysql bug#12161 (XA and binlog)
-
- Closed
-