首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出和导入mysql数据库的最佳实践是什么?

导出和导入mysql数据库的最佳实践是什么?
EN

Stack Overflow用户
提问于 2014-09-05 02:20:56
回答 3查看 1.9K关注 0票数 0

我一直在一个涉及Mysql和PHP的项目中工作。在创建测试包时,我将mysql数据库作为sql文件从MySql工作台导出,并使用以下命令导入到linux机器的mysql服务器

代码语言:javascript
复制
mysql>source mydatabase.sql;

这是导出和导入mysql数据库的正确方式吗?数据库文件还包含创建模式、插入数据和创建索引脚本。导入此文件需要很长时间。我的直接经理建议我不使用索引导出,然后导入数据库,然后执行索引创建脚本。这是正确的方式吗?导入数据库时索引是否需要很长时间?

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2014-09-05 02:35:47

导出取决于您正在运行的MySQL版本/供应商!

企业备份(旧版本)-使用mysqldump

  • MySQL(percona) -使用XtraBackup

  • MySQL(EE - 5.6) -使用MySQL

  • MySQL,后者更复杂,速度更快。

最快的方法是避免mysqldump。

我比其他人更喜欢Percona!

另一种更高级的方法是在目标服务器上创建数据库,然后直接复制数据库文件。假设用户对目标服务器的mysql目录有访问权限:

以根用户身份使用

代码语言:javascript
复制
[root@server-A]# /etc/init.d/mysqld stop
[root@server-A]# cd /var/lib/mysql/[databasename]
[root@server-A]# scp * user@otherhost:/var/lib/mysql/[databasename]
[root@server-A]# /etc/init.d/mysqld start

重要的是:在复制DB文件之前停止两台服务器上的mysqld,在目标服务器上启动mysqld之前,确保目标上的文件所有权和权限是正确的。

代码语言:javascript
复制
[root@server-B]# chown mysql:mysql /var/lib/mysql/[databasename]/*
[root@server-B]# chmod 660 /var/lib/mysql/[databasename]/*
[root@server-B]# /etc/init.d/mysqld start

在这里,时间是您的首要任务,压缩的使用将取决于等待压缩/解压缩(使用类似gzip的东西)所浪费的时间是否会大于传输未压缩数据所花费的时间;即,您的连接速度。

票数 1
EN

Stack Overflow用户

发布于 2014-09-05 02:43:20

Percona Server附带了一个修改过的mysqldump工具,因此您可以选择--innodb-optimize-keys选项。这将导出表、数据和索引定义,比如股票mysqldump,但是在导入期间,它会将二级索引的创建推迟到将数据加载到表中之后。这利用了InnoDB的fast index creation特性。

另一种选择是使用物理备份工具,如前面提到的Percona XtraBackup (作为用户@Up_One)。这意味着将备份完整的数据文件,包括索引。在恢复时,不需要重新构建任何内容,因为索引已填充。使用物理备份工具也有优点和缺点,但恢复时间是一个很大的优势。

票数 1
EN

Stack Overflow用户

发布于 2014-09-05 02:27:55

我更喜欢使用mysqldump!(请查看:http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25672498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档