描述
在做mysql主从复制配置两台mysql时,从节点的my.cnf配置为:
[mysqld]
datadir = /usr/local/mysql/slave1/data
character-set-server = utf8
lower-case-table-names = 1
# 主从复制-从机配置# 从服务器唯一 ID
server-id = 2
# 启用中继日志
relay-log = mysql-relay
其中server-id = 2
为配置从节点必须配置的,但是启动mysql使用show slave status;
命令发现,状态异常,使用show variables like 'server_id';
发现server_id为默认的1。
查询docker容器日志docker logs mysql-slave-1 | grep server-id
发现出现警告
[Warning] World-writable config file ‘/etc/mysql/my.cnf’ is ignored.
说明mysql启动时跳过了读取该配置文件的过程。
原因及解决方式
跳过读取配置文件的原因是my.cnf给的权限太搞了,mysql担心这种文件被其他用户恶意修改,所以选择了跳过。具体查看方式可以进入容器docker exec -it mysql-slave-1 /bin/bash
,后查看权限ls -l /etc/mysql/my.cnf
,可以查看到该文件权限为777,。
解决的方式就是将该文件设置为644权限,chmod 644 /etc/mysql/my.cnf
.
修改后重启重启即可,docker restart mysql-slave-1
。