zoukankan      html  css  js  c++  java
  • ubuntu下mysql定时备份

    一:ubuntu下自动备份mysql数据库

    转载来源:https://jingyan.baidu.com/article/ab0b563097cabac15afa7dbc.html

    1、创建保存备份文件的目录:/home/mysql_data

    sudo mkdir mysql_data

    2、创建备份脚本文件:/home/mysql_data/mysql_databak.sh

    touch mysql_databak.sh#创建文件
    sudo vi mysql_databak.sh#编辑文件

    3、代码如下
    #!/bin/sh
    
    DUMP=/usr/bin/mysqldump 
    OUT_DIR=/home/mysql_data
    LINUX_USER=root
    DB_NAME=jqg2
    DB_USER=root
    DB_PASS=123456
    DAYS=7
    
    cd $OUT_DIR
    DATE=date +%Y%m%d%H%M
    OUT_SQL=$DATE.sql
    TAR_SQL="mysqldata_bak_$DATE.tar.gz"
    
    DUMP -uDB_USER -pDB_PASS DB_NAME --default-character-set=gbk --opt -Q -R --skip-lock-tables>$OUT_SQL
    tar -czf TAR_SQL ./OUT_SQL
    rm $OUT_SQL
    
    chown LINUX_USER:LINUX_USER OUT_DIR/TAR_SQL
    find OUT_DIR -name "mysqldata_bak*" -type f -mtime +DAYS -exec rm {} ;
    
    

    代码解释:

    #!/bin/sh
    
    DUMP=/usr/bin/mysqldump #mysqldump备份程序执行路径
    OUT_DIR=/home/mysql_data #备份文件存放路径
    LINUX_USER=root #系统用户名
    DB_NAME=jqg2 #要备份的数据库名字
    DB_USER=root #数据库账号 注意:非root用户要使用备份参数 --skip-lock-tables,否则可能会报错
    DB_PASS=123456 #数据库密码
    DAYS=7 #DAYS=7代表要删除7天前的备份,即只保留最近7天的备份
    
    cd $OUT_DIR #进入备份存放的目录
    DATE=date +%Y%m%d%H%M #获取当前系统的时间,注意:date写法
    OUT_SQL=$DATE.sql #备份数据库的文件名
    TAR_SQL="mysqldata_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
    
    DUMP -uDB_USER -pDB_PASS DB_NAME --default-character-set=gbk --opt -Q -R --skip-lock-tables>$OUT_SQL #执行备份命令
    tar -czf TAR_SQL ./OUT_SQL #压缩为备份数据库文件为.tar.gz格式
    rm $OUT_SQL #删除.sql格式的备份文件
    
    chown LINUX_USER:LINUX_USER OUT_DIR/TAR_SQL #更改备份数据库文件的所有者
    find OUT_DIR -name "mysqldata_bak*" -type f -mtime +DAYS -exec rm {} ; #删除7天前的备份文件,注意:{} ;中间有空格:wq 保存退出
    
    
    4、修改文件属性,使其可执行

    sudo chmod +x /home/mysql_data/mysql_databak.sh

    5、修改/etc/crontab

    vi crontab 在其文件内添加

    45 22 * * * root /home/mysql_data/mysql_databak.sh #表示每天22点45分执行备份
    
    6、重新启动crond使设置生效

    service cron stop #停止
    service cron start #启动
    /etc/init.d/cron restart #重启

    7、设为开机启动:

    ubuntu系统不用执行这个命令

    chkconfig cron on #设为开机启动

    二:脚本文件另外写法:

    #!/bin/sh
    DB_NAME=""
    DB_USER=""
    DB_PASSWD=""
    
    BIN_DIR="/opt/lampp/bin/"	# mysql 执行文件目录
    TEMP_DIR="/opt/lampp/db_backup/${DB_NAME}/"
    BACKUP_DIR="/opt/lampp/db_backup/${DB_NAME}_db_backup/"
    DATE=`date +%Y%m%d_%H%M%S`
    
    rm -rf ${TEMP_DIR}
    [ -d ${TEMP_DIR} ] || mkdir ${TEMP_DIR}
    [ -d ${BACKUP_DIR} ] || mkdir ${BACKUP_DIR}
    
    #delete files over 10 days
    find ${BACKUP_DIR} -mtime +10 -exec rm -rf {} ;
    #back db
    # 日志选项暂未打开 --flush-logs --master-data=2
    ${BIN_DIR}mysqldump -u${DB_USER} -p${DB_PASSWD} ${DB_NAME} --lock-all-tables > ${TEMP_DIR}db_backup_${DB_NAME}_${DATE}.sql
    cp ${TEMP_DIR}db_backup_${DB_NAME}_${DATE}.sql ${BACKUP_DIR}db_backup_${DB_NAME}_${DATE}.sql
    
    
  • 相关阅读:
    STL源码剖析之_allocate函数
    PAT 1018. Public Bike Management
    PAT 1016. Phone Bills
    PAT 1012. The Best Rank
    PAT 1014. Waiting in Line
    PAT 1026. Table Tennis
    PAT 1017. Queueing at Bank
    STL源码剖析之list的sort函数实现
    吃到鸡蛋好吃,看看是哪只母鸡下的蛋:好用的Sqlite3
    cJSON
  • 原文地址:https://www.cnblogs.com/itzlg/p/11047834.html
Copyright © 2011-2022 走看看