zoukankan      html  css  js  c++  java
  • Ubuntu上MySQL的简单自动备份

    Web Digest

    还有众多网络文摘,仅供个人收藏和参考

    Ubuntu上MySQL的简单自动备份

    leave a comment »

    MySQL可以支持Master,Slave之间的动态Replication。这里就不研究了。简单备份主要依靠mysqldump来实现。

    1. 创建具有backup权限的帐号:

    因为backup脚本会明码显示密码,所以权限越低越好,以下是进行backup所需的的最小权限(针对Mysql 5.x)

    mysql> GRANT LOCK TABLES, SELECT, FILE, RELOAD, SUPER, SHOW VIEW,CREATE VIEW
    > ON  *.*
    > TO ‘dba_backup‘ @localhost
    > IDENTIFIED BY ‘password123‘;
    > flush privileges;
    > quit

    这样密码为password123的用户dba_backup就建好了。

    2. 编辑数据库备份脚本

    1) 建一个备份目录 mkdir /var/backup
    2) 编辑 mysql_backup.sh

    #!/bin/sh
    # mysql_backup.sh: backup mysql databases and keep newest 5 days backup.
    # —————————–
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    db_user=”dba_backup
    db_passwd=”password123
    db_host=”localhost”

    #mysql>show databases; to obtain the databases name, list the name below
    #for the db you wish to backup. e.g. databases=”db1 db2 db3″
    databases=”db1″

    # the directory for story your backup file.
    backup_dir=”/var/backup”

    # date format for backup file (dd-mm-yyyy)
    time=”$(date +”%d-%m-%Y”)”
    ######………$(date +”%d-%m-%Y”)…date…..
    # mysql, mysqldump and some other bin’s path
    #MYSQL=”$(which mysql)”
    #MYSQLDUMP=”$(which mysqldump)”
    #MKDIR=”$(which mkdir)”
    #RM=”$(which rm)”
    #MV=”$(which mv)”
    #GZIP=”$(which gzip)”
    #########………………………………..

    # if the directory for storing backup does not exist and not writeable, quit
    test ! -w $backup_dir && echo “Error: $backup_dir is un-writeable.” && exit 0

    # otherwise make the directory to store the newest backup
    test ! -d “$backup_dir” && mkdir “$backup_dir”
    #####………..$backup_dir………..
    # get all databases

    for db in $databases
    do
    mysqldump -u $db_user -h $db_host -p$db_passwd $db | gzip -9 > “$backup_dir/$time.$db.gz”
    done

    #delete the oldest backup 7 days ago
    find $backup_dir -name “*.gz” -mtime +7 |xargs rm -rf
    exit 0;

    3) chmod +x ./mysql_backup.sh

    3. 添加到Cron

    crontab -e
    加入
    0 5 * * * /root/mysql_backup.sh
    每天凌晨5点执行数据库备份

    因为3点留给Drupal的Cron(以www-data身份运行), 4点留给logrotate(系统默认设置)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     
    查看文章
     

    [整理] 参考网友写的一个 MySQL 全备份 SHELL 脚本
    2009年03月26日 星期四 20:55

    已经在地测试过了,可以运行.其中稍作修改即可应用.

    MySQL 备份和恢复策略

    备份策略 使用mysqldump备份数据库

    1. 创建备份目录

    Shell> mkdir /tmp/mysqlbackup

    2. 设置crontab任务,每天执行备份脚本

    shell> crontab -e

    #每个星期日凌晨3:00执行完全备份脚本

    #minute hour    mday    month   wday    command

    0            3 *           *               /root/MySQLBackup/mysqlFullBackup.sh>/dev/null 2>&1

    Shell> mkdir /root/MySQLBackup

    Shell> vi /root/MySQLBackup/mysqlFullBackup.sh

    Shell> chmod 744 /rootMySQLBackup/mysqlFullBackup.sh

    mysqlFullBackup.sh注释:

    #!/bin/sh

    # 这是是注释,建议在 FreeBSD 实际应用时删掉中文注释,以免产生乱码

    绿色的内容请根据需要修改
    # ALL

    #备份所的库
    # db user

    数据库的用户,通常是有能执行 mysqldump 命令权限的用户
    DBUser
    =root

    数据库密码
    DBPass
    =hy0kl

    # db host

    取得当前主机的主机名
    DBHost
    =`hostname -s`

    # make sure you already created the backup directory

    使用前请确认已经创建了备份目录
    BackupPath
    =/tmp/mysqlbackup

    # the path of mysqld

    # mysql 的安装目录,寻找 bin 目录下的 mysqldump 命令
    DBbinPath
    =/usr/local/bin/mysqldump

    # error record log file

    错误报告文件
    ErrorLog
    =${BackupPath}/error.txt

    执行备份

    if ${DBbinPath} -u${DBUser} -p${DBPass} --opt --default-character-set=utf8 --extended-insert=false --triggers -R --hex-blob --all-databases --flush-logs --delete-master-logs --delete-master-logs > ${BackupPath}"/"${DBHost}"-"`date "+%Y-%m-%d"`".sql" ;
    then
         
    删除六天前旧的备份文件
         find $
    {BackupPath}"/" -mtime +-exec rm {} \;
    else
         
    生成错误报告,如果备份失败
         echo 
    "-------------------" >> ${ErrorLog}
         echo `date 
    "+%Y-%m-%d"` >> ${ErrorLog}
         echo 
    "-------------------\n" >> ${ErrorLog}

         exit
    fi


     

    linux下利用shell脚本定时备份my...监控mysql占cpu负载并发送日志记...
    shell脚本备份mysql并自动ftp到...mysql自动备份脚本shell
    自动备份Mysql数据库的shell脚本Linux自动备份MySQL数据库并上传...
    监控mysql占cpu资源并自动重启的...mysql单数据库备份并ftp的shell...
    写了一个简单的shell脚本监控mys...用shell脚本限制mysql数据库的大...
    更多>>

     
    最近读者:

    yjg021bluedarkangelguoli0813lien5xcryptAb_zero水色皇朝yzhkpli

     
    网友评论:

    12009年03月27日 星期五 09:58 | 回复
    http://www.bsdlover.cn/html/14/n-14.html
    crontab不执行的解决办法crontab不 执行,一般都是因为路径的问题,把里面的命令全改成完整路径即可。不过我遇到过一次比较奇怪的问题,路径没有问题,在别的机器上能执行的,可是在这个机器 上死活不执行,后来发现是cron停掉了,可能是因为频繁的修改cron吧, /usr/sbin/cron stop; /usr/sbin/cron start;以后就ok了。

     

    22010年11月04日 星期四 20:53 | 回复
    写得不错,来顶一个!

     
    发表评论:

    姓 名:mlzboy
    内 容:
    插入表情
    验证码: 请点击后输入四位验证码,字母不区分大小写
         

       


    ©2010 Baidu

  • 相关阅读:
    NPOI操作EXCEL
    几个英文的数学概念
    C#中将鼠标光标变为忙碌状态
    C#使用Linq to Sqlite
    SSM-SpringMVC-25:SpringMVC异常顶级之自定义异常解析器
    SSM-SpringMVC-24:SpringMVC异常高级之自定义异常
    SSM-SpringMVC-23:SpringMVC中初探异常解析器
    SSM-SpringMVC-22:SpringMVC中转发(forward)和重定向(redirect)
    SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇
    jQuery-01:on live bind delegate
  • 原文地址:https://www.cnblogs.com/lexus/p/1893220.html
Copyright © 2011-2022 走看看