IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用federated引擎在不同服务器间转移mysql表

淘宝数据平台与产品部官方博客 tbdata.org 2011-04-02 14:14:45 累计浏览 1,903 次
本机暂存

    假设一个场景:在某一天,我需要将my01上的某些表转移到另一台机器my02上,都有哪些方法可以实现?至于转移的目的可能有很多,比如my01磁盘不够了,我对DB进行拆分;比如用性能更好(差)的my02代替my01;比如线上环境与线下环境进行数据备份….

    针对这个问题,你肯定会马上想出下面的方法:

  • 从my01上SELECT出来,保存到一个文本文件里,再INSERT到my02上去;
  • 如果是myisam表,直接从my01将文件scp到my02上去;
  •     第一种方法可行,但是存在两次数据落地(my01->本地磁盘,本地磁盘->my02),并且在转移过程中,存在字符转义(不可见字符)的情况,可能导致数据不一致情况出现。

        第二种方法再好不过了,但假如这个转移表的需求是一个日常的工作,生产环境的mysql服务器出于安全考虑又不允许我们scp,或者这个表不是myisam的,那就行不通了。

        那么,我们用federated表来试试吧。你应该想到了,我是这么做的:

  • 在my02上建立一个federated表,connection指向my01的待转移表;
  • 在my02上执行下列SQL:
    INSERT INTO 新表 SELECT * FROM federated表
  • 在my02上DROP掉federated表,至此,工作完成。
  •     不过,mysql在编译安装时默认并没有包含federated引擎,并且即使安装了,启动mysql服务的时候也需要额外增加参数才能使用federated表。我相信很少有生产环境满足这两个条件。不过,为了用得爽,做一些改变又何乐而不为呢?

    同分类推荐文章

    1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
    2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
    3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

    查看更多 数据库 文章 →

    建议继续学习

    1. 用Hyer来进行网站的抓取 (累计阅读 158,253)
    2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,401)
    3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
    4. Mysql监控指南 (累计阅读 21,352)
    5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
    6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,058)
    7. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
    8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,909)
    9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,709)
    10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,693)