【MySQL】关于何时使用start slave和start slave user=‘’ password=‘’
这个问题是我在配置三个服务器的复制拓扑时,一开始没有给复制用户 repl 创建密码,搭建好循环拓扑后,给server1的复制用户通过 ALTER USER USER() IDENTIFIED BY 'oracle' 设置了密码,然后同步给了server2和server3。
这时server2突然关闭,我使用 START SLAVE 竟然无法开启 slave2,IO 线程表现为 Connecting 状态,而使用 START SLAVE USER='repl' PASSWORD='oracle' 开启时,server2恢复了正常。
查询资料得到:
slave 通过 io 线程与master建立连接,读取其二进制日志并写入自己的中继日志,连接信息时通过 CHANGE MASTER TO 命令配置的,并存储在slave的系统表中。
当更改 repl 的密码后,slave上的 CHANGE MASTER TO 配置不会自动更新,slave尝试使用之前的无密码配置连接master,就会导致认证失败。
而 START SLAVE USER='repl' PASSWORD='oracle' 提供了一种临时覆盖机制,允许slave在启动复制时使用新的用户名和密码,无需重新允许 CHANGE MASTER TO。