暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
6.数据迁移.docx
14
117页
0次
2025-03-22
50墨值下载
MySQL 迁移 MySQL
表空间传输
日常工作中经常遇到将一个 InnoDB 表从一个实例,移动或者复制到另一个实例,在 5.6 之前
常用的是通过物理或者逻辑备份来实现。在 MySQL 5.6.6 版本中引入了一种基于表空间快速
迁移的功能,我们可以直接将表空间复制到另一台服务器数据库中。这对于大表来说是一个非
常有用的方法。可传输表空间机制比任何其他导出和导入表的方法都快,因为只需要使用传统
Linux 命令(cpscprsync)将数据文件复制到目标位置即可。
但是,这种方法的使用也有一定的局限性:
1. 需要到服务器上拷贝数据,在用户无法登录数据库主机的场景下无法使用
2. 必须是全表拷贝,不能只拷贝部分数据;
3. 由于是通过拷贝物理文件实现的,源表和目标表都是使用 InnoDB 引擎时才能使用。
迁移步骤
1.在目标库上创建空表
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci;
2.删除.idb 文件
在目标库上创建空表后,建产生 1 个文件(.ibd)。需要删除 .ibd 文件,以便从目标库复制表
空间过来
[root@localhost testdb]# ll
总用量 112
-rw-r----- 1 mysql mysql 114688 3 11 09:52 users.ibd
mysql> alter table users discard tablespace;
Query OK, 0 rows affected (0.13 sec)
[root@localhost testdb]# ll
总用量 0
3.准备源表
确保 users 表的更新已经刷新到磁盘,以便在服务器运行时制作表副本,在源库中执行:
mysql> flush table users for export;
Query OK, 0 rows affected (0.00 sec)
执行该命令后,将在 MySQL 数据目录中创建 1 个附加文件(.cfg
-rw-r----- 1 mysql mysql 781 3 11 09:45 users.cfg
-rw-r----- 1 mysql mysql 114688 3 10 16:14 users.ibd
4..ibd .cfg 文件从源库复制到目标库
scp -r users.cfg users.ibd root@192.168.1.103:/data/testdb
5.在源库上解锁表
将表文件复制到目标服务器后,需要在源库上解锁表以允许对其操作
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
6.修改表文件属主
修改表空间文件属主为 mysql
[root@localhost ~]# chown -R mysql:mysql /data/testdb
[root@localhost ~]# ll /data/testdb
总用量 116
-rw-r----- 1 mysql mysql 781 3 11 09:56 users.cfg
-rw-r----- 1 mysql mysql 114688 3 11 09:56 users.ibd
7.导入表空间
在目标数据库运行一下命令进行导入
mysql> alter table users import tablespace;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from users;
+----+----------+------+
| id | name | age |
+----+----------+------+
| 1 | zhangsan | 18 |
| 2 | lisi | 20 |
| 3 | wangwu | 22 |
| 4 | zhaoliu | 24 |
| 5 | sunqi | 26 |
+----+----------+------+
5 rows in set (0.00 sec)
迁移过程与正常的 InnoDB 表空间导出/导入过程非常相似。注意:必须将 .cfg 文件复制到目
标服务器。
总结
在实际环境中,对部分大表进行迁移,业务中断时间短,使用 mysqldump 进行导出,然后重
新导入到其它环境,效率缓慢;则可以采用传输表空间方法,提高效率缩短时间,满足业务需
求。
Navicat
Navicat 数据传输、数据同步和结构同步的区别
1. 数据传输:表数据和结构一起同步
2. 数据同步:表数据同步、表结构不同步
3. 结构同步:表数据不同步、表结构同步
注意: 无论是数据传输、数据同步、结构同步都容易造成同步后的表之前数据丢失。
结构同步
1、在工具 -> 结构同步中打开结构同步界面。
2、在结构同步界面,先选择源数据库和目标数据库。选择完后,点击“比对”按钮。
3、在比对界面中,我们需要选择要同步的表对象。
of 117
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。