您的位置:首页 > 运维架构 > Linux

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

2015-07-29 15:30 513 查看
项目中使用Linux脚本恢复MySQL数据库

Java Linux 脚本执行 source 恢复数据库

[code]//备份数据库
  /**
     * 备份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("");
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: