我一直在为我的一个新项目尝试 MySQL 复制。
我正在使用基于行复制。
我对复制 do_db它将写入从服务器的 my.cnf 中,以筛选需要在从服务器上复制的数据库。
主服务器上没有 binlog_do_db,即主服务器记录每个数据库的每次更改。主服务器有以下数据库:
- 数据库1
- 数据库
我的复制设置为 replicate_do_db=db2 以仅复制 1 个数据库。
我的困惑是:假设数据库1主服务器上每天的写入量为 30GB,那么这 30GB 的新数据是否也会发送给从服务器,然后从服务器会对其进行过滤?或者从服务器是否只询问 db2 的数据,而不将 db1 的任何数据传输给从服务器?
答案1
不幸的是,MySQL 仅为实例中运行的所有数据库创建一个二进制日志,因此从属服务器将传输整个二进制日志,然后根据复制执行语句过滤它运行的语句。您可以通过为两个不同的数据库运行多个 MySQL 实例来解决这个问题,但这有其自身的缺点和复杂性。