编写shell脚本计划备份mysql数据库

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数据库,并授权对studydbcoursedb库读取权限

[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服务已运行

【因生产所需而有所不同,具体设置还需根据生产环境而定,仅做参考,不足之处望谅解】

 

你可能感兴趣的:(mysql,数据库备份,主机)