2015-01-22 11:22:59 |
Ludovic LANGE |
description |
I'm trying to backup a MariaDB server which is a slave (of a multi-source replication), however innobackupex doesn't detect it as such:
-------------------------------------------------------------------------------------------------
150122 10:28:53 innobackupex: Continuing after ibbackup has suspended
innobackupex:: Not checking slave open temp tables for --safe-slave-backup because host is not a slave
-------------------------------------------------------------------------------------------------
Looking at how the detection is done, I can understand why it says so:
-------------------------------------------------------------------------------------------------
sub get_mysql_slave_status {
mysql_query($_[0], "SHOW SLAVE STATUS");
}
...
get_mysql_slave_status($con);
if (defined($con->{slave_status}->{Read_Master_Log_Pos}) and
defined($con->{slave_status}->{Slave_SQL_Running})) {
$host_is_slave = 1;
}
-------------------------------------------------------------------------------------------------
Indeed, SHOW SLAVE STATUS has empty output on this server:
-------------------------------------------------------------------------------------------------
MariaDB [(none)]> SHOW SLAVE STATUS;
Empty set (0.00 sec)
-------------------------------------------------------------------------------------------------
This is because, on MariaDB >= 10.0.1, multi-source replication changes things a bit: https://mariadb.com/kb/en/mariadb/documentation/managing-mariadb/replication/standard-replication/multi-source-replication/
In particular, SHOW SLAVE STATUS only show a *default* replication, which is not mandatory to have.
You can in addition have others replications defined, all of which have a connection_name that you need to add to the command in order to have more info:
-------------------------------------------------------------------------------------------------
MariaDB [(none)]> SHOW SLAVE 'instance7-XXXXXXXXX' STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
...
-------------------------------------------------------------------------------------------------
You can also use the SHOW ALL SLAVES STATUS to have info on all the slaves defined:
-------------------------------------------------------------------------------------------------
MariaDB [(none)]> show all slaves status\G
*************************** 1. row ***************************
Connection_name: instance1-XXXXX
Slave_SQL_State: Slave has read all relay log; waiting for the slave I/O thread to update it
-------------------------------------------------------------------------------------------------
This surely has multiple implications for Xtrabackup to support this multi-source replication:
- Detection can be easy : checking server version, using SHOW ALL SLAVE STATUS to detect multi-source replication and acting as such.
- Stopping / restarting slave(s) needs to be enhanced to iterate on all active slave(s) connections.
- The CHANGE MASTER commands may also need to be handled (may be differently if the connection is in GTID or non-GTID mode)
There may also be other implications that I did not thought of.
-------------------------------------------------------------------------------------------------
$ cat /etc/redhat-release
CentOS release 6.6 (Final)
-------------------------------------------------------------------------------------------------
$ rpm -q percona-xtrabackup
percona-xtrabackup-2.2.8-5059.el6.x86_64
-------------------------------------------------------------------------------------------------
$ innobackupex --version
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
-------------------------------------------------------------------------------------------------
$ xtrabackup --version
xtrabackup version 2.2.8 based on MySQL server 5.6.22 Linux (x86_64) (revision id: )
-------------------------------------------------------------------------------------------------
$ mysql --version
mysql Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1
------------------------------------------------------------------------------------------------- |
I'm trying to backup a MariaDB server which is a slave (of a multi-source replication), however innobackupex doesn't detect it as such:
--------------------------------------------------------------------------
150122 10:28:53 innobackupex: Continuing after ibbackup has suspended
innobackupex:: Not checking slave open temp tables for --safe-slave-backup because host is not a slave
--------------------------------------------------------------------------
Looking at how the detection is done, I can understand why it says so:
--------------------------------------------------------------------------
sub get_mysql_slave_status {
mysql_query($_[0], "SHOW SLAVE STATUS");
}
...
get_mysql_slave_status($con);
if (defined($con->{slave_status}->{Read_Master_Log_Pos}) and
defined($con->{slave_status}->{Slave_SQL_Running})) {
$host_is_slave = 1;
}
--------------------------------------------------------------------------
Indeed, SHOW SLAVE STATUS has empty output on this server:
--------------------------------------------------------------------------
MariaDB [(none)]> SHOW SLAVE STATUS;
Empty set (0.00 sec)
--------------------------------------------------------------------------
This is because, on MariaDB >= 10.0.1, multi-source replication changes things a bit: https://mariadb.com/kb/en/mariadb/documentation/managing-mariadb/replication/standard-replication/multi-source-replication/
In particular, SHOW SLAVE STATUS only show a *default* replication, which is not mandatory to have.
You can in addition have others replications defined, all of which have a connection_name that you need to add to the command in order to have more info:
--------------------------------------------------------------------------
MariaDB [(none)]> SHOW SLAVE 'instance7-XXXXXXXXX' STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
...
--------------------------------------------------------------------------
You can also use the SHOW ALL SLAVES STATUS to have info on all the slaves defined:
--------------------------------------------------------------------------
MariaDB [(none)]> show all slaves status\G
*************************** 1. row ***************************
Connection_name: instance1-XXXXX
Slave_SQL_State: Slave has read all relay log; waiting for the slave I/O thread to update it
--------------------------------------------------------------------------
This surely has multiple implications for Xtrabackup to support this multi-source replication:
- Detection can be easy : checking server version, using SHOW ALL SLAVE STATUS to detect multi-source replication and acting as such.
- Stopping / restarting slave(s) needs to be enhanced to iterate on all active slave(s) connections.
- The CHANGE MASTER commands may also need to be handled (may be differently if the connection is in GTID or non-GTID mode)
There may also be other implications that I did not thought of.
--------------------------------------------------------------------------
$ cat /etc/redhat-release
CentOS release 6.6 (Final)
--------------------------------------------------------------------------
$ rpm -q percona-xtrabackup
percona-xtrabackup-2.2.8-5059.el6.x86_64
--------------------------------------------------------------------------
$ innobackupex --version
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
--------------------------------------------------------------------------
$ xtrabackup --version
xtrabackup version 2.2.8 based on MySQL server 5.6.22 Linux (x86_64) (revision id: )
--------------------------------------------------------------------------
$ mysql --version
mysql Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1
-------------------------------------------------------------------------- |
|