我已经能够使用 connector/j 成功连接到 MySQL 数据库,但我不确定从这里去哪里。我想克隆数据库以用于新的子域,我只是想知道是否有人可以给我一个提示,以便我知道该往哪个方向发展。
任何帮助将不胜感激,谢谢。
我已经能够使用 connector/j 成功连接到 MySQL 数据库,但我不确定从这里去哪里。我想克隆数据库以用于新的子域,我只是想知道是否有人可以给我一个提示,以便我知道该往哪个方向发展。
任何帮助将不胜感激,谢谢。
到目前为止,克隆 MySQL 数据库的最简单方法是使用标准管理工具:mysqldump dbname > dbname.sql
获取 SQL 转储,mysqladmin create clonedb
创建新数据库,mysql clonedb < dbname.sql
将 SQL 读入克隆数据库。
如果你想通过 Java 代码来完成它,你会让生活变得比它需要的要困难得多。
我有同样的问题。
所以一种解决方案是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
执行命令,可能会出现外键检查问题。
希望它会在未来对某人有所帮助。