我正在寻找导入数据库的最快方法。问题是我使用mysqldump导出数据库。我的数据库在磁盘上超过2 GB。
mysqldump
非常快,但导入需要很长时间。有没有快速导入数据库的方法?
我们尝试实现热备份,但MySQL没有加载。有没有选择如何快速导出导入?这是数据文件夹中数据库文件的简单副本吗?
信息服务器:
操作系统:MS Windows Server 2008
MySQL服务器:MySQL 5.5或MariaDB
表类型:InnoDB(如果是MariaDB - InnoDB插件)
答案 0 :(得分:3)
是的,可以将InnoDB文件从一台服务器复制到另一台服务器。如果每张桌子都有" innodb文件"启用后,它会变得更容易。按照manual中的说明操作:
在源服务器上,创建一个表(如果尚不存在):
的MySQL>使用测试;
MySQL的> CREATE TABLE t(c1 INT)engine = InnoDB;在目标服务器上,创建一个表(如果不存在):
的MySQL>使用测试;
MySQL的> CREATE TABLE t(c1 INT)engine = InnoDB;在目标服务器上,放弃现有的表空间。 (之前 可以导入表空间,InnoDB必须丢弃表空间 附在接收表上。)
的MySQL> ALTER TABLE t DISCARD TABLESPACE;
在源服务器上,运行FLUSH TABLES ... FOR EXPORT以停止 表并创建.cfg元数据文件:
的MySQL>使用测试;
MySQL的> FLUSH TABLES T FOR EXPORT;元数据(.cfg)文件在InnoDB数据目录中创建。注意
FLUSH TABLES ... FOR EXPORT从MySQL 5.6.6开始提供。该 语句确保已刷新对命名表的更改 磁盘,以便在服务器时可以创建二进制表副本 运行。当FLUSH TABLES ... FOR EXPORT运行时,InnoDB产生一个 .cfg文件与表的数据库目录相同。 .cfg文件 包含导入时用于模式验证的元数据 表空间文件。
将.ibd文件和.cfg元数据文件从源服务器复制到 目标服务器。例如:
壳> scp /path/to/datadir/test/t.{ibd,cfg} 目的地服务器:/路径/到/ DATADIR /测试
请注意
在释放共享之前,必须复制.ibd文件和.cfg文件 锁定,如下一步所述。
在源服务器上,使用UNLOCK TABLES释放获取的锁 通过FLUSH TABLES ...出口:
的MySQL>使用测试;
MySQL的>解锁表格;- 醇>
在目标服务器上,导入表空间:
的MySQL>使用测试; MySQL的> ALTER TABLE t IMPORT TABLESPACE;
请注意
ALTER TABLE ... IMPORT TABLESPACE功能不强制执行外部操作 对导入数据的关键约束。如果有外键约束 在表之间,所有表都应该以相同的方式导出(逻辑) 时间点。在这种情况下,您将停止更新表,提交 所有事务,获取表上的共享锁,然后执行 出口业务。
答案 1 :(得分:1)
在调整以下参数后,我在导入数据时遇到了与MySQL相同的问题:
导入时间显着减少。
答案 2 :(得分:0)
我希望我觉得对你很有帮助...尝试使用IMPORT CSV文件轻松加载数据库。
例如:
LOAD DATA LOCAL INFILE 'path/caption.csv'
INTO TABLE caption
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id, name)
使用此软件:
HeidiSQL SQL编辑器软件