学习目标:centos上MySQL自动备份
学习内容:
`
要在CentOS上设置MySQL定时备份数据并保留最新的两份备份文件,您可以通过以下步骤实现:
-
创建备份脚本
创建一个备份脚本,并使用mysqldump
命令将MySQL数据库备份到指定目录。同时,确保在备份之前删除旧的备份文件。下面是一个示例备份脚本:
#!/bin/bash # 定义数据库凭据 DB_USER="your_db_user" DB_PASS="your_db_password" DB_NAME="your_db_name" # 定义备份路径 BACKUP_DIR="/path/to/backup/directory" # 删除旧备份文件,只保留最新的两份 cd $BACKUP_DIR ls -t | tail -n +3 | xargs rm -- # 生成备份文件名 BACKUP_FILE="$BACKUP_DIR/db_backup_$(date +'%Y%m%d%H%M').sql" # 使用mysqldump命令备份数据库 mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
确保将
your_db_user
、your_db_password
、your_db_name
和/path/to/backup/directory
替换为实际的数据库凭据和备份路径。 -
赋予脚本执行权限
使用以下命令为脚本赋予执行权限:chmod +x backup.sh
-
设置定时任务
使用crontab设置定时任务,以便定期运行备份脚本,并保留最新的两份备份文件。运行以下命令编辑cron表:
crontab -e
在打开的编辑器中添加以下行来定义定时任务,例如每天凌晨3点执行备份:
0 3 * * * /path/to/backup.sh
请将
/path/to/backup.sh
替换为实际的脚本路径。
通过以上步骤,您已经成功设置了MySQL定时备份,并保留了最新的两份备份文件。每次运行备份脚本时,在生成新的备份文件之前,会删除最旧的备份文件,以确保只保留最新的两份备份。
学习问题:
在centos7执行mysql备份脚本时,报bash: mysqldump: command not found。
解决方法如下:
1、找到mysql安装路径
find / -name mysql -print
2、建立软连接
ln -fs /usr/local/mysql/bin/mysqldump /usr/bin
ln -fs /usr/local/mysql/bin/mysql /usr/bin
注意, /usr/local/mysql/bin/mysqldump、/usr/local/mysql/bin/mysql,这2个路径要根据你mysql实际安装路径写
在 CentOS 上,如果 pg_dump
命令只在 omm
用户下可用,那么您需要在脚本中切换到 omm
用户来执行备份。您可以使用 su -c
来以指定用户执行特定命令。
以下是更新后的脚本示例,其中包括切换到 omm
用户来执行 pg_dump
命令:
1. 创建备份脚本
创建一个用于备份的脚本,例如 /usr/local/bin/pg_backup.sh
:
#!/bin/bash
# 配置参数
BACKUP_DIR="/path/to/backup/directory" # 替换为实际的备份目录路径
DATABASE_NAME="your_database_name" # 替换为实际的数据库名称
USER="your_username" # 替换为实际的 PostgreSQL 用户名
HOST="your_host" # 替换为实际的 PostgreSQL 主机名(如果是本地主机,可以省略)
OMM_USER="omm"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 获取当前日期和时间
TIMESTAMP=$(date +\%Y\%m\%d\%H\%M\%S)
# 备份文件名
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.sql"
# 使用 omm 用户执行 pg_dump 命令
su -c "pg_dump -U $USER -h $HOST $DATABASE_NAME > $BACKUP_FILE" - $OMM_USER
# 保留最近的两个备份文件,删除旧的备份文件
cd "$BACKUP_DIR"
ls -t | grep backup_ | sed -e '1,2d' | xargs -d '\n' rm -f
# 结束脚本
exit 0
2. 赋予脚本执行权限
确保该脚本具有可执行权限:
chmod +x /usr/local/bin/pg_backup.sh
3. 设置 cron
任务
编辑 crontab
文件以添加定时任务。在终端中输入:
crontab -e
在 crontab
文件中添加以下一行,以每天凌晨 2 点执行备份脚本(您可以根据需要调整时间):
0 2 * * * /usr/local/bin/pg_backup.sh
这行的含义是:在每天的凌晨 2 点(分钟为0,小时为2),运行 /usr/local/bin/pg_backup.sh
脚本。
4. 验证 cron
任务是否已添加
保存并关闭 crontab
文件后,您可以使用以下命令查看当前用户的 cron
任务列表,以确认任务是否已成功添加:
crontab -l
5. 验证备份
您可以手动运行备份脚本来验证其功能是否正确:
/usr/local/bin/pg_backup.sh
之后,检查指定的备份目录,确保生成了备份文件,并且只有最新的两个备份文件存在。
通过这些步骤,您就可以在 CentOS 上设置 PostgreSQL 的定时备份,并自动管理备份文件的数量以仅保留最新的两份。同时,脚本会切换到 omm
用户来执行 pg_dump
命令。