阿里云 ECS PDO 连接 RDS,报 Unknown MySQL server host

2019-12-30 15:29:56 +08:00
 rr41ns

测试代码如下:

$pdo = new \PDO("mysql:host=123;dbname=123", "123", "123");

if (!$pdo){

echo("fail");

} else {

echo("sucess");

}

resolv.conf

已经改成:

nameserver 100.100.2.136

nameserver 100.100.2.138

不是一直报错,刷新五六次会有一两次报错。

何解?????

1363 次点击
所在节点    问与答
14 条回复
rr41ns
2019-12-30 16:15:44 +08:00
H
rr41ns
2019-12-30 16:15:47 +08:00
E
rr41ns
2019-12-30 16:15:51 +08:00
L
rr41ns
2019-12-30 16:15:54 +08:00
P
imnpc
2019-12-30 16:20:04 +08:00
不是要加安全组白名单过去才能连接吗?
rr41ns
2019-12-30 16:25:20 +08:00
@imnpc 感谢第一条回复啊。。已经加了。。
不是一直连不上,失败和成功的概率是 1 比 1。。
julyclyde
2019-12-30 17:47:20 +08:00
@imnpc 这个提示信息显然不是安全组的问题啊
julyclyde
2019-12-30 17:47:38 +08:00
@rr41ns 你用两个 dns 分别解析一下那个数据库的域名试试
zhs227
2019-12-30 17:51:35 +08:00
别光用 echo 啊, 直接打错误原因。

```
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
```
rr41ns
2019-12-30 18:40:30 +08:00
@zhs227 框架有提示致命错的,就是 unknown 那个...
opengps
2019-12-30 19:06:03 +08:00
首先,你既然有内网,就不应该选择外网。
另外你查查你 ecs 里用了谁家的 dns,既然选了阿里云的 2 个产品,那就一路用阿里云的 dns 和配套会少走弯路。另外,局域网配置 hosts 可以提高稳定性,但也有一定概率带来麻烦,因为 rds 是个“智能调度”的,说不准哪天后端某些硬件出现异常,会自动修复导致内网 ip 变动
zhs227
2019-12-30 19:09:11 +08:00
unknown 就是地址没解析成功导致的。直接 SOF 高分答案,写的很好。
https://stackoverflow.com/questions/8938689/unknown-mysql-server-host
rr41ns
2019-12-31 10:07:26 +08:00
@zhs227
@opengps
说的都对。。

现在怀疑是阿里云 DNS 解析的问题。。内网域名连接数据库,时不时报 unknown,改成内网 IP 则没有问题了。

所以还是 DNS 的问题。但是 DNS 已经改成阿里云的文档中的配置了。

所以接下来抓抓包排查下问题在哪里。。

谢谢二位大佬~
rr41ns
2020-01-03 10:55:51 +08:00
@zhs227
@opengps
@zhs227
@imnpc
反馈一下结果。。 今天 OSS 内网域名也出解析问题了,快崩溃了,重启了 FPM,一切不正常都没了。。

虽然报错来看是 DNS 解析的问题,但是 问题还是在 PHP 这里。。

脑壳疼。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/633587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX