mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-12-02 12:17:43 +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
|
@Override
|
||||||
public void run(String... args) throws Exception {
|
public void run(String... args) throws Exception {
|
||||||
dolphinSchedulerManager.initDolphinScheduler();
|
if (dolphinSchedulerManager.schemaIsInitialized()) {
|
||||||
logger.info("init DolphinScheduler finished");
|
dolphinSchedulerManager.upgradeDolphinScheduler();
|
||||||
dolphinSchedulerManager.upgradeDolphinScheduler();
|
logger.info("upgrade DolphinScheduler finished");
|
||||||
logger.info("upgrade DolphinScheduler finished");
|
} else {
|
||||||
|
dolphinSchedulerManager.initDolphinScheduler();
|
||||||
|
logger.info("init DolphinScheduler finished");
|
||||||
|
}
|
||||||
logger.info("create DolphinScheduler success");
|
logger.info("create DolphinScheduler success");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,21 +55,28 @@ public class DolphinSchedulerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void initDolphinScheduler() {
|
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
|
// Determines whether the dolphinscheduler table structure has been init
|
||||||
if (upgradeDao.isExistsTable("t_escheduler_version")
|
if (upgradeDao.isExistsTable("t_escheduler_version")
|
||||||
|| upgradeDao.isExistsTable("t_ds_version")
|
|| upgradeDao.isExistsTable("t_ds_version")
|
||||||
|| upgradeDao.isExistsTable("t_escheduler_queue")) {
|
|| upgradeDao.isExistsTable("t_escheduler_queue")) {
|
||||||
logger.info("The database has been initialized. Skip the initialization step");
|
logger.info("The database has been initialized. Skip the initialization step");
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
this.initDolphinSchedulerSchema();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initDolphinSchedulerSchema() {
|
public void initDolphinSchedulerSchema() {
|
||||||
logger.info("Start initializing the DolphinScheduler manager table structure");
|
logger.info("Start initializing the DolphinScheduler manager table structure");
|
||||||
upgradeDao.initSchema();
|
upgradeDao.initSchema();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void upgradeDolphinScheduler() throws IOException {
|
public void upgradeDolphinScheduler() throws IOException {
|
||||||
// Gets a list of all upgrades
|
// Gets a list of all upgrades
|
||||||
List<String> schemaList = SchemaUtils.getAllSchemaList();
|
List<String> schemaList = SchemaUtils.getAllSchemaList();
|
||||||
|
@ -89,52 +89,17 @@ public abstract class UpgradeDao {
|
|||||||
public abstract DbType getDbType();
|
public abstract DbType getDbType();
|
||||||
|
|
||||||
public void initSchema() {
|
public void initSchema() {
|
||||||
// Execute the dolphinscheduler DDL, it cannot be rolled back
|
// Execute the dolphinscheduler full sql
|
||||||
runInitDDL();
|
runInitSql(getDbType());
|
||||||
|
|
||||||
// Execute the dolphinscheduler DML, it can be rolled back
|
|
||||||
runInitDML();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runInitDML() {
|
/**
|
||||||
Resource mysqlSQLFilePath = new ClassPathResource("sql/" + initSqlPath() + "/dolphinscheduler_dml.sql");
|
* run init sql to init db schema
|
||||||
Connection conn = null;
|
* @param dbType db type
|
||||||
try {
|
*/
|
||||||
conn = dataSource.getConnection();
|
private void runInitSql(DbType dbType) {
|
||||||
conn.setAutoCommit(false);
|
String sqlFile = String.format("dolphinscheduler_%s.sql",dbType.getDescp());
|
||||||
|
Resource mysqlSQLFilePath = new ClassPathResource("sql/" + sqlFile);
|
||||||
// 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");
|
|
||||||
try (Connection conn = dataSource.getConnection()) {
|
try (Connection conn = dataSource.getConnection()) {
|
||||||
// Execute the dolphinscheduler_ddl.sql script to create the table structure of dolphinscheduler
|
// Execute the dolphinscheduler_ddl.sql script to create the table structure of dolphinscheduler
|
||||||
ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
|
ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user