如何有效的备份用户数据

前言

  相信大家一定遇到过需要在生产环境备份用户的mysql数据,以便满足数据的存储、迁移等操作。下面我将介绍我是如何操作的。

满足每天定期备份,备份文件的有效期是7天,备份数据为:患者信息、用户信息
 
环境:linux Ubuntu docker mysql
 
废话不多说,下面 show you the code
 

 

其中a.sh 的脚本内容如下:

 

  1. cd /opt/ring/package/script/mysql

     

  2. 创建 backup_mysql.sh 脚本内容如下:

    #!/usr/bin/env bash
    #back mysql
    echo "begin mysql backup"
    sudo docker exec ring‐mysql /var/lib/mysql/backup.sh
  3. 将 a.sh 备份mysql数据库文件的脚本复制到mysql容器内:

    docker cp a.sh ring‐mysql:/var/lib/mysql/backup.sh
  4. 进入mysql容器的 /var/lib/mysql/ 位置:
    chmod 755 backup.sh

    其中a.sh 的脚本内容如下:

    #!/bin/bash
    #容器ID
    container_id="3b4482df9ecd"
    #登录用户名
    mysql_user="root"
    #登录密码(注意 如果密码包含特殊符号 前面要用'\')
    mysql_password="1qaz2wsx"
    mysql_port="3306"
    #备份的数据库名
    mysql_database="rings"
    #备份的表名
    mysql_table1="t_patient"
    mysql_table2="t_user"
    # 备份文件存放地址(根据实际情况填写)
    backup_dir="/var/lib/mysql/backup_mysql/${backup_time}"
    # 备份文件存放目录创建
    mkdir -p ${backup_dir}
    # 是否删除过期数据
    expire_backup_delete="true"
    #过期天数
    expire_days=3
    backup_time=`date +%Y%m%d%H%M`
    
    # 备份指定数据库中数据
    docker exec  $container_id mysqldump  -P$mysql_port -u$mysql_user -p$mysql_password  $mysql_database $mysql_table1 $mysql_table2> $backup_dir/$backup_time.sql
     
    # 删除过期数据
    if [ "$expire_backup_delete" == "true" -a "$backup_dir"!="" ];
    then
            `find $backup_dir/ -type f -mtime +$expire_days | xargs rm -rf`
        echo "Expired backup data delete complete!"
    fi

     

  5. 在服务器创建对应的定时任务:

    crontab ‐e

    #每天0点定时执行备份mysql数据库文件
    0 0 * * * sh /opt/ring/package/script/mysql/backup_mysql.sh

     

  6.  重启 cron 服务:
sudo service cron restart

使用以下脚本查看定时任务执行情况:

cat /var/log/cron.log
 

最后在容器内:/var/lib/mysql/backup_mysql的位置会生成包含患者信息、用户信息的数

 

 

请登录后发表评论

    没有回复内容