最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MYSQL表空间迁徙

来源:动视网 责编:小采 时间:2020-11-09 14:02:17
文档

MYSQL表空间迁徙

MYSQL表空间迁徙:MYSQL表空间迁移。 表空间迁移。 有如下原因你可能需要将 InnoDB 表复制到不同的数据库服务器上。 不增加生产负载的情况下生成 一个报表 在一个新的服务器上建立一个和生产上数据相同的表 做一个备份在发生问题或错误操作时用于恢复 快速将数据从一个服务器迁
推荐度:
导读MYSQL表空间迁徙:MYSQL表空间迁移。 表空间迁移。 有如下原因你可能需要将 InnoDB 表复制到不同的数据库服务器上。 不增加生产负载的情况下生成 一个报表 在一个新的服务器上建立一个和生产上数据相同的表 做一个备份在发生问题或错误操作时用于恢复 快速将数据从一个服务器迁


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.

    复制表文件到目标位置

    1. C:\ProgramData\MySQL\MySQL Server 5.6\data\world>mkdir city
    2. C:\ProgramData\MySQL\MySQL Server 5.6\data\world>copy city.* city
    3. city.cfg
    4. city.frm
    5. city.ibd
    6. 3 file(s) copied.
    7. C:\ProgramData\MySQL\MySQL Server 5.6\data\world>cd city
    8. C:\ProgramData\MySQL\MySQL Server 5.6\data\world\city>dir
    9. Volume in drive C has no label.
    10. Volume Serial Number is D0FA-F7A0
    11. Directory of C:\ProgramData\MySQL\MySQL Server 5.6\data\world\city
    12. 10/10/2013 10:58 AM .
    13. 10/10/2013 10:58 AM ..
    14. 10/10/2013 10:53 AM 582 city.cfg
    15. 10/10/2013 10:53 AM 8,710 city.frm
    16. 10/10/2013 10:53 AM 475,136 city.ibd
    17. 3 File(s) 484,428 bytes
    18. 2 Dir(s) 224,676,024,320 bytes free

    在目标库上删除可能存在的同名表空间。

    1. 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表空间迁徙:MYSQL表空间迁移。 表空间迁移。 有如下原因你可能需要将 InnoDB 表复制到不同的数据库服务器上。 不增加生产负载的情况下生成 一个报表 在一个新的服务器上建立一个和生产上数据相同的表 做一个备份在发生问题或错误操作时用于恢复 快速将数据从一个服务器迁
    推荐度:
    标签: 空间 迁移 原因
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top