mysql数据库备份与恢复脚本

#!/bin/bash

#mysql database backup and restore the script

# define config variable

host=localhost

user=root

passwd=xxxxx

#this variable for grant

mainHostIp="127.0.0.1"

base_path=/opt/disk-webData/mysqlBackup

# base_path=/media/sf_website/yii/disk-webData/mysqlBackup

### backup

backupdb() {

bak_path=$base_path/$(date +%Y%m%d)/data

log_path=$base_path/$(date +%Y%m%d)/log

[ ! -d $bak_path ] && mkdir -p $bak_path

[ ! -d $log_path ] && mkdir -p $log_path

dblist=($(mysql -u$user -p$passwd -e "show databases;"|awk -F "|" ‘{print $1}‘|grep -Ev "Database|mysql|information_schema|performance_schema"))

i=1

for dbname in "${dblist[@]}"

do

echo -e "\n$i --> Backup database $dbname ..."

file=$bak_path/"$dbname.sql"

mysqldump -h$host -u$user -p$passwd -B $dbname > $file

if [ -f $file ];then

success="$i --> $dbname backup success!"

echo $success;

echo $success >> $log_path/backupLog.log

echo "GRANT ALL PRIVILEGES ON $dbname.* TO [email protected];" >> $log_path/grant.log

echo "GRANT ALL PRIVILEGES ON $dbname.* TO [email protected]$mainHostIp;" >> $log_path/grant.log

fi

let i++

done

}

#restore

expr 1 + $1 &>/dev/null

if [ $? -eq 0 ];then

bak_path="$base_path"/$1/data

log_path="$base_path"/$1/log

#restore

cd $bak_path

dblist=($(ls))

i=1

for dbname in "${dblist[@]}"

do

echo -e "\n$i --> Restore database $dbname ..."

mysql -h$host -u$user -p$passwd < $dbname

success="$i --> $dbname restore success!"

echo $success

echo $success >> $log_path/restoreLog.log

let i++

done

#grant

# if [ -f $log_path/grant.log ];then

echo "Please ensure that [admin] user exist @[localhost & 127.0.0.1 & mainHostIp]";

sleep 15s

ii=1

cat $log_path/grant.log | while read line

do

echo "$ii --> $line"

mysql -h$host -u$user -p$passwd -e "$line"

let ii++

done

# fi

elif [ "$1" == backup ];then

backupdb

else

cd $base_path

dblist=($(ls))

i=1;

echo "Backup history ..."

for dbname in "${dblist[@]}"

do

echo "$i --> $dbname"

let i++

done

fi

时间: 2024-10-05 08:53:23

mysql数据库备份与恢复脚本的相关文章

Ubuntu Server下MySql数据库备份脚本代码

明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份. 实现步骤: 1.创建保存备份文件的目录:/home/mysql_datacd /home #进入目录mkdir mysql_data #创建目录2.创建备份脚本文件:/home/mysql_data/m

Mysql 数据库备份脚本

[[email protected] sbin]# more mysqlbackup.sh #If any of your tables run on InnoDB engine #directory to store backups inDST=/backup/dbback# A regex, passed to egrep -v, for which databases to ignoreIGNREG='^snort$'# The MySQL username and passwordDBU

Windows下MySQL数据库备份脚本(一)

说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL Server 5.0\data MySQL数据库备份目录:D:\MySQLdata_Bak 实现目的:备份MySQL数据库存放目录中的mysql数据库到D:\MySQLdata_Bak目录,按照日期存放, 并且只保留最近7天的数据 例如: D:\MySQLdata_Bak\mysql\20120404

mysql数据库备份脚本一例

例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/lib/mysql //查看mysql的大小并且赋予变量SIZE echo "Date :$DAY" >> /tmp/mysqlbak.txt //输出日期到mysqlbak.txt文件 echo "Date Size : $SIZE" >> /t

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

96.创建普通用户并授权,常用SQL语句,MySQL数据库备份与恢复

一.创建普通用户并授权 1.创建用户并授权 [[email protected] ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/o

mysql数据库备份脚本

自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #20170329 #Define PATH定义变量 BAKDIR=/data/backup/mysql/`date +%Y-%m-%d` MYSQLDB=webapp MYSQLPW=backup MYSQLUSR=backup #must use root user run scripts 必须使用root用户运行,$UID为系统变量 if

使用bash将csv文件数据读写到MySQL数据库的脚本之一

情景: 有一个包含多个系的学生详细信息的csv文件,需要将文件的内容插入到一个数据表中,保证每一个系生成一个单独的排名列表. 学习信息表 studentdata.csv 文件的数据如下: 1,Navin M,98,CS 2,Kavya N,70,CS 3,Nawaz O,80,CS 4,Hari S,80,EC 5,Alex M,50,EC 6,Neenu J,70,EC 7,Bob A,30,EC 8,Anu M,90,AE 9,Sruthi,89,AE 10,Andrew,89,AE 脚本思

Centos下mysql数据库备份与恢复的方法

一.mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于InnoDB的热备份.但由于是逻辑备份,所以速度不是很快,适合备份数据量比较小的场景. mysqldump完全备份+二进制日志 ->实现时间点恢复 温备: 在使用MyISAM引擎中,只能使用温备份,这时候要防止数据的写入,所以先加上读锁 这时候可以进入数据库手动加读锁.这样比较麻烦,在mysqldump工具中直接有一个加锁的选项 mysqldump --datab