精华内容
下载资源
问答
  • /bin/bash# 作者:龙力勤# 出自懒人运维:http://www.lazysa.com# 用途:mysql数据库备份脚本。# 表述:该脚本可以将数据库备份到/backup目录,以便你随时恢复备份。# 同时该脚本可以指定你要备份的数据库。# 更多关于此...

    #!/bin/bash

    # 作者:龙力勤

    # 出自懒人运维:http://www.lazysa.com

    # 用途:mysql数据库备份脚本。

    # 表述:该脚本可以将数据库备份到/backup目录,以便你随时恢复备份。

    # 同时该脚本可以指定你要备份的数据库。

    # 更多关于此脚本的讨论,请参考:

    # http://www.lazysa.com/2009/08/758.html

    # 最新更新:2009-08

    MyUSER=”SET-MYSQL-USER-NAME”     # USERNAME

    MyPASS=”SET-PASSWORD”       # PASSWORD

    MyHOST=”localhost”          # Hostname

    # Linux bin paths, change this if it can’t be autodetected via which command

    MYSQL=”$(which mysql)”

    MYSQLDUMP=”$(which mysqldump)”

    CHOWN=”$(which chown)”

    CHMOD=”$(which chmod)”

    GZIP=”$(which gzip)”

    # Backup Dest directory, change this if you have someother location

    DEST=”/backup”

    # Main directory where backup will be stored

    MBD=”$DEST/mysql”

    # Get hostname

    HOST=”$(hostname)”

    # Get data in dd-mm-yyyy format

    NOW=”$(date +”%d-%m-%Y”)”

    # File to store current backup file

    FILE=”"

    # Store list of databases

    DBS=”"

    # DO NOT BACKUP these databases

    IGGY=”test”

    [ ! -d $MBD ] && mkdir -p $MBD || :

    # Only root can access it!

    $CHOWN 0.0 -R $DEST

    $CHMOD 0600 $DEST

    # Get all database list first

    DBS=”$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse ‘show databases’)”

    for db in $DBS

    do

    skipdb=-1

    if [ "$IGGY" != "" ];

    then

    for i in $IGGY

    do

    [ "$db" == "$i" ] && skipdb=1 || :

    done

    fi

    if [ "$skipdb" == "-1" ] ; then

    FILE=”$MBD/$db.$HOST.$NOW.gz”

    # do all inone job in pipe,

    # connect to mysql using mysqldump for select mysql database

    # and pipe it out to gz file in backup dir

    e35bfe3110d794eaf0b627262912e830.gif

    $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE

    fi

    done

    觉得文章有用?立即:

    和朋友一起 共学习 共进步!

    猜您喜欢

    展开全文
  • MySQL数据库备份脚本实验环境:跨主机操作mysql-server:192.168.200.101mysql-client:192.168.200.102 两台机器都安装mariadb实验要求:对mysql-server的auth库和client库实现异地备份,每天凌晨2:00进行备份,...

    MySQL数据库备份脚本

    实验环境:跨主机操作

    mysql-server:192.168.200.101

    mysql-client:192.168.200.102     两台机器都安装mariadb

    实验要求:对mysql-server的auth库和client库实现异地备份,每天凌晨2:00进行备份,撰写一个数据恢复脚本。

    MySQL服务端授权,给予select和lock tables(锁表)权限,以备份

    [root@localhost ~]# mysql -uroot -p123456

    mysql> grant select,lock tables on auth.* to 'admin'@'192.168.200.102' identified by '123456';

    Query OK, 0 rows affected (0.00 sec)

    mysql> grant select,lock tables on client.* to 'admin'@'192.168.200.102' identified by '123456';

    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    客户端安装客户端软件

    [root@client ~]# yum -y install mysql 或者安装mariadb

    连接测试

    [root@client ~]# mysql -uadmin -p -h192.168.200.101

    mysql> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | auth               |

    | client             |

    | test               |

    +--------------------+

    4 rows in set (0.00 sec)

    撰写客户端备份脚本

    [root@client ~]# vim /opt/bakmysql.sh

    #!/bin/bash

    # MySQL数据库备份脚本

    #设置登录变量

    MY_USER="admin"

    MY_PASS="123456"

    MY_HOST="192.168.200.101"

    MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"

    #设置备份的数据库

    MY_DB1="auth"

    MY_DB2="client"

    #定义备份路径、工具、时间、文件名

    BF_DIR="backup"

    BF_CMD="/usr/bin/mysqldump"

    BF_TIME=$(date +%Y%m%d-%H%M)

    NAME_1="$MY_DB1-$BF_TIME"

    NAME_2="$MY_DB2-$BF_TIME"

    #备份为.sql脚本,然后打包压缩(打包后删除原文件)

    [ -d $BF_DIR ] || mkdir -p $BF_DIR

    cd $BF_DIR

    $BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql

    $BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql

    /bin/tar zcf $NAME_1.tar.gz $NAME_1.sql --remove &>/dev/null

    /bin/tar zcf $NAME_2.tar.gz $NAME_2.sql --remove &>/dev/null

    [root@client ~]# chmod +x /opt/bakmysql.sh

    [root@client ~]# /opt/bakmysql.sh

    [root@client ~]# ls backup/

    auth-20160505-1805.tar.gz  client-20160505-1805.tar.gz

    [root@client ~]# tar tvf backup/auth-20160505-1805.tar.gz

    -rw-r--r-- root/root      1967 2016-05-05 18:05 auth-20160505-1805.sql

    [root@client ~]# tar tvf backup/client-20160505-1805.tar.gz

    -rw-r--r-- root/root      2250 2016-05-05 18:05 client-20160505-1805.sql

    [root@client ~]# crontab -e

    02***/opt/bakmysql.sh

    执行后重启crontab

    改变系统时间,执行任务计划,模拟每天的备份,为之后的恢复脚本做准备

    [root@client ~]# date 050601592016.59//MMDDhhmmYY.SS月日小时分钟.秒

    2016年05月06日星期五01:59:59 CST

    [root@client ~]# ls backup/

    auth-20160505-1805.tar.gz  client-20160505-1805.tar.gz

    auth-20160506-0200.tar.gz  client-20160506-0200.tar.gz

    [root@client ~]# date 050701592016.59

    2016年05月07日星期六01:59:59 CST

    [root@client ~]# date 050801592016.59

    2016年05月08日星期日01:59:59 CST

    [root@client ~]# ls backup/

    auth-20160505-1805.tar.gz  auth-20160508-0200.tar.gz    client-20160507-0200.tar.gz

    auth-20160506-0200.tar.gz  client-20160505-1805.tar.gz  client-20160508-0200.tar.gz

    auth-20160507-0200.tar.gz  client-20160506-0200.tar.gz

    撰写数据恢复脚本

    [root@client ~]# vim /opt/restore_mysql.sh

    #!/bin/bash

    #恢复MySQL数据库数据脚本

    #设置变量

    MY_USER="admin"

    MY_PASS="123456"

    MY_HOST="192.168.200.101"

    BF_DIR="backup"

    mkdir .aaa     //创建隐藏目录

    ls $BF_DIR |column -t > .aaa/db_list        //竖项显示

    awk -F'-' '{print $2}' .aaa/db_list > .aaa/dt.txt

    read -p "请指定要恢复数据库的日期(YYYYMMDD):" dt

    if [ $dt -ge 20191130 ] && [ $dt -le 20191201 ];then

    grep "$dt" .aaa/dt.txt &>/dev/null

    if [ $? -ne 0 ];then

    echo "很抱歉,您恢复数据库的备份日期不再备份日期范围内"

    else

    echo "搜索到的可恢复数据库如下:"

    awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list

    read -p "请选择您要恢复数据库的编号: " nb

    nm=$(awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list |awk /$nb/'{print $2}')

    echo "现在开始恢复数据库:$nm到$dt"

    cd $BF_DIR

    onm=$(ls |grep "$nm-$dt")

    mkdir .bbb

    tar xf $onm -C .bbb

    mysql -u$MY_USER -p$MY_PASS -h$MY_HOST  < .bbb/*

    echo "$nm已经恢复到$dt"

    rm -rf .bbb

    cd - &>/dev/null

    rm -rf .aaa

    fi

    else

    echo "很抱歉,您恢复数据库的备份日期不再备份日期范围内"

    fi

    [root@client ~]# chmod +x /opt/restore_mysql.sh

    如在客户端恢复数据,需要开放权限

    mysql> grant all on auth.* to 'admin'@'192.168.200.102';

    Query OK, 0 rows affected (0.00 sec)

    mysql> grant all on client.* to 'admin'@'192.168.200.102';

    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    恢复测试:

    [root@client ~]# /opt/restore_mysql.sh

    请指定要恢复数据库的日期(YYYYMMDD):20160507

    搜索到的可恢复数据库如下:

    3 auth

    7 client

    请选择您要恢复数据库的编号: 3

    现在开始恢复数据库:auth到20160507

    auth已经恢复到20160507

    [root@client ~]# /opt/restore_mysql.sh

    请指定要恢复数据库的日期(YYYYMMDD):20100101

    很抱歉,您恢复数据库的备份日期不再备份日期范围内

    bash -X 脚本名  查看执行过程

    展开全文
  • MySQL数据库备份脚本

    2019-08-09 16:41:42
    vim /opt/bakmysql.sh ... 2 #mysql数据库备份脚本 3 #设置变量 4 MY_USER="admin" 5 MY_PASS="123456" 6 MY_HOST="192.168.137.21" 7 MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST" 8 #设置备份的数据库 9...

    vim /opt/bakmysql.sh

      1 #!/bin/bash
      2 #mysql数据库备份脚本
      3 #设置变量
      4 MY_USER="admin"
      5 MY_PASS="123456"
      6 MY_HOST="192.168.137.21"
      7 MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"
      8 #设置备份的数据库
      9 MY_DB1="auth"
     10 MY_DB2="sunpeng"
     11 #定义备份路径、工具、时间、文件名
     12 BF_DIR="/backup"
     13 BF_CMD="/usr/bin/mysqldump"
     14 BF_TIME=$(date +%Y%m%d-%H%M)
     15 NAME_1="$MY_DB1-$BF_TIME"
     16 NAME_2="$MY_DB2-$BF_TIME"
     17 #备份为.sql脚本,然后打包压缩(打开后删除源文件)
     18 [ -d $BF_DIR ] || mkdir -p $BF_DIR
     19 cd $BF_DIR
     20 $BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql
     21 $BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql
     22 /bin/tar zcf $NAME_1.tar.gz $NAME_1.sql --remove & > /dev/null
     23 /bin/tar zcf $NAME_2.tar.gz $NAME_2.sql --remove & > /dev/null
    保存推出后,修改权限 chmod +x /opt/bakmysql.sh

    执行 : sh /opt/bakmysql.sh

    数据库自动备份到   /backup中。

    也可以设置定期的自动备份。

     

    展开全文
  • mysql数据库备份脚本

    2016-03-18 16:54:00
    mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4you SOCKET=/tmp/mysql3306.sock LOGIN="mysql -S...

                        mysql数据库备份脚本                      

    mysql数据库分库备份脚本:

    [root@localhost tmp]# cat mysql.sh #
    !/bin/bash USER=root PASSWORD=joy4you SOCKET=/tmp/mysql3306.sock LOGIN="mysql -S $SOCKET -u $USER -p$PASSWORD" DUMP="mysqldump -S $SOCKET -u $USER -p$PASSWORD" DATA=$($LOGIN -e "show databases;" | egrep -v "schema$|test|mysql" | sed '1d') for data in $DATA;do $DUMP $data | gzip >/data/${data}_$(date +%Y_%m_%d_%H).sql.gz done

     

    mysql数据库分表备份脚本:
    #!/bin/bash
    USER=root
    PASSWORD=joy4you
    SOCKET=/tmp/mysql3306.sock
    LOGIN="mysql -S $SOCKET -u $USER -p$PASSWORD"
    DUMP="mysqldump -S $SOCKET -u $USER -p$PASSWORD"
    DATA=$($LOGIN -e "show databases;" | egrep -v "schema$|test|mysql" | sed '1d')
    for data in $DATA;do
        TABLE=$($LOGIN -e "use $data;show tables;"|sed '1d')
        for table in $TABLE;do
            [ ! -d /data/$data ] && /bin/mkdir /data/$data
            $DUMP $data $table | gzip >/data/$data/${data}_${table}_$(date +%Y_%m_%d_%H).sql.gz
        done
    done

     

    转载于:https://www.cnblogs.com/tangshengwei/p/5292796.html

    展开全文
  • /bin/bash#Use: mysql按天自动备份脚本#Author: wl_it#Date: 2020.05.06#备份目录BAK_DIR=/data/backup/`date +%Y%m%d`#数据库名称MYSQL_DB=study_cloudalibaba_db#备份专用数据库登陆名MYSQL_USER=backup#备份专用...
  • 数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,...其中热备可以通过mysql replication主从复制进行实时备份,percona的xtrabackup以及mysql自带的mysqldump等,可以根据不同需求...
  • MySQL 数据库备份脚本

    2020-04-11 14:44:26
    一个数据库备份小脚本,实现指定数据库数据表的定时备份 完整脚本在 database-backup 个人博客:DoubleFJ の Blog 前言 当然首先是有这个需求才会去想着写这么个脚本来实现。之前使用过阿里的 otter 来做数据同步,...
  • Mysql数据库备份脚本

    2021-02-25 14:07:46
    数据库备份 #!/bin/bash USER=jumpserver PASS=jumpserver DBDIR=/databak/Data_Backup #DAY=`date +%Y%m%d` #年月 MONTH=`date +%Y%m` #日期时间 DT=`date '+%Y%m%d%H%M'` #主机ip DBIP=`cat /etc/sysconfig/...
  • 这个脚本是07年在网上查找并经过修改用到正式系统下的脚本数据库名字让我改为了LinuxIDC.com1.首先建立sh文件,在/usr/bin/先建立一个名叫MySQLscript.sh的脚本文件,内容参见mysqlscript.sh2.其次在根目录下打开 #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,680
精华内容 1,872
关键字:

mysql数据库备份脚本

mysql 订阅