Bug #96589 Incorrect docs: "Replicating Different Databases to Different Slaves"
Submitted: 19 Aug 2019 17:23 Modified: 29 Aug 2019 14:33
Reporter: Daniel Lo Nigro Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:8.0 OS:Any
Assigned to: MySQL Verification Team CPU Architecture:Any

[19 Aug 2019 17:23] Daniel Lo Nigro
Description:
Trying to follow the docs at https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-partitioning.html results in errors like this:

[ERROR] [MY-013175] [Repl] Slave SQL for channel '': Error in Xid_log_event: Commit could not be completed, 'The use of replication filters with XA transactions is not supported, and can lead to an undefined state in the replication slave.', Error_code: MY-013175 

[Warning] [MY-010584] [Repl] Slave: The use of replication filters with XA transactions is not supported, and can lead to an undefined state in the replication slave. Error_code: MY-013175 

[ERROR] [MY-010586] [Repl] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'binlog.000007' position 28430722

None of my code is using "XA transactions" directly, however it seems like newer versions of InnoDB do not allow this functionality to be disabled. If this is the case, the documentation page should be a warning added to the top stating that this functionality (replicating different databases to different slaves) is not supported when using InnoDB.

How to repeat:
Use "replicate_do_db" or "replicate_wild_do_table" setting while InnoDB is in use
[21 Aug 2019 7:01] MySQL Verification Team
Hi,

Can you please show me your my.cnf on master and slave sides so I can check this out as I don't see anything wrong on the document you linked.

thanks
Bogdan
[26 Aug 2019 22:27] Daniel Lo Nigro
This is what the config looked like for the slave:

_________________

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log

bind-address            = 127.0.0.1,10.123.1.11

mysqlx_bind_address=127.0.0.1

server-id=2
replicate_wild_do_table=dns.%

_________________

The master is basically just the stock MySQL config. All databases are using InnoDB tables.

Replication was configured as per the following document: https://dev.mysql.com/doc/refman/8.0/en/replication-howto.html ("17.1.2 Setting Up Binary Log File Position Based Replication")
[29 Aug 2019 14:33] MySQL Verification Team
Not able to reproduce this with 8.0.15 nor 8.0.16

slave config:

[mysqld]
mysqlx_bind_address=127.0.0.1
mysqlx-port=30619
mysqlx-socket=/tmp/mysqlx-30619.sock

report-host = node-3
report-port=20619
server-id=300

relay-log-index=mysql-relay
relay-log=mysql-relay
log-bin=mysql-bin

replicate_wild_do_table=bug96589.%