V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rr41ns
V2EX  ›  问与答

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

  •  
  •   rr41ns · 2019-12-30 15:29:56 +08:00 · 1360 次点击
    这是一个创建于 1790 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试代码如下:

    $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

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

    何解?????

    第 1 条附言  ·  2019-12-30 18:41:35 +08:00
    脑壳痛。。

    楼主目前把内网域名的 HOST 改成对应的内网 IP 了。。没有问题了。。


    所以问题还是出在内网域名 DNS 解析上。。


    明日再战。。。
    14 条回复    2020-01-03 10:55:51 +08:00
    rr41ns
        1
    rr41ns  
    OP
       2019-12-30 16:15:44 +08:00
    H
    rr41ns
        2
    rr41ns  
    OP
       2019-12-30 16:15:47 +08:00
    E
    rr41ns
        3
    rr41ns  
    OP
       2019-12-30 16:15:51 +08:00
    L
    rr41ns
        4
    rr41ns  
    OP
       2019-12-30 16:15:54 +08:00
    P
    imnpc
        5
    imnpc  
       2019-12-30 16:20:04 +08:00   ❤️ 1
    不是要加安全组白名单过去才能连接吗?
    rr41ns
        6
    rr41ns  
    OP
       2019-12-30 16:25:20 +08:00
    @imnpc 感谢第一条回复啊。。已经加了。。
    不是一直连不上,失败和成功的概率是 1 比 1。。
    julyclyde
        7
    julyclyde  
       2019-12-30 17:47:20 +08:00
    @imnpc 这个提示信息显然不是安全组的问题啊
    julyclyde
        8
    julyclyde  
       2019-12-30 17:47:38 +08:00   ❤️ 1
    @rr41ns 你用两个 dns 分别解析一下那个数据库的域名试试
    zhs227
        9
    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
        10
    rr41ns  
    OP
       2019-12-30 18:40:30 +08:00
    @zhs227 框架有提示致命错的,就是 unknown 那个...
    opengps
        11
    opengps  
       2019-12-30 19:06:03 +08:00
    首先,你既然有内网,就不应该选择外网。
    另外你查查你 ecs 里用了谁家的 dns,既然选了阿里云的 2 个产品,那就一路用阿里云的 dns 和配套会少走弯路。另外,局域网配置 hosts 可以提高稳定性,但也有一定概率带来麻烦,因为 rds 是个“智能调度”的,说不准哪天后端某些硬件出现异常,会自动修复导致内网 ip 变动
    zhs227
        12
    zhs227  
       2019-12-30 19:09:11 +08:00
    unknown 就是地址没解析成功导致的。直接 SOF 高分答案,写的很好。
    https://stackoverflow.com/questions/8938689/unknown-mysql-server-host
    rr41ns
        13
    rr41ns  
    OP
       2019-12-31 10:07:26 +08:00
    @zhs227
    @opengps
    说的都对。。

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

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

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

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

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

    脑壳疼。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1823 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:32 · PVG 00:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.