商城网站html,iis默认网站建设中,郑州网站建设 .cc,网站主要功能文章目录 前言存储数据库存储数据表 前言 数据库备份是开发工作中经常要做的事情#xff0c;好处是mysql提供了一个非常好的命令 mysqldump#xff0c;直接调用它就可以将数据以sql文件的形式备份出来。但是直接写命令非常不方便#xff0c;遇到定时备份或者指定备份那么就需… 文章目录 前言存储数据库存储数据表 前言 数据库备份是开发工作中经常要做的事情好处是mysql提供了一个非常好的命令 mysqldump直接调用它就可以将数据以sql文件的形式备份出来。但是直接写命令非常不方便遇到定时备份或者指定备份那么就需要代码调用。下面是一个使用java代码调用该命令的小示例
mysqldump -u username -p password -h host -P port exportDatabaseName exportPath在进行导出的时候需要注意命令语句的运行环境如果已经将mysql安装路径下的bin加入到系统的path变量中那么在导出的时候可以直接使用命令语句否则就需要在执行命令语句的时候加上命令所在位置的路径即mysql安装路径想的bin下的mysqldump命令。
存储数据库
public class DataSyncTransfer {/** MySQL安装目录的Bin目录的绝对路径 */private static String mysqlBinPath /usr/local/mysql/bin/;private static String mysqldump mysqlBinPath mysqldump;/*** 备份 MySQL 数据库* * param clientIp 访问MySQL数据库的主机* param port 访问MySQL数据库的端口* param userName 访问MySQL数据库的用户名* param password 访问MySQL数据库的密码* param database 需要备份的数据库多个数据库之间使用逗号分隔* param backupFile 备份文件存放的路径如果指定路径的文件不存在会自动生成*/public static boolean backupDatabase(String clientIp, int port, String userName, String password, String database,String backupPath) throws Exception {// 当前日期String currentDate new SimpleDateFormat(yyyy-MM-dd).format(new Date());// 当前时间String currentTime new SimpleDateFormat(HH-mm-ss).format(Calendar.getInstance().getTime());// 备份文件名String backupFileName database - currentDate - currentTime .sql;// 备份文件路径String backupFilePath backupPath backupFileName;// 创建备份文件存放目录如果已经存在则不创建new File(backupPath).mkdirs();// 新建命令列表ListString commandList new ArrayList();// 添加命令备份 MySQL 数据库commandList.add(mysqldump);// 添加命令参数MySQL 服务器地址if (StringUtils.isNoneBlank(clientIp)) {commandList.add(--host clientIp);}// 添加命令参数MySQL 用户名commandList.add(--user userName);// 添加命令参数备份文件路径commandList.add(--result-file backupFilePath);// 添加命令参数指定要备份的数据库commandList.add(--databases);// 添加要备份的数据库名称commandList.add(database);// 创建进程构建器ProcessBuilder pb new ProcessBuilder(commandList);// 设置 MySQL 密码pb.environment().put(MYSQL_PWD, password);// 启动进程Process process pb.start();readStringFromInputStream(process.getInputStream(), backupFilePath);// 等待进程结束int processComplete process.waitFor();if (processComplete 0) { // 如果进程成功结束return true;} else { // 如果进程没有成功结束return false;}}/*** 存储文件*/private static void readStringFromInputStream(InputStream stream, String backupFilePath) throws IOException {byte[] buff new byte[128];int n;FileOutputStream fileOutputStream null;StringBuilder sb new StringBuilder();try {while ((n stream.read(buff)) ! -1) {sb.append(new String(buff, 0, n));}fileOutputStream new FileOutputStream(new File(backupFilePath));fileOutputStream.write(sb.toString().getBytes());} finally {fileOutputStream.close();stream.close();}}
}存储数据表
public class DataSyncTransfer {/** MySQL安装目录的Bin目录的绝对路径 */private static String mysqlBinPath /usr/local/mysql/bin/;private static String mysqldump mysqlBinPath mysqldump;/*** 备份数据表* * param clientIp 访问MySQL数据库的主机* param port 访问MySQL数据库的端口* param userName 访问MySQL数据库的用户名* param password 访问MySQL数据库的密码* param database 需要备份的数据库* param tableName 需要备份的数据库多个表之间使用空格分隔* param backupFile 备份生成的文件路径如果指定路径的文件不存在会自动生成*/public static boolean backupTable(String clientIp, int port, String userName, String password, String database,String tableNames, String backupPath) throws Exception {// 根据逗号分隔符将要备份的数据库名称拆分成数组// String[] tableArr tableNames.split(,);// 当前日期String currentDate new SimpleDateFormat(yyyyMMdd).format(new Date());// 当前时间String currentTime new SimpleDateFormat(HHmmss).format(Calendar.getInstance().getTime());// 备份文件名String backupFileName database - currentDate currentTime .sql;// 备份文件路径String backupFilePath Paths.get(backupPath, backupFileName).toFile().getPath();String command mysqldump -u userName -p password database tableNames;Process process Runtime.getRuntime().exec(command);readStringFromInputStream(process.getInputStream(), backupFilePath);// 等待进程结束int processComplete process.waitFor();if (processComplete 0) { // 如果进程成功结束return true;} else { // 如果进程没有成功结束return false;}}/*** 存储文件*/private static void readStringFromInputStream(InputStream stream, String backupFilePath) throws IOException {byte[] buff new byte[128];int n;FileOutputStream fileOutputStream null;StringBuilder sb new StringBuilder();try {while ((n stream.read(buff)) ! -1) {sb.append(new String(buff, 0, n));}fileOutputStream new FileOutputStream(new File(backupFilePath));fileOutputStream.write(sb.toString().getBytes());} finally {fileOutputStream.close();stream.close();}}
}