MYSQL表空间迁移。 表空间迁移。 有如下原因你可能需要将 InnoDB 表复制到不同的数据库服务器上。 不增加生产负载的情况下生成 一个报表 在一个新的服务器上建立一个和生产上数据相同的表 做一个备份在发生问题或错误操作时用于恢复 快速将数据从一个服务器迁
MYSQL表空间迁移。表空间迁移。
有如下原因你可能需要将InnoDB表复制到不同的数据库服务器上。
- 不增加生产负载的情况下生成 一个报表
- 在一个新的服务器上建立一个和生产上数据相同的表
- 做一个备份在发生问题或错误操作时用于恢复
- 快速将数据从一个服务器迁移到另一个服务器
命令FLUSH TABLES ... FOREXPORT 使.ibd文件保持一致的状态。只有文件处于一致的状态我们才可以复制它。这个文件也会同时创建一个扩展名.cfg的二进制的文件。命令ALTER TABLE ...IMPORT TABLESPACE 会使用这个二进制文件对导入过程进行校验。
对于 MySQL 5.6.8版本, ALTER TABLE ...IMPORT TABLESPACE 命令不再一定需要一个扩展名为.cfg二进制文件了。但如果真的没有这个文件我们会收到下面这样一个警告。
Message:InnoDB: IO Read error: (2, No such file or directory) Error opening '.\
test\t.cfg',will attempt to import without schema verification
1row in set (0.00 sec)
这个特性有时候还是很有用的。比如,在模式不匹配的导入过程中,或者在一些需要恢复的情景下,元数据又不能从.ibd文件获得,则这个命令不需要一个扩展名为.cfg的二进制文件就可以导入的特性就很有用。
可迁移表空间的限制:
- innodb_file_per_table 一定要打开成 ON. 在共享表空间上的表不能使用这个特性。
- 当表处理静默状态时,只有只读语句可以使用这张表。
- 当导入表空间时,目的库的页尺寸要和源库的页尺寸相匹配。
- DISCARD TABLESPACE 不支持分区表。如果你在分区表上使用命令 ALTER TABLE ... DISCARD TABLESPACE 你会看到如下错误: ERROR 1031 (HY000): 表引擎没有这个选项。
- DISCARD TABLESPACE 命令不支持有父子关系的表。如果 foreign_key_checks 被设置成1. 在使用命令之前我们可以将这一参数设置为0. foreign_key_checks=0.
- ALTER TABLE ... IMPORT TABLESPACE 命令在导入表时不会检查主外键关系。
- 如果是实时复制的时候, innodb_file_per_table 必需在主服务和从服务上设置为ON。
下面来看一个实例:
在源服务器上我们来对city表进行迁移:
1. mysql> use test;C:\C:\ProgramData\MySQL\MySQLServer 5.6\data\world
2. C:\ProgramData\MySQL\MySQLServer 5.6\data\world>dir
3. Volume in drive C has no label.
4. Volume Serial Number is D0FA-F7A0
5. Directory of C:\ProgramData\MySQL\MySQL Server5.6\data\world
6. 10/08/2013 03:15 PM
7. 10/08/2013 03:15 PM
8. 10/08/2013 03:15 PM 8,710 city.frm
9. 10/08/2013 03:15 PM 273,293 city.MYD
10.10/08/2013 03:15 PM 43,008 city.MYI
11.10/08/2013 03:15 PM 9,172 country.frm
12.10/08/2013 03:15 PM 0 country.MYD
13.10/08/2013 03:15 PM 5,120 country.MYI
14.10/08/2013 03:15 PM 8,702 countrylanguage.frm
15.10/08/2013 03:15 PM 38,376 countrylanguage.MYD
16.10/08/2013 03:15 PM 18,432 countrylanguage.MYI
17.10/08/2013 03:15 PM 61 db.opt
18. 10File(s) 404,874 bytes
19. 2 Dir(s) 224,709,537,792 bytes free
20.mysql> use world
21.Database changed
22.mysql> show tables;
23.+-----------------+
24.| Tables_in_world |
25.+-----------------+
26.| city |
27.| country |
28.| countrylanguage |
29.+-----------------+
30.3 rows in set (0.00 sec)
31.mysql> flush table cityfor export;
32.ERROR 1031 (HY000): Table storage engine for 'city' doesn't havethis option
33.mysql> alter table cityengine=innodb;
34.mysql> flush table cityfor export; --对表加锁。
35.Query OK, 0 rows affected (0.18 sec)
36.
复制表文件到目标位置
- C:\ProgramData\MySQL\MySQL Server 5.6\data\world>mkdir city
- C:\ProgramData\MySQL\MySQL Server 5.6\data\world>copy city.* city
- city.cfg
- city.frm
- city.ibd
- 3 file(s) copied.
- C:\ProgramData\MySQL\MySQL Server 5.6\data\world>cd city
- C:\ProgramData\MySQL\MySQL Server 5.6\data\world\city>dir
- Volume in drive C has no label.
- Volume Serial Number is D0FA-F7A0
- Directory of C:\ProgramData\MySQL\MySQL Server 5.6\data\world\city
- 10/10/2013 10:58 AM
. - 10/10/2013 10:58 AM
.. - 10/10/2013 10:53 AM 582 city.cfg
- 10/10/2013 10:53 AM 8,710 city.frm
- 10/10/2013 10:53 AM 475,136 city.ibd
- 3 File(s) 484,428 bytes
- 2 Dir(s) 224,676,024,320 bytes free
在目标库上删除可能存在的同名表空间。
- mysql> unlock tables;--释放锁。
2. Query OK, 0 rowsaffected (0.07 sec)
3. mysql> alter table city discard tablespace;删除可能存在的同名表空间
4. Query OK, 0 rowsaffected (0.23 sec)
5. mysql> selectcount(*) from city;
6. ERROR 1814 (HY000):Tablespace has been discarded for table 'city'
7. mysql> alter tablecity import tablespace;
8. ERROR 1146 (42S02):Table 'world.city' doesn't exist
9. C:\ProgramData\MySQL\MySQLServer 5.6\data\world\city>copy city.* ..
10.city.cfg
11.city.frm
12.Overwrite ..\city.frm? (Yes/No/All): yes
13.Access is denied.
14.city.ibd
15. 2 file(s) copied.
16.C:\ProgramData\MySQL\MySQL Server 5.6\data\world\city>
17.mysql> alter table city import tablespace;
18.Query OK, 0 rows affected (0.94 sec)
19.mysql> select count(*) from city;
20.+----------+
21.| count(*) |
22.+----------+
23.| 4079 |
24.+----------+
25.1 row in set (0.08 sec)
表空间被成功。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver Mac版
视觉化网页开发工具