Unnecessary long sleep() in innobackupex leads to FTWRL taking too long
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona XtraBackup moved to https://jira.percona.com/projects/PXB |
Fix Released
|
High
|
Sergei Glushchenko | ||
2.0 |
Fix Released
|
High
|
Sergei Glushchenko | ||
2.1 |
Fix Released
|
High
|
Sergei Glushchenko |
Bug Description
sub mysql_lockall() {
...
mysql_send "FLUSH TABLES WITH READ LOCK;";
...
mysql_send "COMMIT;";
...
...
...
}
sub write_binlog_info {
...
mysql_send 'SHOW MASTER STATUS\G';
...
}
sub write_galera_info {
...
mysql_send "SHOW STATUS LIKE 'wsrep_
...
mysql_send "SHOW STATUS LIKE 'wsrep_
...
}
sub write_slave_info {
...
mysql_send 'SHOW SLAVE STATUS\G';
...
}
sub mysql_unlockall {
...
mysql_send "UNLOCK TABLES;";
...
}
sub mysql_send {
...
mysql_ping(0);
...
}
sub mysql_ping {
...
sleep 2;
...
}
Which means, for a PXC node, there are 7 mysql_ping calls amounting to 14 seconds of sleep time under FTWRL.
Possible fixes in the order of ascending complexity:
1. Decrease the sleep value and use usleep().
2. Make innobackupex use a real DB interface
3. Get rid of innobackupex by merging it with the xtrabackup binary.
Related branches
- Alexey Kopytov (community): Approve
-
Diff: 20 lines (+2/-1)1 file modifiedinnobackupex (+2/-1)
- Alexey Kopytov (community): Approve
-
Diff: 20 lines (+2/-1)1 file modifiedinnobackupex (+2/-1)
This is a request from services.