• 在Ubuntu/Linux中自动备份MySQL数据库


    一、编写备份脚本

    1. login_user="root" #数据库登录账户
    2. login_passwd="" #数据库登录密码
    3. vDate=`date +%Y%m%d` #当前日期,用作目录名
    4. backup_dir="/home/data/backups/"$vDate"/" #配置备份文件保存的目录
    5. echo $backup_dir
    6. if [ ! -d $backup_dir ];then
    7. mkdir -p $backup_dir
    8. fi
    9. # 将需要备份的数据放入
    10. db_array=("dbName1" "dbName1" "dbName1") #配置要备份的数据库
    11. for db_name in ${db_array[*]}
    12. do
    13. mysqldump -u$login_user -p$login_passwd $db_name > $backup_dir$db_name.sql
    14. done
    15. # 删除7天前备份的文件
    16. find backup_dir -atime +7 -name "*.sql" -exec rm -rf {} \
    17. echo "备份结束"
    18. # 如果遇到unexpected end of file,使用vim打开文件后,输入“:set ff”,如果看到结果为dos,则文件编码不正确
    19. # 需要输入“:set ff=unix”进行修复

    脚本中带有注释,可以自行进行修改或调整。

    完成编写后,需要将该脚本保存为一个.sh后缀的文件。

    二、确认自己的Ubuntu/Linux使用bash脚本

    运行以下命令:

    ls -al /bin/sh

    如果显示结果中出现“bash”,则可以跳过本小节:

     

    但如果显示的是"dash",则需要继续以下步骤。

    输入下列命令:

    sudo dpkg-reconfigure dash

     操作系统会弹出一个对话框,询问是否要使用“dash”作为默认的执行脚本,此处需要选择“No” :

    完成之后,再次使用下列命令检查脚本的类型:

    ls -al /bin/sh

    三、使用crontab定时执行

    3.1安装crontab

    crontab是Ubuntu/Linux中一个常用的定时执行程序。大多数情况下在Ubuntu中都会预装crontab。

    如果没有安装的话,可以使用以下命令进行安装:

    apt-get install cron

    如果你已经安装过该程序了,则系统会提示你没有任何更新:

    3.2启动或停止crontab

    可以使用下列命令来启动、停止或是查看cron的运行状态:

    查看crontab是否运行:

    sudo service cron status

    启动crontab:

    sudo service cron start

     停止crontab:

    sudo service cron stop

    重启crontab:

    sudo service cron restart

    3.3编辑执行规则

    cron的执行规则是需要自行编辑的。输入以下命令:

    crontab -e

    系统会打开cron的配置文件,文件中有一大堆注释,如下:

    注释中简单描述了cron的执行规则是怎么定义的。这个规则主要分为两个部分,第一部分是时间规则,第二部分是需要执行的程序或脚本。

    注意cron自带注释中的以下内容:

    1. # For example, you can run a backup of all your user accounts
    2. # at 5 a.m every week with:
    3. # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

     这段注释列举了一个简单的备份例子:在每周1的早晨5点备份指定的目录

    例子中的规则如下:

    0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

    前半部分由5个数字或符号构成,这5个数字和符号分别代表:

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)

    而星标符号“*”则表示任意时间或时段

    在这5个数字或符号之后,就是我们需要执行的程序及其参数 。

    在本例中,我们需要自动备份MySQL数据库,所以我们可以这样编辑规则:

    0 1 * * *  /my_data_backup.sh >> /backup_log.log

    在这条规则中,前半部分的“0 1 * * *”代表的是每天的凌晨1点执行。后半部分则是在第一步中所编写的自动备份脚本,而最后的“>>”表示我们需要将执行日志保存在哪个日志文件中。

    所以cron规则文件整体看起来会像是这样:

    完成之后保存退出即可。保存退出的方式与vim一致。

    最后,重启cron程序即可。 

  • 相关阅读:
    基于 RocketMQ 的 Dubbo-go 通信新范式
    react前端优化小结笔记
    Leetcode2-两数相加代码详解
    BST基本性质,LeetCode 235. 二叉搜索树的最近公共祖先
    CSS中position的属性有哪些,区别是什么
    产品经理基础-10运营平台端产品设计(完结~撒花~)
    https 原理分析进阶-模拟https通信过程
    生成订单30分钟未支付,则自动取消,该怎么实现?
    java学习part04
    JAVA自动化之Junit单元测试框架详解
  • 原文地址:https://blog.csdn.net/freezingxu/article/details/126676493