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

gcl*_*ove 3 mysql master-slave mariadb

我是MySQL Master-Slave的初学者.

我已经阅读了两个教程.

  1. 如何设置MariaDB(主从)复制

  2. 设置MariaDB主从复制


在第一个教程中.它让我这样

[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
Run Code Online (Sandbox Code Playgroud)

但在第二个教程中,它向我展示了这一点

[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
Run Code Online (Sandbox Code Playgroud)

为什么我应该LOCK TABLES和mysqldump sql,然后导入它?

FLUSH TABLES WITH READ LOCK;
Run Code Online (Sandbox Code Playgroud)

fan*_*nts 16

免责声明:为了让事情变得简单和不混乱,我谈到了一个简单的1 Master-1 Slave设置.没有锁链,没有主人,或者其他......

你的第一个教程是错的,它应该是binlog-do-db.

复制就是这样的.

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

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

replicate-do-db 使slave只读取中继日志中的语句,这些语句用于指定的DB.

replicate-do-db 对主设备没有影响,因为没有要读取的中继日志.


LOCK TABLES部分是存在的,这样的数据是一致的.它可以防止在备份数据仍在进行过程中修改主服务器上的数据.

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