mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-02 04:08:31 +08:00
[Improvement-#7529][tools] Init DB schema from the full sql file. (#7530)
This commit is contained in:
parent
d3533851a0
commit
cdd4e7bf03
@ -42,10 +42,13 @@ public class CreateDolphinScheduler {
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
dolphinSchedulerManager.initDolphinScheduler();
|
||||
logger.info("init DolphinScheduler finished");
|
||||
dolphinSchedulerManager.upgradeDolphinScheduler();
|
||||
logger.info("upgrade DolphinScheduler finished");
|
||||
if (dolphinSchedulerManager.schemaIsInitialized()) {
|
||||
dolphinSchedulerManager.upgradeDolphinScheduler();
|
||||
logger.info("upgrade DolphinScheduler finished");
|
||||
} else {
|
||||
dolphinSchedulerManager.initDolphinScheduler();
|
||||
logger.info("init DolphinScheduler finished");
|
||||
}
|
||||
logger.info("create DolphinScheduler success");
|
||||
}
|
||||
}
|
||||
|
@ -55,21 +55,28 @@ public class DolphinSchedulerManager {
|
||||
}
|
||||
|
||||
public void initDolphinScheduler() {
|
||||
this.initDolphinSchedulerSchema();
|
||||
}
|
||||
|
||||
/**
|
||||
* whether schema is initialized
|
||||
* @return true if schema is initialized
|
||||
*/
|
||||
public boolean schemaIsInitialized() {
|
||||
// Determines whether the dolphinscheduler table structure has been init
|
||||
if (upgradeDao.isExistsTable("t_escheduler_version")
|
||||
|| upgradeDao.isExistsTable("t_ds_version")
|
||||
|| upgradeDao.isExistsTable("t_escheduler_queue")) {
|
||||
logger.info("The database has been initialized. Skip the initialization step");
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
this.initDolphinSchedulerSchema();
|
||||
return false;
|
||||
}
|
||||
|
||||
public void initDolphinSchedulerSchema() {
|
||||
logger.info("Start initializing the DolphinScheduler manager table structure");
|
||||
upgradeDao.initSchema();
|
||||
}
|
||||
|
||||
public void upgradeDolphinScheduler() throws IOException {
|
||||
// Gets a list of all upgrades
|
||||
List<String> schemaList = SchemaUtils.getAllSchemaList();
|
||||
|
@ -89,52 +89,17 @@ public abstract class UpgradeDao {
|
||||
public abstract DbType getDbType();
|
||||
|
||||
public void initSchema() {
|
||||
// Execute the dolphinscheduler DDL, it cannot be rolled back
|
||||
runInitDDL();
|
||||
|
||||
// Execute the dolphinscheduler DML, it can be rolled back
|
||||
runInitDML();
|
||||
// Execute the dolphinscheduler full sql
|
||||
runInitSql(getDbType());
|
||||
}
|
||||
|
||||
private void runInitDML() {
|
||||
Resource mysqlSQLFilePath = new ClassPathResource("sql/" + initSqlPath() + "/dolphinscheduler_dml.sql");
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = dataSource.getConnection();
|
||||
conn.setAutoCommit(false);
|
||||
|
||||
// Execute the dolphinscheduler_dml.sql script to import related data of dolphinscheduler
|
||||
ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true);
|
||||
Reader initSqlReader = new InputStreamReader(mysqlSQLFilePath.getInputStream());
|
||||
initScriptRunner.runScript(initSqlReader);
|
||||
|
||||
conn.commit();
|
||||
} catch (IOException e) {
|
||||
try {
|
||||
conn.rollback();
|
||||
} catch (SQLException e1) {
|
||||
logger.error(e1.getMessage(), e1);
|
||||
}
|
||||
logger.error(e.getMessage(), e);
|
||||
throw new RuntimeException(e.getMessage(), e);
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
if (null != conn) {
|
||||
conn.rollback();
|
||||
}
|
||||
} catch (SQLException e1) {
|
||||
logger.error(e1.getMessage(), e1);
|
||||
}
|
||||
logger.error(e.getMessage(), e);
|
||||
throw new RuntimeException(e.getMessage(), e);
|
||||
} finally {
|
||||
ConnectionUtils.releaseResource(conn);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void runInitDDL() {
|
||||
Resource mysqlSQLFilePath = new ClassPathResource("sql/" + initSqlPath() + "/dolphinscheduler_ddl.sql");
|
||||
/**
|
||||
* run init sql to init db schema
|
||||
* @param dbType db type
|
||||
*/
|
||||
private void runInitSql(DbType dbType) {
|
||||
String sqlFile = String.format("dolphinscheduler_%s.sql",dbType.getDescp());
|
||||
Resource mysqlSQLFilePath = new ClassPathResource("sql/" + sqlFile);
|
||||
try (Connection conn = dataSource.getConnection()) {
|
||||
// Execute the dolphinscheduler_ddl.sql script to create the table structure of dolphinscheduler
|
||||
ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
|
||||
|
Loading…
Reference in New Issue
Block a user