mysql备份单实例(一)shell

一、脚本说明
1、需要备份2个库(mysqltest1 mysqltest)
2、开启4个进程
3、可以选择进行备份不压缩和备份压缩
4、可以对不需要的数据库剔除
5、backup用户在数据库里的权限
grant select,reload,super,lock tables,create view,show view on *.* to ‘backup‘@‘localhost‘ identified by ‘backup‘;
flush privileges;
6、计划任务
00 00 * * * cd /opt/dbbak && bash mysqlback.sh mysqlbackupconf >> /opt/dbbak/dbbackup.log 2>&1
7、会删除三天前的binlog
8、mysql版本5.5的
9、debian7.4 (3.2.54-2 x86_64)

二、具体脚本如下
cat mysqlback.sh
#!/bin/bash
#--------------------------------------------------
#Author:jimmygong
#Email:[email protected]
#FileName:mysqlback.sh
#Function: 
#Version:1.0 
#Created:2015-06-29
#--------------------------------------------------
if [[ $# -ne 1 ]]
then
    echo -e "Usage:$0 mysqlbackupconf"
    exit 1
else
    config=$1
    if [[ ! -f $config ]]
    then
        echo -e "Usage:$0 mysqlbackupconf"
        exit 1
    fi
fi
source $config
dbname=""
currdate=$(date +%Y%m%d)
haveinnodb=0
localip=$(ifconfig eth0|awk ‘/inet addr:/‘|awk -F: ‘{print $2}‘|awk -F" " ‘{print $1}‘)
function purgebinlog ()
{
    purdate=`date "+%F %T" --date=‘3 day ago‘`
    pur="purge master logs before ‘$purdate‘"
    echo "$pur"|mysql -u"$dbuser" -p"$dbpass"
}
function redirectlog ()
{
    logfile=$logdir/${currdate}_${localip}_log
    mkdir -p $logdir
    exec 1>$logfile
    exec 2>$logfile
}
function checkdestdir ()
{
    destdir=$destdir/$currdate
    if [[ ! -d $destdir ]]
    then
        mkdir -p $destdir
    fi
}
function runcommand ()
{
    comm=$1
    mysql -u"$dbuser" -p"$dbpass" -sNe "$comm"
}
function generateschema ()
{
    i=0
    result=`runcommand ‘show databases‘`
    for db in $result
    do
        rv=`echo $exclude|grep -w -i $db`
        if [[ -n "$rv" ]]
        then
            continue;
        fi
        dbname[i]=$db
        let i++
    done
}
function guessengine ()
{
    innodb=`runcommand ‘show engines‘|grep -i innodb|grep -i yes`
    if [[ ! -z "$innodb" ]]
    then
        haveinnodb=1
    fi
}
function dobackupsql ()
{
    db=$1
    destname=$destdir/$db.sql
    if [[ $haveinnodb -eq 1 ]]
    then
        dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --single-transaction --databases"
    else
        dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --databases"
    fi
    $dumpcomm $db > $destname
}
function dobackupgzip ()
{
    db=$1
    destname=$destdir/$db.sql.gz
    if [[ $haveinnodb -eq 1 ]]
    then
        dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --single-transaction --databases"
    else
        dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --databases"
    fi
    $dumpcomm $db|gzip > $destname
}
function backup ()
{
    actioncommand=$1
    if [[ $commpress -eq 1 ]]
    then
        actioncommand="dobackupgzip"
    else
        actioncommand="dobackupsql"
    fi
    echo -en "`date`\tBACKUP\t$db\n"    
    $actioncommand $db
}
function backupalldb ()
{
    count=0
    for db in ${dbname[@]}
    do
        backup $db &
        let count+=1
        [[ $((count%$processnum)) -eq 0 ]] && wait
    done
    wait
    echo "all backup done"
}

purgebinlog
redirectlog
checkdestdir
generateschema
guessengine
runcommand "flush logs"
backupalldb
exit 0

三、具体配置信息
cat mysqlbackupconf
dbuser="backup"
dbpass="backup"
exclude=‘mysql information_schema performance_schema‘
destdir=/opt/dbbak
logdir=/opt/dbbak/log
commpress=1
processnum=4

四、备份后结果
1、[email protected]:~# ll /opt/dbbak/20150629/
-rw-r--r-- 1 root root 4443602410 Jun 29 19:18 mysqltest1.sql.gz
-rw-r--r-- 1 root root 4443601959 Jun 29 19:19 mysqltest.sql.gz

2、[email protected]:~# ll /opt/dbbak/log/
-rw-r--r-- 1 root root 109 Jun 29 19:19 20150629_10.131.172.202_log
时间: 2024-10-10 02:07:37

mysql备份单实例(一)shell的相关文章

MySQL的单实例和多实例安装

cd /da 先决条件:YUM   lib(yum install *)  -bash(环境变量出问题) command not found(配置文件出错) 1.建立mysql用户 useradd mysql 2.创建数据目录 mkdir -p /data/mysql 4.创建配置文件目录/etc/my.cnf(将my.cnf文件上传到/etc目录下) 5.安装包放在 /opt/soft/ 6.解压包:tar -zxvf 绝对路径mysql-5.6.16-linux-glibc2.5-x86_6

MySQL系列之一键安装脚本----单实例/多实例

最近在搞MySQL,由于经常测试一些东西.因此,就写了一个一键安装脚本. 脚本用途: 用于在CentOS/RHEL 6.x系统上快速部署出Mysql的单实例或者多实例环境 脚本说明: 该脚本运行情况良好 针对脚本中,每一步命令执行的正误判断以及提醒非常醒目,可协助执行者快速定位错误源 脚本诸多内容都以声明变量,增加了脚本的灵活性和扩展性 脚本以做模块化处理,对应功能对应函数,方便SA快速更改和了解该脚本 该脚本使用注意事项: 1.能够通公网或者mysql源码包已经放置到/usr/local/sr

利用xtrabackup 全量备份100G的数据恢复到单实例测试

利用xtrabackup 全量备份的mysql5.6.40实例的100G的数据恢复MySQL5.7.24实例上到单实例消耗的时间: 服务器的环境如下: dell r620 双颗CPU,单核心是12核心,内存是72G ,硬盘伪sata接口的企业级的SSD固态硬盘:500G 固态盘型号如下: PD Type: SATA Raw Size: 465.761 GB [0x3a386030 Sectors] Inquiry Data: S3Z3NB0K116201W Samsung SSD 860 EVO

centos6.5安装单实例mysql

mysql官网下载地址:http://downloads.mysql.com/archives/community/ 选择x64源码安装包进行下载: 将安装文件放在/usr/local/src/下 卸载和删除mysql原有的相关内容: userdel -r mysql groudel mysql find / -name "mysql" -exec rm -rf {} \; 新建mysql用户.用户组: groupadd mysql useradd -s /sbin/nologin -

MySQL单实例重置密码的两种方法

MySQL单实例重置密码的两种方法 在工作学习中,我们有时会忘记数据库的密码,下面是MySQL单实例密码重置的步骤. 说明: (1)[[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) (2)[[email protected] ~]# mysql --version mysql  Ver 14.14 Distrib 5.7.13, for Linux (i686) using  EditLine wr

【MySQL】源码编译安装和配置MySql 5.5.32(单实例)

[需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数据文件的安装目录为:/application/mysql-5.5.32/data MySQL默认的字符编码为:UTF8 [环境参数] VMware:10.0.1 Host:Win7 DB:MySql 5.5.32 编译工具:cmake-2.8.8.tar.gz 其他依赖:ncurses-devel-

MySQL 5.6对已有Mysql单实例的机器,再添加mysql数据库,实现单机多实例

一.需求: 对已有Mysql单实例的机器,再添加两个mysql数据库,实现单机多实例. 一个绑定在端口3306,另外两个绑定在端口3307,3308: 数据分别存放在/data/mysqldata./data/mysqldata2./data/mysqldata3 三个实例均采用InnoDB作为默认的存储引擎,字符编码采用UTF-8: 三个实例均采用相同的性能优化配置参数: MySQL的源码安装请看我的另一篇博客http://yylinux.blog.51cto.com/8831641/1677

使用xtrabackup备份和还原mysql的多实例(基于全备)

1)安装percona-xtrabackup Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份 工具InnoDB Hotbackup的一个很好的替代品 # 下载安装包: # cd /usr/local/src # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/redhat/6/x86_64/percona-xtrabac

web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境 要求: a)实现web服务文件更新的自动同步到另一台机器上 b)数据库实现主从复制 c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份.增量备份.差异备份 a,实现web服务文件更新的自动同步到另一台机器上: 1,在httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录. 2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的ind