一、定时备份
1、找到合适位置创建文件夹,放置脚本文件和备份数据
创建备份数据库的脚本路径
mkdir -p /usr/local/msyql/mysql_backup
创建存放备份数据的路径
mkdir -p /usr/local/mysql/database_bak/
进入备份数据库的脚本路径
cd /usr/local/mysql/mysql_backup
创建脚本并填写内容
vi mysql_backup.sh
2、填充mysql_backup.sh脚本的内容
#!/bin/bash #================基础参数=============== #这里的用户名输入自己的用户名 user="root" #这里的密码输入自己的密码 password="123456" port="3306" #备份库名列表,括号内多个数据库空格隔开,这个也是自己的数据库名称 db_name_array=("test") #备份位置(若不存在,会自动创建) datafile_path="/usr/local/mysql/database_bak" #mysqlDump的绝对位置,基本为mysql安装路径 mysqlDump_path="/usr/bin/mysqldump" #是否删除.sql文件(包含子目录): ON开启,其他字符不开启 rf_switch="ON" #备份数据保留天数(按文件修改时间计算) expire_day=10 #================非开发人员勿改================ #备份最终路径,db_name是自己的数据库名称 bak_path="${datafile_path}/${db_name}" #错误日志文件名称 error_log="${bak_path}/${db_name}_error.log" #================备份执行指令================ #判断文件夹,不存在则创建 if [ ! -d "$bak_path" ] then mkdir -p ${bak_path} echo "已创建文件夹${bak_path}" #这个是和if对着的 fi #判断mysql是否开启 # lsof要root权限启动 checkPort=`lsof -i:${port} | wc -l` if [ "$checkPort" -gt "0" ] then echo "mysql 已启动" else echo "mysql 未启动无法进行备份" echo "mysql 未启动无法进行备份" > $error_log fi #执行备份, for db_name in ${db_name_array[*]} do ${mysqlDump_path} --defaults-extra-file=/etc/my.cnf --databases $db_name | gzip > ${bak_path}"/"$db_name$'_'$(date +%Y%m%d).sql.gz 2>>${error_log} done #删除过期文件 if [ $rf_switch == "ON" ] then find ${bak_path} -name "*.sql" -mtime +${expire_day} | xargs rm -f fi
3、脚本增加权限
chmod +x ./mysql_backup.sh
4、安装lsof
yum install -y lsof
6、修改mysql配置文件
vi /etc/my.cnf
在文件末尾加入下面内容(密码是数据库的密码):
[mysqldump]
user=root
password=你的密码
5、测试脚本运行
./mysql_backup.sh
6、设置定时自动执行备份脚本
打开脚本
crontab -e
编辑脚本
#每天下午4点半执行脚本
30 16 * * * sudo /usr/local/mysql/mysql_backup/mysql_backup.sh
二、接收方自动接收数据库备份
在接收方上操作:
1.安装sshpass
yum install sshpass
2.设置定时传输备份
打开脚本
crontab -e
编辑脚本
#定时拷贝生产库的备份
30 16 * * * sshpass -p ‘admin’ scp -r admin@192.168.60.204:/usr/local/mysql/database_bak/* /usr/local/mysql/database_bak
创建存放备份数据的路径
mkdir -p /usr/local/mysql/database_bak/
三、数据库定时还原脚本
1、首先在接受方服务器上创建一个定时还原的脚本
vi /usr/local/mysql/mysql_backup/Reduction.sh
然后可以打开脚本
#这里写自己发送方的数据库名称,也是将数据库名称封装在变量中
db_name=‘test’
#将定时时间封装在变量中
DATE=date +%Y%m%d
#备份所在的文件路径
DIR=/usr/local/mysql/database_bak
echo $DIR
#解压备份文件
gunzip D I R / DIR/DIR/db_nameKaTeX parse error: Expected group after '_' at position 2: '_̲'DATE.sql.gz
#前边都是为了最后这一步
mysql --defaults-extra-file=/etc/my.cnf $db_name < D I R / DIR/DIR/db_nameKaTeX parse error: Expected group after '_' at position 2: '_̲'DATE.sql
2、切换到路径下,给脚本增加权限
cd /usr/local/mysql/mysql_backup
chmod 755 ./ Reduction.sh
3、修改mysql配置文件vi /etc/my.cnf
在文件末尾加入下面内容:
[mysql]
user=root
password=你的密码
4、设定定时
打开脚本
crontab -e
在脚本最后一行添加
#固定时间执行执行还原脚本
30 16 * * * sudo /usr/local/mysql/mysql_backup/Reduction.sh
i