如何在Java中克隆MySQL数据库

java mysql database connector-j

1184 观看

2回复

1 作者的声誉

我已经能够使用connector / j成功连接到MySQL数据库,但我不知道从哪里开始。我想克隆数据库以用于新的子域,我只是想知道是否有人可以给我一个提示,所以我知道要去哪个方向。

任何帮助将不胜感激,谢谢。

作者: xboxmods 的来源 发布者: 2011 年 7 月 19 日

回应 (2)


5

105906 作者的声誉

到目前为止,克隆MySQL数据库的最简单方法是使用标准管理工具:mysqldump dbname > dbname.sql获取SQL转储,mysqladmin create clonedb以创建新数据库,mysql clonedb < dbname.sql将SQL读入克隆数据库。

如果你想通过Java代码来实现它,那么你的生活将比它需要的更加艰难。

作者: chaos 发布者: 19.07.2011 06:57

0

1 作者的声誉

我有同样的问题。

所以有一个解决方案 Runtime.getRuntime().exec()

String command = "mysqldump -u <your login> --password=<your password> <database name to clone> | mysql -u root --password=<your password> <new database name>";

Process p = Runtime.getRuntime().exec(new String[]{"bash","-c",command});

缺点:您需要安全地将密码存储在某处。它不是系统独立的。

其他解决方案(我认为更好)是运行SQL文件,它将创建您的数据库架构。在mysql中,您可以轻松地使用mysqldump为您生成架构。

Resource resource = new ClassPathResource(defaultDatabaseSchemaFilePath);
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(resource);
DataSource dataSource = multiTenantDataSource.getDataSource(dbName);
databasePopulator.execute(dataSource); 

缺点:在开始你的SQL文件,你需要添加SET FOREIGN_KEY_CHECKS=0;和最终SET FOREIGN_KEY_CHECKS=1;databasePopulator执行命令,一个接一个,可能会有外资重点检查的问题。

希望它能帮助将来的某个人。

作者: Konrad Fryszkowski 发布者: 04.07.2019 09:56
32x32