Shell脚本与计划任务

一、备份方案

        对于存在多个应用的数据库服务器,备份工作可能会划分得比较细,需要针对不同的库和表、不同的备份路径使用不同的验证用户等。下面以远程备份“青鸟在线”平台的两个论坛数据库为例,备份环境与需求如下所述。

  • 备份主机:IP地址为 172.16.16.220,通过机柜内网络连接目标主机。
  • 数据库服务器:IP地址为172.16.16.22,MySQL服务监听的端口为3306。
  • 备份内容:对MySQL服务器中的 studydb、coursedb 库进行远程备份,每天凌晨2:30执行,每个库备份为独立的.sql 文件,然后压缩为“.tar.gz”格式,文件名中嵌入执行备份时的日期和时刻。
  • 注:这边没有用到两台设备所以IP改为localhost的
1.准备工作
  • 确保备份主机与数据库服务器之间保持连接畅通,不能有网络链路故障、防火墙封锁等阻碍
  • MySQL 服务必须允许从备份主机远程访问,且授权用户能够查询 studydb、coursedb库。

        针对本案例的情况,可以创建一个专用的数据库备份账户operator,允许从备份主机172.16.16.220连接到MySQL数据库,并授予对 studydb、coursedb库的读取权限。使用逻辑备份工具mysqldump时,需要对库设置SELECT和LOCK  TABLES权限。

mysql> grant select,lock tables ON studydb.* TO 'operator'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select,lock tables ON coursedb.* TO 'operator'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected (0.00 sec)

        从备份主机中测试数据库访问,查询授权等是否有效,或者直接使用 mysqldump备份工具进行
测试。

[root@localhost ~]# mysqldump -u operator -ppwd123 -h localhost --databases studydb > test.sql
Warning: Using a password on the command line interface can be insecure.
mysqldump: Got error: 1049: Unknown database 'studydb' when selecting the database
[root@localhost ~]# ls -lh test.sql 
-rw-r--r-- 1 root root 777 12月 18 16:00 test.sql
2.编写MySQL备份脚本

        在备份主机中,创建用来存放备份文件的目录(如/opt/qnzx_dbbak),并编写相应的备份脚本(如qnzx_dbbak.sh),确认能够成功执行备份。脚本代码中,对于目标主机的IP地址、用户名、密码、备份路径、文件名等信息,可能会在必要的时候变更。为了方便更新脚本,这些内容最好存放到固定名称的变量中。

[root@localhost ~]# vim qnzx_dbbak.sh
#!/bin/bash
#1.定义数据库连接、目标库信息
MY_USER="operator"
MY_PASS="pwd123"
MY_HOST="localhost"
MY_CONN="-u $MY_USER -p -h $MY_HOST"
MY_DB1="studydb"
MY_DB2="coursedb"

#2.定义备份目录、工具、时间、文件名主体
BF_DIR="/opt/qnzx_dbbak/"
BF_CMD="/usr/local/mysql/bin/mysqldump"
BF_TIME=`date +%¥%m%d-%H%M`
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 --datebases $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

3. 设置计划任务

        有了批量备份的Shell脚本以后,接下来可按照备份要求设置计划任务,以便自动、定期执行备份操作。在crontab配置记录中,直接指定 qnzx_dbbak.sh脚本程序的路径作为执行命令。

[root@localhost qnzx_dbbak]# crontab -e

43 17 * * * /opt/qnzx_dbbak/qnzx_dbbak.sh

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值