MySQL分库备份

公司一直是全备+binlog,但是如果单个库出现问题怎么办,在进行完整恢复的话,第一会耽误时间,第二会影响其它数据库,第三如果数据量大,对于库的恢复也是问题,所以我提出了,除了全备,还要做分库备份,只要更灵活,出现问题,直接恢复单库(方便、快捷)

下面直接上脚本

1,将MySQL自带库外的其他库进行备份

#!/bin/bash
#---------------------------------------------------------
# $Name:         Store_backup.sh
# $Version:      v1.0
# $Author:       邱月涛
# $organization: www.yi******.cn
# $Create Date:  2017-06-03
# $Description:  MySQL store Backup 
#用于MySQL 分库备份,并保留30天数据
#---------------------------------------------------------
#source /etc/init.d/functions
DAY=`date +%F`
BACK_DIR="/home/backup/mysqlbackup"
DBUSER="root"
DBPASSWD="你自己的password"
BIN_PATH="/usr/bin"
LOG="/home/backup/mysqlbackup/mysqlback.log"
## Close all tables and refresh log ####
"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "flush logs"
#"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "flush tables with read lock"
echo "mysqldump start `date +%F\ %H\:%M\:%S`" >> "$LOG"
## Each backup database to the target location ####
for i in `"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "show databases" |grep -vE "Database|information_schema"`
  do
        if [ ! -d "$BACK_DIR"/"$i" ]; then
                mkdir -p  "$BACK_DIR"/"$i"
           fi
"$BIN_PATH"/mysqldump -u "$DBUSER" -p"$DBPASSWD" --default-character-set=utf8 --opt --lock-tables -f --log-error="$LOG" "$i" > "$BACK_DIR"/"$i"/"$DAY".sql
   done
echo "mysqldump stop `date +%F\ %H\:%M\:%S`" >> "$LOG"
echo "" >>"$LOG"
## Delete 30 days ago backup files ####
for RM in `"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "show databases" |grep -vE "Database|information_schema"`
   do
rm -rf "$BACK_DIR"/"$RM"/$(date +%F --date=‘30 days ago‘).sql
    done

效果如下:

[[email protected] mysqlbackup]# tree -L 1 /home/backup/mysqlbackup
/home/backup/mysqlbackup
├──  luence
├──  hpi
├──  h
├── my
├── mysql
├── mysqlback.log
├── ypp
└──  tao

将脚本加入crontab定时任务即可;

[[email protected] mysqlbackup]# crontab -l
0  4 * * * /root/shell/mysqlbackup.sh
时间: 2024-12-24 13:02:35

MySQL分库备份的相关文章

数据库mysql 分库备份脚本

数据库mysql 分库备份脚本 在企业工作中,我们经常会遇到数据库备份问题,当然我之前不止提到过mysql 主从,现在我们 先来看看单库如何来实现分库定期进行备份的,先看一下以下脚本: vi mysql_backup.sh #!/bin/sh #backup tiandao bbs edoing #coding tonye.li MYUSER=root MYPASS=meidi SOCKET=/data/3306/mysql.sock MYCMD="mysql -u$MYUSER -p$MYPA

mysql 分库备份

 mysql 分库备份 前两篇文章已经都写到了mysql分库进行备份,可是还有网友给我留言说如何进行分库自动查询数据库来进行备份呢,这让我很郁闷,这么简单的东西,应该可以一举三反的吧!看看吧 vi mysql_backup.sh #!/bin/sh #backup tiandao bbs edoing #coding tonye.li MYUSER=root MYPASS=meidi SOCKET=/data/3306/mysql.sock MYCMD="mysql -u$MYUSER -p$M

MySQL分库备份的方法

分库备份的意义是什么 ? 有时一个企业的数据库里面有多个库,例如(www,bbs,cms),但是出问题时可能是某一个库,如果在备份时候把所有的库备份成一个数据文件的话,恢复数据就比较麻烦. 分库备份方法一: [[email protected] ~]# mysql   -uroot -p123456 -e "show databases"|  grep -Evi "database|infor|perfor"| sed -r 's#^([a-z].*$)#mysql

MySQL分库备份与分表备份

1.分库备份 要求:将mysql数据库中的用户数据库备份,备份的数据库文件以时间命名 脚本内容如下: [root@db01 scripts]# vim backup_database.sh #!/bin/bash mysql_user=root mysql_pass=123456 mkdir -p /backup for n in `mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -Ev '_sche

mysql分库备份 分分彩平台搭建备份数据

分分彩平台搭建分库企 娥:217 1793 408[[email protected] scripts]# cat backup_database.sh #!/bin/bashmysql_user=rootmysql_pass=123456mkdir -p /backupfor n in mysql -u$mysql_user -p$mysql_pass -e 'show databases;' 2>/dev/null|grep -Ev '_schema|mysql'|sed '1d';domy

mysql分库备份脚本

#!/bin/bash #created by yangqiqi 2017-08-24 #创建备份用户 #grant select,lock tables,reload,super,file,show view on *.* to 'mysqlbackup'@'localhost' identified by 'my_password'; #grant execute on *.* to 'mysqlbackup'@'localhost' identified by 'my_password';

mysql分库备份 shell脚本 --自创 待优化

#/bin/bash ## ##其实可以先判断目录存在么,可写么 [ -d .. ] [ -w .. ] DATABASES=`mysql -usystem -p'oldboy123' -e "show databases"|grep -v "Database"` for i in $DATABASES do mysqldump -usystem -p'oldboy123' -B $i --skip-lock-tables|gzip >/scott/${i}_

MySQL 分库备份shell脚本

#!/bin/bash MYUSER=root MYPASS=password SOCKET="/var/lib/mysql/mysql.sock" MYCMD="mysql -u $MYUSER -p$MYPASS" MYDUMP="mysqldump -u $MYUSER -p$MYPASS" BACKUP_DIR="/work/backup/mysql" for database in `$MYCMD -e "

分享一个MySQL分库分表备份脚本(原)

分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上时间方便整理 2.取数据库:抓取数据库名称,我用的awk和grep配合取数据库的名称(如果想按照表备份可以再细化一下)注意要用mysql -e选项 这样才能做成脚本 3.系统环境变量:因为用到了函数,所以非系统内置的命令 最好在脚本里面用 . /etc/profile  把系统当前的环境变量传过来