java 项目中恢复Linux MySQL数据库sh

项目中使用Linux脚本恢复MySQL数据库
Java Linux 脚本执行 source 恢复数据库

//备份数据库
  /** * 备份MySQL脚本 linux sh 自定义目录 * */
    public static void backupMysqlBylinuxShell(String selectPathRoute) {
        String databaseRoute = createDatabaseBackupPath(selectPathRoute);
        List<String> databaseinfo = getDatabaseName();
        String[] cmds = new String[]{"/bin/bash", "-c", "DB_HOST=\"" + databaseinfo.get(3) + "\"\n" +
                " DB_NAME=\"" + databaseinfo.get(0) + "\"\n" +
                " DATE=\"$(date +\"%Y-%m-%d-%H%M%S\")\" \n" +
                " DB_USER=\"" + databaseinfo.get(1) + "\"\n" +
                " DB_PASS=\"" + databaseinfo.get(2) + "\"\n" +
                " BAKUP_FILE=" + databaseRoute + "/$DB_NAME-$DATE.sql\n" +
                " SQL_OPT=\"-u$DB_USER -p$DB_PASS -h $DB_HOST $DB_NAME\"\n" +
                " /usr/bin/mysqldump --opt $SQL_OPT > $BAKUP_FILE\n" +
                " echo 'Backup success。'\n"};
        try {
            RmtShellExecutor.execArrayCmd("commands", cmds);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //------------------------
 /** * 恢复数据库 * sqlPath 资源文件路径 * databaseinfo 数据库信息 */
    public static void recoveryDataBase(String sqlPath) throws Exception {
        List<String> databaseinfo = getDatabaseName();
        String[] cmds = new String[]{"/bin/bash", "-c", "DB_HOST=\"" + databaseinfo.get(3) + "\"\n" +
                " DB_NAME=\"" + databaseinfo.get(0) + "\"\n" +
                " DB_USER=\"" + databaseinfo.get(1) + "\"\n" +
                " DB_PASS=\"" + databaseinfo.get(2) + "\"\n" +
                " mysql -u$DB_USER -p$DB_PASS -h $DB_HOST $DB_NAME <<EOF \n" +
                " source " + sqlPath + ";\n" +
                "EOF\n" +  // !注意 EOF要顶行
                " exit; \n"};
        RmtShellExecutor.execArrayCmd("commands", cmds);
    }
//------------------------------
 /** * 获取数据库信息 */
    public static List<String> getDatabaseName() {
        String databaseName = "namexxx";
        String userName = "root";
        String pwd = "root";
        String jdbcip = "127.0.0.1";
        List<String> dataInfo = new ArrayList<String>(4);
        try {
            InputStream is = MySqlImportAndExport.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(is);
            databaseName = properties.getProperty("jdbc.database");
            log.debug("获取数据库名称:" + databaseName);
            dataInfo.add(databaseName);
            userName = properties.getProperty("jdbc.username");
            dataInfo.add(userName);
            log.debug("获取用户名:" + userName);
            pwd = properties.getProperty("jdbc.password");
            dataInfo.add(pwd);
            log.debug("获取密码:" + pwd);
            jdbcip = properties.getProperty("jdbc.mysqlIp");
            dataInfo.add(jdbcip);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return dataInfo;
    }

//------------------------------------
  /** * 执行linux shell * @param message * @param args * @throws Exception */
    public static void execArrayCmd(String message, String[] args) throws Exception {
        log.debug("---执行linux shell ---");
        log.debug(message + ":");
        Process process = Runtime.getRuntime().exec(args);
        for (String arg : args) {
            System.out.println(arg);
            System.out.print(" ");
        }
        BufferedReader errorReader = new BufferedReader(new InputStreamReader(
                process.getInputStream()));
        String line = null;
        while ((line = errorReader.readLine()) != null) {
            System.err.println(line);
        }
        errorReader.close();
        BufferedReader infoReader = new BufferedReader(new InputStreamReader(
                process.getErrorStream()));
        while ((line = infoReader.readLine()) != null) {
            System.out.println(line);
        }
        infoReader.close();
        log.debug("");
    }

你可能感兴趣的:(java,linux,数据库,mysql)