我有一个如下目录:
ar_wiki_latest ibdata1 ib_logfile1 ko_wiki_latest ps_wiki_20100302 ru_wiki_latest zh_wiki_latest en_wiki_latest ib_logfile0 ja_wiki_latest mysql ps_wiki_latest 测试
退役服务器遗留下来的。有没有办法说服 mysql 采用其中一些数据库?
答案1
最可靠的方法是暂时地将数据目录替换mysql
为要导入的数据目录。启动 mysql 服务器并执行mysqldump
要导入的表的操作(注意,您将使用您的老的mysql login)。再次关闭 MySQL,用当前数据目录替换临时的旧数据目录,重新启动 MySQL,然后使用 mysql 命令行工具导入转储文件。
如果要导入数据库仅有的使用 MyISAM,那么通常只需将数据库的目录(例如“ en_wiki_latest
”)复制到新的 mysql 数据目录中,它就会“正常工作”。但是,如果数据库使用 InnoDB,则使用此方法会导致灾难。因此,为了安全起见,我建议使用上述方法。
快速回顾如何导入/导出:
出口:
mysqldump -uUSER -pPASSWORD database_name > database_name.sql
进口:
mysql -uUSER -pPASSWORD <<< "create database database_name"
mysql -uUSER -pPASSWORD database_name < database_name.sql
答案2
我同意,除了一点补充。
切勿修改正在运行的系统/配置以进行测试或开发。始终在另一个系统或备用服务器或实例上进行测试和开发。您可以在同一台机器上运行同一台服务器的多个实例或 MySQL 的多个版本。
在备用端口和备用数据目录上启动另一个 MySQL 实例。现在您可以在两个服务器或实例运行时转储和导入。
手册摘录:http://dev.mysql.com/doc/refman/5.0/en/multiple-unix-servers.html
您无需编译新的 MySQL 服务器,只需使用不同的 Unix 套接字文件和 TCP/IP 端口号即可。还可以使用相同的服务器二进制文件,并在运行时使用不同的参数值启动对它的每次调用。一种方法是使用命令行选项:
shell> mysqld_safe --socket=文件名 --port=端口号
要启动第二台服务器,请提供不同的 --socket 和 --port 选项值,并将 --datadir=path 选项传递给 mysqld_safe,以便服务器使用不同的数据目录。
对于 Windows 来说也是同样的想法,请参阅手册了解语法。
当为了提高性能或修复“错误”而进行更改时,请在正在运行/生产的服务器上进行最终测试之前,在另一台服务器/实例上验证/测试更改。这适用于配置、索引、字段类型、约束、程序等。