mysql备份

学习目标:centos上MySQL自动备份

学习内容:

`
要在CentOS上设置MySQL定时备份数据并保留最新的两份备份文件,您可以通过以下步骤实现:

  1. 创建备份脚本
    创建一个备份脚本,并使用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_useryour_db_passwordyour_db_name/path/to/backup/directory替换为实际的数据库凭据和备份路径。

  2. 赋予脚本执行权限
    使用以下命令为脚本赋予执行权限:

    chmod +x backup.sh
    
  3. 设置定时任务
    使用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 命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值