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

来源:互联网 发布:java 文件上传md5校验 编辑:程序博客网 时间:2024/06/05 07:34

项目中使用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("");    }
0 0
原创粉丝点击