java 项目中恢复Linux MySQL数据库sh
2015-07-29 15:30
513 查看
项目中使用Linux脚本恢复MySQL数据库
Java Linux 脚本执行 source 恢复数据库
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(""); }
相关文章推荐
- linux压缩与解压缩 tar命令
- Linux中常用操作命令
- 编译GCC-4.8出现的错误 —— Linux gnu/stubs-32.h: No such file or directory
- Linux下查看及修改进程打开的文件句柄数量
- linux硬链接 软链接
- Linux系统一些系统查看指令
- Linux里如何查找文件内容
- 使用 Yocto Project 构建自定义嵌入式 Linux 发行版
- linux 0号进程 1号进程 区别(转)
- linux上安装SVN
- 在Linux下写一个线程池以及线程池的一些用法和注意点
- Linux进程使用内存的基本流程---Linux用户进程是如何释放内存的
- 学习笔记:linuxc第七章—进程控制 下篇
- linux下使用crontab定时执行python脚本
- Linux的文件权限与目录配置
- centos6.3中文输入法的安装
- centos 记录用户行为轨迹
- Linux如何查看进程、杀死进程、启动进程等常用命令
- Linux NFS服务器的安装与配置
- CentOS6.4下Mysql数据库的安装与配置