[MySQL]-全库物理备份与恢复SHELL脚本-基于COPY冷备份

以下脚本,基本冷备份方式,对数据库进行备份与恢复:

冷备份脚本:

[root@localhost mysql_backup]# cat mysql_physical_backup.sh

#!/bin/bash

# 定义MySQL数据目录和备份目录

MYSQL_DATA_DIR="/var/lib/mysql"

BACKUP_DIR="/data_back"


# 检查MySQL服务是否正在运行

if pgrep -x "mysqld" > /dev/null

then

echo "MySQL服务正在运行,正在停止MySQL服务..."

systemctl stop mysqld.service # 使用systemctl停止MySQL服务

if [ $? -eq 0 ]; then

echo "MySQL服务已成功停止。"

else

echo "停止MySQL服务失败,请检查原因。"

exit 1

fi

else

echo "MySQL服务未运行。"

fi


# 创建备份目录(如果不存在)

if [ ! -d "$BACKUP_DIR" ]; then

mkdir $BACKUP_DIR -p

echo "备份目录 $BACKUP_DIR 已创建。"

fi


# 使用cp命令复制MySQL数据目录到备份目录

echo "正在复制MySQL数据目录到备份目录..."

cp -rp "$MYSQL_DATA_DIR"/* "$BACKUP_DIR"

if [ $? -eq 0 ]; then

echo "MySQL数据目录已成功复制到 $BACKUP_DIR"

else

echo "复制MySQL数据目录失败,请检查原因。"

exit 1

fi

echo "脚本执行完毕。"


冷恢复脚本:

[root@localhost mysql_restore]# cat mysql_physical_restore.sh

#!/bin/bash


# 检查MySQL服务是否在运行

if pgrep -x mysqld > /dev/null

then

echo "MySQL正在运行,正在停止MySQL服务..."

systemctl stop mysqld

if [ $? -eq 0 ]; then

echo "MySQL服务已成功停止。"

else

echo "MySQL服务停止失败。"

exit 1

fi

else

echo "MySQL未在运行。"

fi


# 检查/var/lib/mysql目录是否为空

if [ "$(ls -A /var/lib/mysql)" ]; then

echo "/var/lib/mysql目录不为空,正在删除目录下的所有文件..."

rm -rf /var/lib/mysql/*

if [ $? -eq 0 ]; then

echo "文件删除成功。"

else

echo "文件删除失败。"

exit 1

fi

else

echo "/var/lib/mysql目录为空。"

fi


# 将/data_back目录下的所有文件复制到/var/lib/mysql目录下

echo "正在将/data_back目录下的所有文件复制到/var/lib/mysql目录下..."

cp -rp /data_back/* /var/lib/mysql/

if [ $? -eq 0 ]; then

echo "文件复制成功。"

else

echo "文件复制失败。"

exit 1

fi


# 启动MySQL服务

echo "正在启动MySQL服务..."

systemctl start mysqld

if [ $? -eq 0 ]; then

echo "MySQL服务已成功启动。"

else

echo "MySQL服务启动失败。"

exit 1

fi

sleep 5

# 检查MySQL服务是否成功启动

if pgrep -x mysqld > /dev/null

then

echo "MySQL服务正在运行。"

else

echo "MySQL服务未成功启动。"

exit 1

fi



分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS