当机器配置为使用主机名而不是 IP 地址时,我在使用复制时遇到了一些问题。“skip-name-resolve”关闭。
如果我使用 IP 地址,一切都很好。使用 DNS 名称,一切都会停止。
关于大师
使用以下命令配置复制:
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'slavename.internal.domain' IDENTIFIED BY 'repl_pwd';
在奴隶上
从连接配置如下:
change master to
master_host='mastername',
master_user='repluser',
master_password='repl_pwd',
master_log_file='mastername.000001',
master_log_pos=1;
我得到的错误
启动复制从属服务器时,日志文件显示以下消息:
120127 14:07:48 [Note] Slave SQL thread initialized, starting replication in log 'mastername.000001' at position 4, relay log './mysql-relay-bin.000001' position: 4
120127 14:07:48 [ERROR] Slave I/O: error connecting to master 'repluser@mastername:3306' - retry-time: 60 retries: 86400, Error_code: 1130
如果我然后尝试使用来自客户端机器的命令行连接:
mysql -h mastername -u repluser -prepl_pwd
我得到错误:
ERROR 1130 (HY000): Host 'the.ip.address.here' is not allowed to connect to this MySQL server
我真的希望有人可以帮助我解决我的域解析问题!!!
忘记这个问题我感觉很糟糕!!!
我已经找到并解决了以下问题。
将 DNS 名称添加到 DNS 时,未创建相应的反向查找。
这导致 MySQL 无法执行从 IP 地址到正确 DNS 名称的反向查找,因此拒绝连接。
因此,我们添加了一组从 IP 地址到 DNS 名称的反向查找,
FLUSH HOSTS;
在所有 MySQL 机器上运行,一切都开始工作了。我们要求所有连接都使用 DNS 名称,因为我们的灾难恢复解决方案位于一个单独的数据中心和一个几乎相同的虚拟机场中,但所有机器的 IP 地址仅稍作修改。如果/当我们完全故障转移到另一个数据中心时,所有软件和通信都将“正常工作”,因为 DNS 解析将始终根据数据中心提供正确的地址。
您只需要注意不要让两个(或更多)名称从同一个 IP 地址反向查找,因为无法保证会返回两个名称中的哪一个 - 有时您的连接会正常工作,而其他时候则不会吨。
希望这可以帮助有同样问题的人!
问候,
戴夫
我不确定你已经尝试了什么,但这里是MySQL 文档的强制性链接,关于 MySQL 将如何解析主机名。具体来说:
我注意到你正在使用
slavename.internal.domain
. 我会确保gethostbyaddr(ip)
从机上解析为slavename.internal.domain
,否则它将无法正常工作。话虽如此,我一直发现域解析很麻烦,而且非常不可靠。因此,我启用
skip-name-resolve
了忽略 DNS 和基于 IP 授权的轻微性能提升。