0
点赞
收藏
分享

微信扫一扫

Java代码进行MySQL数据库备份

import java.io.*;
import java.util.*;

public class DatabaseBackup {

    /**
     * 备份数据库
     *
     * @param dbName       数据库名称
     * @param dbUserName   数据库用户名
     * @param dbPassword   数据库密码
     * @param backupPath   备份文件路径
     * @throws IOException 如果备份过程中发生 I/O 错误
     */
    public static void backupDatabase(String dbName, String dbUserName, String dbPassword, String backupPath) throws IOException {
        // 构建备份命令
        String command = "mysqldump --user=" + dbUserName + " --password=" + dbPassword + " --databases " + dbName + " > " + backupPath;

        // 执行备份命令
        Process process = Runtime.getRuntime().exec(command);
        
        // 检查备份是否成功
        int exitCode;
        try {
            exitCode = process.waitFor();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new IOException("备份过程中断", e);
        }

        // 备份成功
        if (exitCode == 0) {
            System.out.println("数据库备份成功!");

            // 删除上次备份数据
            deletePreviousBackup(backupPath);
        } else {
            System.out.println("数据库备份失败!");
        }
    }

    /**
     * 删除上次备份数据
     *
     * @param backupPath 备份文件路径
     */
    private static void deletePreviousBackup(String backupPath) {
        File backupFile = new File(backupPath);
        if (backupFile.exists()) {
            if (backupFile.delete()) {
                System.out.println("上次备份数据删除成功!");
            } else {
                System.out.println("删除上次备份数据失败!");
            }
        }
    }

    public static void main(String[] args) {
        // 示例用法
        String dbName = "your_database_name";
        String dbUserName = "your_database_username";
        String dbPassword = "your_database_password";
        String backupPath = "/path/to/backup/backup.sql";

        try {
            backupDatabase(dbName, dbUserName, dbPassword, backupPath);
        } catch (IOException e) {
            System.err.println("备份过程中出现错误:" + e.getMessage());
        }
    }
}

backupDatabase 方法中,备份成功后调用了 deletePreviousBackup 方法,该方法会删除指定路径下的备份数据文件。请确保在指定备份路径时,不要覆盖上次备份的文件,以便成功删除上次备份数据。

举报

相关推荐

0 条评论