MySQL OCP888题解064-通过FLUSH TABLE备份表

文章目录

  • 1、原题
    • 1.1、英文原题
    • 1.2、中文翻译
    • 1.3、答案
  • 2、题目解析
    • 2.1、题干解析
    • 2.2、选项解析
  • 3、知识点
    • 3.1、知识点1:通过FLUSH TABLE+拷贝文件+导入表空间的方式进行表备份
  • 4、总结

1、原题

1.1、英文原题

MySQL Server is configured with innodb_file_per_table enabled. The table mydata has been created and populated with data. You will be exporting this table to another server.
Mysql> FLUSH TABLES mydata FOR EXPORT;
Query OK, 0 rows affected (0.00 sec)
Before an UNLOCK TABLES is executed, which three components need to be copied to successfully export the mydata table?
A、mydata.frm
B、mydata.err
C、mydata.idb
D、mydata.tar.gz
E、ibdata*
F、mydata.export
G、ib_logfile*
H、mydata.cfg

1.2、中文翻译

MySQL Server配置为启用了innodb_file_per_table。表mydata已经创建并填充了数据。您将要将此表导出到另一台服务器。
Mysql> FLUSH TABLES mydata FOR EXPORT;
Query OK, 0 rows affected (0.00 sec)
在执行UNLOCK TABLES之前,需要复制哪三个组件才能成功导出mydata表?
A、mydata.frm
B、mydata.err
C、mydata.idb
D、mydata.tar.gz
E、ibdata*
F、mydata.export
G、ib_logfile*
H、mydata.cfg

1.3、答案

A、C、H

2、题目解析

2.1、题干解析

本题考察使用FLUSH TABLE+拷贝文件进行表备份的方法。

2.2、选项解析

3、知识点

3.1、知识点1:通过FLUSH TABLE+拷贝文件+导入表空间的方式进行表备份

以下描述了通过FLUSH TABLE+拷贝文件+导入表空间的方式进行表备份的全过程:

  1. 在目标实例上,创建一个与你打算导入的表有相同定义的表。(你可以使用SHOW CREATE TABLE语法获得表的定义。)如果表的定义不匹配,当你尝试导入操作时,会报告一个模式不匹配的错误。
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT) ENGINE=INNODB;
  1. 在目标实例上,丢弃你刚刚创建的表的表空间。(在导入之前,你必须丢弃接收表的表空间)。
mysql> ALTER TABLE t1 DISCARD TABLESPACE;
  1. 在源实例上,运行FLUSH TABLES …FOR EXPORT来静止你打算导入的表,这样该表只允许有只读事务。当FLUSH TABLES …FOR EXPORT运行时,InnoDB会在表的模式目录下生成一个.cfg元数据文件。这个.cfg文件包含元数据,在导入操作中用于模式验证。
mysql> USE test;
mysql> FLUSH TABLES t1 FOR EXPORT;
  1. 将.ibd文件和.cfg元数据文件从源实例复制到目标实例。
$> scp /path/to/datadir/test/t1.{ibd,cfg} destination-server:/path/to/datadir/test
  1. 在源实例上,使用UNLOCK TABLES来释放由FLUSH TABLES获得的锁 …FOR EXPORT 语句获得的锁。UNLOCK TABLES操作也删除了.cfg文件。
mysql> USE test;
mysql> UNLOCK TABLES;
  1. 在目标实例上,导入表空间。
mysql> USE test;
mysql> ALTER TABLE t1 IMPORT TABLESPACE;

官方参考文档

4、总结

  1. 可以通过FLUSH TABLE+拷贝文件+导入表空间的方式进行表备份。方法是第一步在目标服务器上创建空表、丢弃表空间;第二步在源服务器运行FLUSH TABLES …FOR EXPORT,将该表变为只读状态。将.ibd和.cfg文件从源服务器拷贝到目标服务器;第三步是在源服务器运行UNLOCK TABLES来释放由FLUSH TABLES获得的锁;第四步是在目标服务器运行导入表空间的命令。这四步即可完成将某一张表从源服务器备份到目标服务器。

你可能感兴趣的:(MySQL,mysql,数据库,服务器,ocp,sql)