linux下mysql数据备份与自动备份实例

脚本放在 /home/user/mysql教程_backup.sh

    crontab

    # crontab -l

    # m h  dom mon dow   command

    28 16 * * * /home/user/mysql_backup.sh

    脚本如下

    #!/bin/sh

    # mysql_backup.sh: backup mysql databases and keep newest 5 days backup.

    #

    # last updated: 20 march 2006

    # ----------------------------------------------------------------------

    # this is a free shell script under gnu gpl version 2.0 or above

    # copyright (c) 2006 sam tang

    # feedback/comment/suggestions : http://www.real-blog.com/

    # ----------------------------------------------------------------------

    # your mysql login information

    # db_user is mysql username

    # db_passwd is mysql password

    # db_host is mysql host

    # -----------------------------

    db_user="root"

    db_passwd="password"

    db_host="localhost"

    # the directory for story your backup file.

    backup_dir="/home/mybackup"

    # date format for backup file (dd-mm-yyyy)

    time="$(date +"%d-%m-%y")"

    # mysql, mysqldump and some other bin's path

    mysql="/usr/local/mysql/bin/mysql"

    mysqldump="/usr/local/mysql/bin/mysqldump"

    mkdir="/bin/mkdir"

    rm="/bin/rm"

    mv="/bin/mv"

    gzip="/bin/gzip"

    # check the directory for store backup is writeable

    test ! -w $backup_dir && echo "error: $backup_dir is un-writeable." && exit 0

    # the directory for story the newest backup

    test ! -d "$backup_dir/backup.0/" && $mkdir "$backup_dir/backup.0/"

    # get all databases

    all_db="$($mysql -u $db_user -h $db_host -p$db_passwd -bse 'show databases')"

    for db in $all_db

    do

    $mysqldump -u $db_user -h $db_host -p$db_passwd $db | $gzip -9 > "$backup_dir/backup.0/$time.$db.gz"

    done

    # delete the oldest backup

    test -d "$backup_dir/backup.5/" && $rm -rf "$backup_dir/backup.5"

    # rotate backup directory

    for int in 4 3 2 1 0

    do

    if(test -d "$backup_dir"/backup."$int")

    then

    next_int=`expr $int + 1`

    $mv "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"

    fi

    done

    exit 0;

    备注:

    mysql是以mysql用户身份运行的,对/home /mybackup不可写也会失败

    chmod 777 /home/mybackup问题解决了

看一个在lix下定时备份mysql数据库教程

添加backupmysqleveryday.sh(vi /data/shell/backupmysqleveryday.sh)

  #!/bin/sh

  #this shell is user for backup mysql data everyday

  #author:www.ieliwb.com

  #path-config

  base_mysql_path=/data/webserver/mysql/

  mysql_dump_path=/data/mysqlbackup/

  mnt_back_path=/mnt/web/mysqlbackup/

  ftp_back_path=mysql_data_backup/

  #mysql-config

  mysql_user=”root”

  mysql_pass=”*******”

  #ftp-config

  ftp_host=”ip”

  ftp_user=”********”

  ftp_pass=”********”

  backup_name=`date +%y%m%d%h%m%s`

  cd ${mysql_dump_path}

  #mysqldump

  ${base_mysql_path}bin/mysqldump -u${mysql_user} -p${mysql_pass} -all-database > ${backup_name}.sql

  #pack

  tar zcf ${backup_name}.tar.gz ${backup_name}.sql

  rm -f ${backup_name}.sql

  #backup to mnt

  cp ${backup_name}.tar.gz ${mnt_back_path}${backup_name}.tar.gz

  #ftp to other host

  ftp -n<

  open ${ftp_host}

  user ${ftp_user} ${ftp_pass}

  bin

  prompt off

  cd ${ftp_back_path}

  passive

  put ${backup_name}.tar.gz

  close

  bye

  !

  2.添加定时计划(vi /etc/crontab)

  01 0 * * * root /data/shell/backupmysqleveryday.sh

  每天0:01点执行

 

时间: 2024-10-29 11:53:13

linux下mysql数据备份与自动备份实例的相关文章

Linux 下通过脚本实现远程自动备份

考虑到在本机上备份数据,一旦该机器硬盘出现故障,数据无法取出.远程手动备份数据费时费力且 不及时.最好的方法就是通过脚本实现远程自动互备.但远程无论是通过SSH登陆,还是通过scp拷贝文件 都需要输入密码.为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用rsync,scp ,rexec等命令来做的远程备份了. 1. 设置无需密码的ssh登陆,方法如下: 假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码,那我们可按照下面的步骤 来做: 1)在A机上生成钥

Linux下MySQL数据文件目录搬迁

  操作环境:centos 6.4 64位 MySQL 版本:5.6.13(rpm安装) 操作目的:将MySQL默认的数据文件存储目录:/var/lib/mysql 改为/var/lib/mysql2 操作步骤: 1.停掉mysql 服务 # service mysql stop 2.拷贝 或者 重命名/var/lib/mysql目录为 /var/lib/mysql2 # cd /var/lib # cp -R mysql mysql2 | mv mysql mysql2 3.修改mysql2

linux下mysql如何自动备份shell脚本_linux shell

Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库.其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令. #!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can s

深入解析Linux下MySQL数据库的备份与还原_Mysql

深入解析Linux下MySQL数据库的备份与还原 1. 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可. 2. 还原法一:[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>&

Linux下MySQL的备份与还原

Linux下MySQL的备份与还原 1. 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可.2. 还原法一:[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同1

代理-linux下人大金仓数据库的备份和还原

问题描述 linux下人大金仓数据库的备份和还原 人大金仓数据库的服务代理,我现在没思路就,有哪位大神告诉我具体应该怎么实施 解决方案 首先搞清楚是什么类型的数据库,是mysql oracle还是什么,然后不同的数据库有不同的备份方法.google下就有.或者保险起见,直接对整个硬盘备份,用ghost 解决方案二: 那就使用ghost或者true image,只要数据在本地都可以备份,不管什么软件 解决方案三: 人家这软件肯定有readme或者啥说明文档呢,你仔细看看,不行联系客服么.

linux下mysql无法删除!!

问题描述 linux下mysql无法删除!! 系统里面出现了两个 mysql-4.1.12-3.RHEL4.1,一个为x64 一个i386 yum -y remove mysql-4.1.12-3.RHEL4.1 每次都提示成功. 但是再看,同样还是有,并没有删除.求大神解答! 解决方案 http://blog.csdn.net/lsbhjshyn/article/details/9167393 解决方案二: 可能安装的包当时有问题等,要么就留着好了,不然就是自己手动删除 解决方案三: mysq

LINUX下Oracle数据导入导出的方法详解_oracle

本文讲述了LINUX下Oracle数据导入导出的方法.分享给大家供大家参考,具体如下: 一. 导出工具 exp 1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移   它有三种模式: a.  用户模式: 导出用户所有对象以及对象中的数据: b.  表模式: 导出用户所有表或者指定的表: c.  整个数据库: 导出数据库中所有对象. 2. 导出工具exp交互式命令行方式的使用的例子: $ex

[20151025]linux下删除数据文件的恢复细节3

[20151025]linux下删除数据文件的恢复细节3.txt --以前曾经写过一篇关于 --链接:http://blog.itpub.net/267265/viewspace-763969/ --里面提到实际上这种方式对于生产系统不是很合适,而且生产系统情况非常复杂,不可能出现删除数据文件时没有事务产生. --这种方式仅仅适合no archivelog的模式(没有办法的选择),我当时还提到这种方式一定要快,因为我的测试执行 alter system --checkpoint;,数据库直接cr