夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
mysql脚本定时备份

1.添加导出数据的mysql用户

SELECT 查询表权限
LOCK TABLES 锁表权限
SHOW VIEW 查看视图权限(如果不需要导出视图则不需要此权限)
TRRIGER 触发器权限(如果库中没有触发器不需要此权限)
EVENT 事件权限(不需要导出事件就不要此权限)
RELOAD 允许载入和刷新服务器缓存

GRANT SELECT,RELOAD,LOCK TABLES,SHOW VIEW,TRIGGER,EVENT ON DATABASE.* TO 'USER'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

2.编写shell脚本

#!/bin/bash
#数据库ip
DBHOST='localhost'
#数据库用户名
DBUSER='user'
#数据库用密码
DBPASSWD='password'
#需要备份的数据库,多个数据库用空格分开
#DBNAME='overseas_analysis_platform,wordpress'
#端口号
PORT=3306
#备份时间
backtime=`date +%Y-%m-%d_%H%M%S`
#备份路径(当前目录)
BACKPATH='/home/zsj/mysql_bak'
echo $BACKPATH
#日志备份路径
LOGPATH="${BACKPATH}/log"
#数据备份路径
DBPATH="${BACKPATH}/db"
echo $LOGPATH
#创建备份目录
[ ! -d "${LOGPATH}" ] && mkdir -p "${LOGPATH}"
[ ! -d "${DBPATH}" ] && mkdir -p "${DBPATH}"
#日志记录头部
echo "备份时间为${backtime},备份数据库表 ${DBNAME} 开始" >> ${LOGPATH}/mysqlback.log
#正式备份数据库
#source=`/data/mysql/mysql-5.7.28/bin/mysqldump -u ${DBUSER} -h${DBHOST} -P ${PORT} -p${DBPASSWD} ${table}> ${DBPATH}/${backtime}.sql` 2>> ${LOGPATH}/mysqlback.log
source=`/data/mysql/mysql-5.7.28/bin/mysqldump -u ${DBUSER} -h${DBHOST} -P ${PORT} -p${DBPASSWD} --all-databases > ${DBPATH}/${backtime}.sql` 2>> ${LOGPATH}/mysqlback.log
#备份成功以下操作 $?获取上一个命令的操作结果,0代表成功
if [ "$?" == 0 ];then
cd ${DBPATH}
#为节约硬盘空间,将数据库压缩
tar -czf ${DBPATH}/${backtime}.tar.gz ./${backtime}.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -f ${DBPATH}/${backtime}.sql
#删除七天前备份,也就是只保存7天内的备份
find $DBPATH -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库表 ${DBNAME} 备份成功!!" >> ${LOGPATH}/mysqlback.log
else
#备份失败则进行以下操作
echo "数据库表 ${DBNAME} 备份失败!!" >> ${LOGPATH}/mysqlback.log
fi

3.安装shc(对shell加密)

由于shell中会出现用户名、密码、端口、服务器IP等比较隐私的信息,所以需要对编写好的shell脚本进行加密,让用户名密码没有那么容易泄露。可以在github中下载:https://github.com/neurobin/shc

[root@node5 mysql_bak]# wget https://github.com/neurobin/shc/archive/4.0.3.zip
[root@node5 mysql_bak]# unzip shc-4.0.3.zip 
[root@node5 mysql_bak]# cd shc-4.0.3/
[root@node5 mysql_bak]# ./configure
[root@node5 mysql_bak]# make
[root@node5 mysql_bak]# make install

编译可能会出错,正常编译需要gcc、c++等环境,系统中可以预先安装一些底层编译环境。
[root@node5 mysql_bak]# yum -y install gcc gcc-c++ autoconf libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
常用参数
-e date (指定过期日期)
-m message (指定过期提示的信息) 
-f script_name(指定要编译的shell的路径及文件名)
-r Relax security. (可以相同操作系统的不同系统中执行)
-v Verbose compilation(编译的详细情况)
shc -f databak.sh
[root@node5 mysql_bak]# ls
databak.sh  databak.sh.x  databak.sh.x.c
#会生成.x .xc的文件 (x是二进制的,.c是C语言编写的)

4.添加定时脚本

[root@node5 mysql_bak]# crontab -e
30 04 * * *  /data/code/shell/mysql_bak/databak.sh.x
#数据库备份一般在夜间数据访问不是很大流量的时候进行备份
暂无评论

发送评论 编辑评论


				
上一篇
下一篇