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

有没有办法将一台没有 root 权限的服务器上的 mysql 数据库同步到另一台服务器?

  •  
  •   gdtv · 2015-04-06 18:54:34 +08:00 · 2356 次点击
    这是一个创建于 3519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器A没有操作系统root权限,不能登录SSH,有mysql的root账号,有phpmyadmin管理地址,数据库大小2G,数据库不能远程连接,上面运行着apache+php+mysql。
    服务器B有所有权限。
    A和B不在同一个机房。
    有没有办法快速,注意要快速,将A数据库转移,或者备份、同步到B上面?要求10分钟内完成。

    25 条回复    2015-04-08 17:49:02 +08:00
    msg7086
        1
    msg7086  
       2015-04-06 18:56:56 +08:00 via iPhone   ❤️ 1
    mysql账号能从隔壁机器登录吗
    如果不能的话,那唯一的访问途径就只有php了。弄个webshell?不行就只能硬搞了。
    gdtv
        2
    gdtv  
    OP
       2015-04-06 18:58:23 +08:00
    @msg7086 不能从隔壁机登录A服务器上的mysql,因为A服务器的iptables没有开启3306端口。
    msg7086
        3
    msg7086  
       2015-04-06 19:00:33 +08:00 via iPhone
    那b上开个浏览器导出保存呗。
    ETiV
        4
    ETiV  
       2015-04-06 20:21:22 +08:00   ❤️ 2
    没记错的话 phpMyAdmin 有一个远程同步的功能, 几年前同步本地和线上数据表结构用过~

    你在A上创建 A,B 两个 MySQL的服务器的登录, 然后通过这个同步的功能直接从A上同步到B上.

    只需要B上安装MySQL, 和开放 3306 (MySQL和iptables, 记得指定A的IP), B上不需要安装 php/web, phpMyAdmin.
    kn007
        5
    kn007  
       2015-04-06 20:22:36 +08:00
    @ETiV mark
    esile
        6
    esile  
       2015-04-06 21:49:08 +08:00   ❤️ 1
    只能用帝国备份之类的php程序先导出来,你应该有ftp权限的吧。
    gdtv
        7
    gdtv  
    OP
       2015-04-06 22:39:23 +08:00
    @ETiV 找了一晚你说的这个同步功能,最后找到一句说明: “This feature has been removed as of phpMyAdmin 4.0.0. It had many shortcomings.” 晕死。
    gdtv
        8
    gdtv  
    OP
       2015-04-06 22:41:49 +08:00
    @esile 现在就是用帝国备份,但太慢了
    alex321
        9
    alex321  
       2015-04-06 22:42:42 +08:00   ❤️ 1
    B 上安装 phpMyAdmin,root 连接 A,导出;连接 B,恢复 A 的导出数据到 B。
    gdtv
        10
    gdtv  
    OP
       2015-04-06 22:44:46 +08:00
    @alex321 2G的数据库太大了,phpmyadmin无法导出
    gdtv
        11
    gdtv  
    OP
       2015-04-06 22:45:35 +08:00
    @alex321 2G的数据库太大了,phpmyadmin无法导出,另外A的mysql数据库不支持远程连接
    yangqi
        12
    yangqi  
       2015-04-06 22:57:17 +08:00
    A服务器不能ssh? 不需要root, 只要能ssh上,方法还是很多的,mysqldump可以导出数据
    Puteulanus
        13
    Puteulanus  
       2015-04-06 22:58:28 +08:00   ❤️ 1
    参考下多备份的数据库备份程序吧。。PHP的
    针对PHP空间不能远程连接的数据库进行远程备份,应用场景和你基本一样
    alex321
        14
    alex321  
       2015-04-06 23:07:37 +08:00
    @gdtv sorry,我没仔细看你的场景。。为毛会有这么奇怪的限制。
    本来允许 ssh 还可以 mysqldump 什么的玩一下,现在就只能利用 php 程序处理了。
    ETiV
        15
    ETiV  
       2015-04-06 23:31:48 +08:00 via iPhone   ❤️ 1
    remove了的话,你在B上装phpmyadmin4.0以前的版本?
    kookxiang
        16
    kookxiang  
       2015-04-07 10:44:03 +08:00 via Android   ❤️ 1
    mysqldump可以用不?dump然后加密压缩放web服务里,另一台直接wget解压
    gdtv
        17
    gdtv  
    OP
       2015-04-07 13:46:13 +08:00
    @ETiV 在B装了个旧版本的phpmyadmin试了远程同步,显示同步完成,但只同步了一部分表,还有一些没同步,可能就是所谓的"It had many shortcomings"吧。。。。
    gdtv
        18
    gdtv  
    OP
       2015-04-07 13:46:50 +08:00
    @kookxiang mysqldump是要登录系统操作吧,现在是登录不了
    kookxiang
        19
    kookxiang  
       2015-04-07 14:37:19 +08:00 via Android   ❤️ 1
    @gdtv 有mysql的root就能调用吧,实在不行用php导出吧
    ETiV
        20
    ETiV  
       2015-04-07 14:55:07 +08:00   ❤️ 1
    显示同步完成,但只同步了一部分表.
    是不是超过了 PHP 的最大执行时间? 或者最大执行内存的限制. 在B上临时调大一些, 等下记得调回去.

    还有一些没同步
    把没同步的单独选中重新跑一次呗?
    gdtv
        21
    gdtv  
    OP
       2015-04-07 16:01:17 +08:00
    @kookxiang 有mysql的root,但登录不了服务器操作系统,在哪里执行mysqldump命令呢?
    gdtv
        22
    gdtv  
    OP
       2015-04-07 16:02:18 +08:00
    @ETiV 如果超过了PHP最大执行时间,应该会php error,但没有显示任何错误,因为有几百个表,所以一个一个表核对哪些导出了哪些没导出,比较麻烦。
    ETiV
        23
    ETiV  
       2015-04-07 16:53:24 +08:00   ❤️ 1
    php 默认不在页面上显示 error , 你可能需要设置一下, 才能展现到页面上.
    ----

    如果你能从 B 用 phpmyadmin 访问到 A, 说明 A 是可以被 B mysqldump 的.

    可以的话, 就每次 dump 一个数据库, 需要先在 B 上 create 对应的数据库:

    mysqldump -uroot -p -h{IP_OF_A} {DB_NAME} | mysql -uroot -p {DB_NAME}
    gdtv
        24
    gdtv  
    OP
       2015-04-07 16:58:17 +08:00
    @ETiV A服务器会显示php错误,我设置了display_error=On
    从B不能用phpmyadmin访问到A,因为A没有开启3306端口
    wangfeng3769
        25
    wangfeng3769  
       2015-04-08 17:49:02 +08:00 via Android
    找到mysql文件直接同步。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2107 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:01 · PVG 09:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.