MaxKB 数据库备份脚本


飞致云 发布于 2024-09-03 / 449 阅读 / 0 评论 /

使用脚本注意事项:

  1. 所有的参数信息需要改成自己环境的信息。

  2. 默认是通过MaxKB安装包一键安装。

  3. 根据需求选择合适的脚本。

一、备份数据

#!/bin/bash

# 定义变量
BACKUP_DIR="/opt/db_bak"        # 备份文件存储目录
DATE=$(date +%Y%m%d_%H%M%S)     # 创建时间戳
DB_NAME="maxkb"                 # 数据库名
DB_USER="root"                  # 数据库用户
DB_PASS="Password123@postgres"  # 数据库密码
DB_HOST="10.1.12.103"           # 数据库主机地址,默认为localhost

# 创建备份文件名
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$DATE.dump"

# 检查备份目录是否存在,如果不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
fi

# 执行备份
echo "Starting backup of $DB_NAME..."
docker exec -i  -e PGPASSWORD="Password123@postgres"  pgsql pg_dump -h $DB_HOST -U $DB_USER  -d maxkb -Fc > $BACKUP_FILE

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "Backup completed successfully."
else
    echo "Backup failed."
    exit 1
fi
# 授权
chmod 755 maxkb_backup.sh

# 执行
bash backup.sh

二、恢复数据

恢复数据时可以直接在容器中手动执行脚本,也可封装在脚本中一键执行。

1、复制数据到容器中

# maxkb-20240805_184020.dump 为需要恢复的文件名
docker cp /opt/db_bak/maxkb-20240805_184020.dump pgsql:/  

# 进入pgsql容器
docker exec -it pgsql sh

# 恢复数据,test为新库名
pg_restore  -U root -d test  -v /maxkb-20240805_184020.dump

2、通过脚本执行

!/bin/bash

# 定义变量
RESTORE_FILE="/opt/db_bak/maxkb-20240805_184020.dump"  # 备份文件路径,需要手动改成需要恢复的数据文件
DB_NAME="mydatabase"                                   # 要恢复的数据库名
DB_USER="root"                                         # 数据库用户
DB_PASS="Password123@postgres"                         # 数据库密码
DB_HOST="10.1.12.103"                                  # 数据库主机地址,默认为localhost

# 检查备份文件是否存在
if [ ! -f "$RESTORE_FILE" ]; then
    echo "Restore file does not exist: $RESTORE_FILE"
    exit 1
fi

# 执行恢复
echo "Starting restore of $DB_NAME from $RESTORE_FILE..."

docker cp $RESTORE_FILE pgsql:/
docker exec -i -e PGPASSWORD="Password123@postgres"  pgsql  pg_restore -h $DB_HOST -U $DB_USER -d $DB_NAME  -v /maxkb-20240805_184020.dump

# 检查恢复是否成功
if [ $? -eq 0 ]; then
    echo "Restore completed successfully."
else
    echo "Restore failed."
    exit 1
fi
# 授权
chmod 755 maxkb_restore.sh

# 执行
bash maxkb_restore.sh

三、定时备份

vi install_maxkb_backup.sh

## 内容如下---------
#!/bin/bash

timedate_fields="0 1 * * *"  #每天凌晨1:00执行备份程序
cmd="bash /opt/db_bak/maxkb_backup.sh"  #替换 ms_backup.sh 所在路径
crontab -l | grep "$cmd " > /dev/null 2>&1
if test $? -ne 0; then
    crontab -l > crontab.tmp
    echo "$timedate_fields $cmd" >> crontab.tmp
    crontab crontab.tmp
fi
## -----------

chmod 755 install_maxkb_backup.sh
bash install_maxkb_backup.sh

注:根据实际情况对备份时间、路径进行修改。



是否对你有帮助?