我一直在一个涉及Mysql和PHP的项目中工作。在创建测试包时,我将mysql数据库作为sql文件从MySql工作台导出,并使用以下命令导入到linux机器的mysql服务器
mysql>source mydatabase.sql;这是导出和导入mysql数据库的正确方式吗?数据库文件还包含创建模式、插入数据和创建索引脚本。导入此文件需要很长时间。我的直接经理建议我不使用索引导出,然后导入数据库,然后执行索引创建脚本。这是正确的方式吗?导入数据库时索引是否需要很长时间?
提前感谢!
发布于 2014-09-05 02:35:47
导出取决于您正在运行的MySQL版本/供应商!
企业备份(旧版本)-使用mysqldump
最快的方法是避免mysqldump。
我比其他人更喜欢Percona!
另一种更高级的方法是在目标服务器上创建数据库,然后直接复制数据库文件。假设用户对目标服务器的mysql目录有访问权限:
以根用户身份使用:
[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之前,确保目标上的文件所有权和权限是正确的。
[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的东西)所浪费的时间是否会大于传输未压缩数据所花费的时间;即,您的连接速度。
发布于 2014-09-05 02:43:20
Percona Server附带了一个修改过的mysqldump工具,因此您可以选择--innodb-optimize-keys选项。这将导出表、数据和索引定义,比如股票mysqldump,但是在导入期间,它会将二级索引的创建推迟到将数据加载到表中之后。这利用了InnoDB的fast index creation特性。
另一种选择是使用物理备份工具,如前面提到的Percona XtraBackup (作为用户@Up_One)。这意味着将备份完整的数据文件,包括索引。在恢复时,不需要重新构建任何内容,因为索引已填充。使用物理备份工具也有优点和缺点,但恢复时间是一个很大的优势。
发布于 2014-09-05 02:27:55
我更喜欢使用mysqldump!(请查看:http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html)
https://stackoverflow.com/questions/25672498
复制相似问题