| Bug #69771 | SHOW SLAVE HOSTS only displays 1 Host if 2 Hosts have the same Server ID | ||
|---|---|---|---|
| Submitted: | 18 Jul 2013 2:22 | Modified: | 19 Jul 2013 19:40 |
| Reporter: | Chris Calender | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) |
| Version: | 5.6.12 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | server_id, show slave hosts | ||
[18 Jul 2013 2:22]
Chris Calender
[18 Jul 2013 2:23]
Chris Calender
I forgot to add, 'Port' is actually the one that should always be different. Perhaps just base it off that (or at least include it in the key). :)
[18 Jul 2013 2:29]
Chris Calender
Also, for anyone interested, and in my "very basic" tests, replication still worked fine. Updates from the master were written to both slave #1 and slave #2, and SHOW SLAVE STATUS always was normal on both slaves.
[18 Jul 2013 16:31]
MySQL Verification Team
Hello Chris, Thank you for the bug report. Verified as described. Thanks, Umesh
[18 Jul 2013 16:32]
MySQL Verification Team
// How to repeat
// Use sandbox to setup replication
// Download tarball n place it in $HOME/downloads/
[ushastry@cluster-repo ~]$ more 5612.sh
#!/bin/bash
export SANDBOX_HOME=$HOME/sandboxes
export MYSQL5_6_12=mysql-5.6.12-linux-glibc2.5-x86_64
export TARBALL=$HOME/downloads/$MYSQL5_6_12.tar.gz
if [ ! -f $TARBALL ]
then
echo "$TARBALL not found"
exit 1
fi
export SANDBOX_BINARY=$HOME/usr/local/bin/
if [ ! -d $SANDBOX_BINARY ]
then
mkdir -p $SANDBOX_BINARY
fi
if [ ! -d $SANDBOX_BINARY/5.6.12 ]
then
cd $SANDBOX_BINARY
tar -xzf $TARBALL
if [ ! -d $MYSQL5_6_12 ]
then
echo "error expanding $TARBALL"
exit 1
fi
mv $MYSQL5_6_12 5.6.12
fi
make_replication_sandbox --how_many_slaves=2 5.6.12
// Setup repl, start
[ushastry@cluster-repo ~]$ ./5612.sh
executing "clear" on slave 1
executing "clear" on slave 2
executing "clear" on master
installing and starting master
installing slave 1
installing slave 2
starting slave 1
...... sandbox server started
starting slave 2
....... sandbox server started
initializing slave 1
initializing slave 2
replication directory installed in $HOME/sandboxes/rsandbox_5_6_12
master [localhost] {root} ((none)) > show slave hosts;
+-----------+----------+-------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+----------+-------+-----------+--------------------------------------+
| 101 | SBslave1 | 19078 | 1 | 3ce49fc3-f080-11e2-9dca-bc5b92cb43ef |
| 102 | SBslave2 | 19079 | 1 | 3fb7ce91-f080-11e2-9dcb-bf68c9b9452d |
+-----------+----------+-------+-----------+--------------------------------------+
2. Now, change Server_id=101 to Server_id=102 on the first slave, and restart that instance.
[ushastry@cluster-repo ~]$ more /data/ushastry/sandboxes/rsandbox_5_6_12/node1/my.sandbox.cnf|grep -i server-id
server-id=101
[ushastry@cluster-repo ~]$ vi /data/ushastry/sandboxes/rsandbox_5_6_12/node1/my.sandbox.cnf
[ushastry@cluster-repo ~]$ more /data/ushastry/sandboxes/rsandbox_5_6_12/node1/my.sandbox.cnf|grep -i server-id
server-id=102
[ushastry@cluster-repo ~]$
[ushastry@cluster-repo ~]$ sandboxes/rsandbox_5_6_12/node1/restart
.. sandbox server started
3. Run SHOW SLAVE HOSTS:
master [localhost] {root} ((none)) > show slave hosts;
+-----------+----------+-------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+----------+-------+-----------+--------------------------------------+
| 102 | SBslave1 | 19078 | 1 | 3ce49fc3-f080-11e2-9dca-bc5b92cb43ef |
+-----------+----------+-------+-----------+--------------------------------------+
1 row in set (0.00 sec)
Indeed, second slave(SBslave2) that never changed is now the missing one ^^.
[19 Jul 2013 19:40]
Chris Calender
To add more bit to the issue: "second slave(SBslave2) that never changed is now the missing one ^^." If you correct the 1st slave back to a distinct value and restart it, you'll see the new slave appears in SHOW SLAVE HOSTS, and the original slave that never changed does not re-appear. You need to restart the original for it to re-appear. Just kind of strange overall for the one that never changed to the be the one that "disappears" forever.
[13 Jan 2017 0:19]
Ceri Williams
As this issue is still present (5.7), I thought that I'd add that it is not specific to server-id but seems related to the thread. # Server info > select @@hostname, @@report_host, @@server_id, @@server_uuid) db1 db1 1 21c6727f-96e1-11e6-8e1e-525400593d78 db2 db1 2 e429a553-96e2-11e6-8df1-525400b7fe18 db3 db1 3 6ef9cf74-d858-11e6-8e52-525400b7fe19 # Master processlist > select user, host, command from information_schema.processlist where user = "repl") repl 10.0.1.15:47552 Binlog Dump repl 10.0.1.14:54608 Binlog Dump # Master slave hosts > show slave hosts 3 db1 3306 1 6ef9cf74-d858-11e6-8e52-525400b7fe19 I have not been able to get it to repeat, but I did see that it was possible to have 0 rows returned for SHOW SLAVE HOSTS and still see a slave connected in the processlist: # Stop 10.0.1.15 > stop slave # Master slave hosts (zero rows) > show slave hosts # Master processlist (1 slave shows) > select user, host, command from information_schema.processlist where user = "repl"' repl 10.0.1.14:54608 Binlog Dump
