patternsqlMinor
Deadlock from mysqldump --single-transaction, is it possible?
Viewed 0 times
deadlockmysqldumppossiblesingletransactionfrom
Problem
Is it possible to get a deadlock if you ran mysqldump with the argument --single-transaction ? or any other complication ?
If it is used to backup a live site with many other querys running at the same time.
Extra info:
The mysqldump process could take over few minutes to complete.
The tables are innodb.
EDIT
I am concerned about the deadlocks errors that could happen on the live applications relying on the database during the time where mysqldump is running.
If it is used to backup a live site with many other querys running at the same time.
Extra info:
The mysqldump process could take over few minutes to complete.
The tables are innodb.
EDIT
I am concerned about the deadlocks errors that could happen on the live applications relying on the database during the time where mysqldump is running.
Solution
PROBLEM
It is logically possible because --single-transaction gets "thrown under the bus" if any
What happens when a dump faces off against an ALTER TABLE ?
It is not so much a deadlock in the traditional sense, but it safe to say that the
SOLUTION
Setup Master/Slave Replication
You should never encounter deadlocks as long as the Slave is used for reads and backups only.
GIVE IT A TRY !!!
It is logically possible because --single-transaction gets "thrown under the bus" if any
ALTER TABLE commands are launched intermittently during the mysqldump (See this post from mysqlperformanceblog.com).What happens when a dump faces off against an ALTER TABLE ?
- If session #1 is running the mysqldump on
mydb.mytable, anALTER TABLEfrom session #2 may pause because it needs to perform a table lock.
- If session #1 is running
ALTER TABLEonmydb.mytable, it could produce spurious results from session #2 trying to run mysqldump on that table (Possible empty table [missing data])
It is not so much a deadlock in the traditional sense, but it safe to say that the
--single-transaction option can get its loyalty displaced and lose it point-in-time window from the first victimized table and all other tables after it.SOLUTION
Setup Master/Slave Replication
- Use binlog_format = ROW to have changes as granular as possible
- Perform mysqldumps of the Data from the Slave
- STOP SLAVE;
- mysqldump --single-transaction ...
- START SLAVE:
You should never encounter deadlocks as long as the Slave is used for reads and backups only.
GIVE IT A TRY !!!
Context
StackExchange Database Administrators Q#48962, answer score: 3
Revisions (0)
No revisions yet.