Shell脚本计划备份mysql数据库
实验准备:
两台linux5.5主机:
一台用作backup server主机,地址为192.168.10.1
一台用作mysql server主机,地址为192.168.10.2
实验步骤:
1.在mysql主机上搭建yum源,挂载光盘
2.在mysql主机上搭建mysql数据库并启动mysql
3.关闭两台主机的防火墙(可以清除规则也可以添加相应的3306端口允许)
我个人这里用iptables -F 清除规则
4.在mysql主机上创建一个专用的数据库备份帐户operator,允许从备份主机192.168.10.1、连接到mysql数据库,并授权对studydb,coursedb库读取权限
[root@mysql ~]# mysql
mysql> create database studydb;
mysql> create database coursedb;
mysql> GRANT select,lock tables ON studydb.* TO 'operator'@'192.168.10.1' IDENTIFIED BY '123.asd';
mysql> GRANT select,lock tables ON coursedb.* TO 'operator'@'192.168.10.1' IDENTIFIED BY '123.asd';
5.从备份主机中安装mysqldump备份工具
并测试数据库访问,查询授权等是否有效
6.编写mysql备份脚本:在备份主机backup中创建用来存放备份文件的目录,并编写相应的备份脚本
红色下划线/usr/bin/mysqldump是因为不同的安装方式有不同的位置,根据实际环境填写
#!/bin/bash
#这是一个简化的mysql数据库逻辑备份脚本
#1.定义数据库连接、目标库信息
MY_USER="operator"
MY_PASS="123.asd"
MY_HOST="192.168.10.2"
MY_CONN="-u $MY_USER -p$MY_PASS -h $MY_HOST"
MY_DB1="studydb"
MY_DB2="coursedb"
#2.定义备份目录、工具、时间、文件名主体
BF_DIR="/opt/qnzx_dbbak/"
BF_CMD="/usr/bin/mysqldump"
BF_TIME=`date +%Y%m%d-%H%M`#时间格式:YYYYmmdd-HHMM
NAME_1="$MY_DB1-$BF_TIME"
NAME_2="$MY_DB2-$BF_TIME"
# 3.先导出.sql脚本,然后再进行压缩(打包后删除原文件)
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
date +%Y%m%d-%H%M`中Y H M都是大写:Y是年份,m是月份,d是天,H是小时,M是分钟
7:为脚本添加执行权限,并手动执行备份脚本,确认备份结果
8.设置计划任务
截图如下:
内容如下:
mvqnzx_dbbak.sh/opt/qnzx_dbbak/ ――将脚本转移到备份目录
crontab -e ――在指定的时间执行脚本程序
915* * * /opt/qnzx_dbbak/qnzx_dbbak.sh
service crond status ――确保crond服务已运行
【因生产所需而有所不同,具体设置还需根据生产环境而定,仅做参考,不足之处望谅解】