binlog-do-db 和 replicate-do-db 有什么区别?

What is the difference between binlog-do-db and replicate-do-db?

我是 MySQL Master-Slave 的初学者。

并且我已经阅读了两个教程。

  1. How to Setup MariaDB (Master-Slave) Replication

  2. Setup MariaDB Master-Slave Replication


在第一个教程中。它让我

[mysqld] Master section

log-bin

server_id=1

replicate-do-db=employees

bind-address=192.168.0.18


[mysqld] SLAVE Section

server_id=2
replicate-do-db=employees

但是在第二个教程中,它告诉我

[mysqld] Master
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=unixmen

[mysqld] Slave
server-id = 2
replicate-do-db=unixmen

为什么我应该锁定表,然后我的sql转储 sql,然后导入它?

FLUSH TABLES WITH READ LOCK;

免责声明:为了让事情简单和不混淆,我讨论了一个简单的 1 Master - 1 Slave 设置。没有锁链,没有师父之类的...

你的第一个教程写错了,应该是binlog-do-db那里

复制是这样工作的。

master 将所有事务写入其二进制日志。
slave 从 masters 二进制日志中读取事务并将它们写入其中继日志。
只有在那之后,从服务器才会执行其中继日志中的语句。

binlog-do-db 使 master 只将指定 DB 的语句写入其二进制日志。

replicate-do-db 使从服务器只从中继日志中读取针对指定 DB 的语句。

replicate-do-db 对 master 没有影响,因为没有可读取的中继日志。


LOCK TABLES部分是有的,所以数据是一致的。防止在备份数据的过程中修改master上的数据。

您从从属服务器上的这个备份恢复数据库,因为当您设置从属服务器时,您并不总是从新开始。因此,您只需在两台服务器上提供相同的数据基础,然后告诉从服务器主服务器所在的事务坐标,瞧,您就可以开始复制了。您也可以在转储数据后解锁 master。只要确保在二进制日志中的语句由于日志轮换而丢失之前及时启动从站。