热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql表空间传输_mysql之表空间传输

说明:MySQL(5.6.6及以上),innodb_file_per_table开启。1.1.操作步骤:0.目标服务器创建相同表结构1.目

说明:MySQL(5.6.6及以上),innodb_file_per_table开启。

1.1. 操作步骤:

0. 目标服务器创建相同表结构

1. 目的服务器: ALTER TABLE t DISCARD TABLESPACE;

2. 源服务器 : FLUSH TABLES t FOR EXPORT;

3. 从源服务器上 拷贝t.ibd, t.cfg文件到目的服务器

4. 源服务器: UNLOCK TABLES;

5. 目的服务器: ALTER TABLE t IMPORT TABLESPACE;

1.2. 演示

将多实例的 [mysql5711] 中 burn_test 库下的test_purge表 ,传输到 [mysql57112]中 burn_test2 库下的test_purge表

1.2.1. 准备工作

1. 在 目标服务器 上创建表空间

-- 源服务器 [mysql5711]

mysql> select * from burn_test.test_purge;

+----+------+

| a | b |

+----+------+

| 1 | 10 |

| 3 | 30 |

| 4 | 40 |

| 5 | 50 |

| 6 | 60 |

| 7 | 70 |

| 8 | 80 |

| 10 | 100 |

+----+------+

8 rows in set (0.01 sec)

-- 目标服务器 [mysql57112]

--

-- test_purge在 目标服务器 上不存在,先创建该表

mysql> CREATE TABLE `test_purge` (

`a` int(11) NOT NULL AUTO_INCREMENT,

`b` int(11) DEFAULT NULL,

PRIMARY KEY (`a`),

UNIQUE KEY `b` (`b`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

Query OK, 0 rows affected (0.16 sec)

2. 创建完成后进行检查

#

# 目标服务器

#

[[email protected] burn_test_2]> ll | grep test_purge

-rw-r-----. 1 mysql mysql 8578 Mar 21 10:31 test_purge.frm # 表结构

-rw-r-----. 1 mysql mysql 57344 Mar 21 10:31 test_purge.ibd # 表空间,需要通过 DISCARD 将表空间文件删除

ALTER TABLE test_purge DISCARD TABLESPACE; 的含义是 保留test_purge.frm 文件, 删除test_purge.ibd

3. 通辟 discard 删除ibd文件

-- 目标服务器

mysql> alter table test_purge discard tablespace;

Query OK, 0 rows affected (0.04 sec)

mysql> show tables;

+-----------------------+

| Tables_in_burn_test_2 |

+-----------------------+

| test_backup1 |

| test_purge |

+-----------------------+

2 rows in set (0.00 sec)

mysql> select * from test_purge;

ERROR 1814 (HY000): Tablespace has been discarded for table ‘test_purge‘

[[email protected] burn_test_2]> ll | grep test_purge

-rw-r-----. 1 mysql mysql 8578 Mar 21 10:31 test_purge.frm

1.2.2. 导出表空间

1. 在源服务器上,通辟 export 命令导出表空间(同时加读锁)

-- 源服务器

mysql> flush table test_purge for export; -- 其实是对这个表加一个读锁

Query OK, 0 rows affected (0.00 sec)

2. 将导出的 cfg文件 和 ibd文件 , 拷贝到目标服务器 的数据库下

#

# 源服务器

#

[[email protected] burn_test]> ll | grep test_purge

-rw-r-----. 1 mysql mysql 462 Mar 21 10:58 test_purge.cfg # export后,多出来的文件,里面保存了一些元数据信息

-rw-r-----. 1 mysql mysql 8578 Mar 4 15:41 test_purge.frm

-rw-r-----. 1 mysql mysql 57344 Mar 5 15:28 test_purge.ibd

[[email protected] burn_test]> cp test_purge.cfg test_purge.ibd /data/mysql_data/5.7.11_2/burn_test_2/ # 拷贝表空间和cfg文件,远程请使用scp(本地多实例演示,这里的库名是不同的)

3. 导出表空间后,尽快解锁

-- 源服务器

mysql> unlock tables; -- 尽快的解锁

Query OK, 0 rows affected (0.00 sec)

注意:一定要先拷贝cfg和ibd文件,然后才能unlock,因为 unlock 的时候, cfg文件会被删除

# 源服务器上的日志

[Note] InnoDB: Stopping purge # 其实stop purge,找个测试的表 for export 即可

[Note] InnoDB: Writing table metadata to ‘./burn_test/test_purge.cfg‘

[Note] InnoDB: Table `burn_test`.`test_purge` flushed to disk

[Note] InnoDB: Deleting the meta-data file ‘./burn_test/test_purge.cfg‘ # unlock table后,该文件自动被删除

[Note] InnoDB: Resuming purge # unlock后,恢复purge线程

4. 在目标服务器上 修改 cfg文件和ibd文件的 权限

#

# 目标服务器

#

[[email protected] burn_test_2]> chown mysql.mysql test_purge.cfg test_purge.ibd

5. 在目标服务器上通辟 import 命令导入表空间

-- 目标服务器

--

mysql> alter table test_purge import tablespace; -- 导入表空间

Query OK, 0 rows affected (0.24 sec)

mysql> select * from test_purge; -- 可以读取到从源服务器拷贝过来的数据

+----+------+

| a | b |

+----+------+

| 1 | 10 |

| 3 | 30 |

| 4 | 40 |

| 5 | 50 |

| 6 | 60 |

| 7 | 70 |

| 8 | 80 |

| 10 | 100 |

+----+------+

8 rows in set (0.00 sec)

# error.log中出现的信息

InnoDB: Importing tablespace for table ‘burn_test/test_purge‘ that was exported from host ‘MyServer‘

注意:

表的名称必须相同 ,经过上述测试,库名可以不同

该方法也可以用于分区表的备份和恢复

原文:https://www.cnblogs.com/andy6/p/9718889.html



推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 我创建了一个新的AWSSSO(使用内部IDP作为身份源,因此不使用ActiveDirectory)。我能够登录AWSCLI、AWSGUI,但 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
author-avatar
三封酒可_894
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有