zoukankan      html  css  js  c++  java
  • MySQL 表空间传输

    聊到MySQL数据迁移的话题,表空间传输时一个很实用的方法。

    在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这意味着你现在可以备份单个数据库或表;由于Percona Server 5.6的出现,innodb_import_table_from_xtrabackup是过时的Percona Server实现Oracle MySQL的可移动表空间的功能,就是在服务器之间复制的表空间的能力(table.ibd)。让我展示通过一个例子,我将采取选择性表部分备份而不是一个完整的MySQL服务器并且在线恢复它,而不需要关闭MySQL服务器

    下面演示怎么从3307实例迁移一个表空间到3308实例:

    3307 实例的表结构

    root@localhost:mysql3307.sock [sbtest]>show create table sbtest1;
    +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    | Table   | Create Table                                                                                                                                                                                                                                                                       |
    +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    | sbtest1 | CREATE TABLE `sbtest1` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `k` int(11) NOT NULL DEFAULT '0',
      `c` char(120) NOT NULL DEFAULT '',
      `pad` char(60) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      KEY `k_1` (`k`)
    ) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8 |
    +---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1 row in set (0.00 sec)

    把以上表结构在3308 实例创建 ,这里忽略

    在3308实例上discard 表空间

    root@localhost:mysql3308.sock [sbtest]>alter table sbtest1 discard tablespace;
    Query OK, 0 rows affected (0.16 sec)
    

    在3307实例上导出表空间

    root@localhost:mysql3307.sock [sbtest]>flush table sbtest1 for export;
    

     可以看到,执行命令之后,innodb_buffer_pool中的脏页刷新到了磁盘。并产生了一个 cfg文件.
    在命令执行之后,该表只能只读访问.


    开启另外一个终端,将该表的ibd文件,cfg文件,TRG文件(记录触发器信息)拷贝到目标实例的数据库中
    然后源实例执行 unlock tables; 

    最后在目标端import

    root@localhost:mysql3308.sock [sbtest]>alter table sbtest1 import tablespace;
    

      

  • 相关阅读:
    C++数据结构与算法(第4版) 完整版 高清pdf扫描版[193MB] 下载
    Streams AQ: enqueue blocked on low memory等待事件导致expdp导出缓慢问题
    Unity中使用 UGUI Toggle 和 Toggle Group 做单选列表
    unity UGUI动态滑动列表
    在Unity 中调用打印机来打印图片
    Unity3D中读取CSV文件
    unity 获取网络时间和本地时间
    win10右击无法新建文件,只能新建文件夹和快捷方式
    python笔记二、基础知识
    python笔记一、部分插件的作用及安装方法
  • 原文地址:https://www.cnblogs.com/rayment/p/7768577.html
Copyright © 2011-2022 走看看