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

标签 mysql sql database

我一直在做一个涉及Mysql和PHP的项目。在创建测试包时,我已将 mysql 数据库从 MySql Workbench 导出为 sql 文件,并使用

导入到 Linux 机器的 mysql 服务器中
mysql>source mydatabase.sql;

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

提前致谢!

最佳答案

Percona Server附带修改后的 mysqldump 工具,因此您可以选择 --innodb-optimize-keys选项。这会像 stock mysqldump 一样导出表、数据和索引定义,但在导入期间,它会推迟二级索引的创建,直到数据加载到表中之后。这利用了 InnoDB 的 fast index creation功能。

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

关于mysql - 导出和导入 mysql 数据库的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25672498/

相关文章:

php - 我们在处理 session 时必须使用 mysql_real_escape_string() 吗?

mysql - 如何在 sql 中创建循环,这是这里最好的技术吗?

java - 如何从java类获取用户定义的sql过程输出参数

sql - 维护面向查询的应用程序

mysql - 如何确保我的代码中不会发生更新丢失?

mysql - 缓慢的 MySQL SELECT 性能

php - 数据库发布到另一个数据库

sql - 按名称和日期范围对数据进行分组

mysql - SQL - 选择两年

php - 标题中数据库中的行,设置为显示在所有页面中