专栏首页程序员小助手干货 | 分享一段 Bash 脚本,用于MySQL备份压缩到Samba远程目录

干货 | 分享一段 Bash 脚本,用于MySQL备份压缩到Samba远程目录

引言

在 Linux 做自动化其实非常方便,不会像windows一样受制于系统的配置以及桌面环境。Linux 完全没有这些负担,一个 Bash 就搞定了。

今天我们分享一段基本的 Bash 代码,实现 MySQL 数据库备份,并通过网络连接拷贝到远程服务器目录。

代码时间

首先声明所使用的解释器:

#!/bin/bash

声明时间戳变量:

TIMESTAMP=$(date +"%F")

然后是 MYSQL 操作所使用到的变量:

MYSQL="/usr/bin/mysql"
MYSQL_USER="{mysql_user_with_DBAdmin_permits}"
MYSQL_PASSWORD="{mysql_user_password}"
MYSQLDUMP="/usr/bin/mysqldump"

我们指定了 mysql 应用位置,以及 mysqldump 工具的绝对路径。还有连接数据库所使用的用户名和密码。

接着是 Samba 服务器的远程挂载目录相关的变量:

SMB_BACKUP_DIR="/mnt/backup"
SMB_BACKUP_SOURCE="//{path_to_network_share}"
SMB_BACKUP_USER="{network_user_with_permits_to_share}"
SMB_BACKUP_PASSWORD="{network_user_password}"

指定了备份的目录,以及原始目录,还有访问远程目录所使用的用户名和密码。

为了方便操作,再使用一个完整的备份文件路径变量:

BACKUP_DIR="$SMB_BACKUP_DIR/$TIMESTAMP"

下面是逻辑过程。

如果用于映射 Samba 远程目录的备份目录不存在,就创建:

[[ ! -d "$SMB_BACKUP_DIR" ]] && mkdir -p $SMB_BACKUP_DIR

然后,我们把远程通过网络访问的 Samba 服务器地址,挂载到本地目录,同时传递访问的用户授权信息。

mount -t cifs "$SMB_BACKUP_SOURCE" "$SMB_BACKUP_DIR" -o username="$SMB_BACKUP_USER",password="$SMB_BACKUP_PASSWORD"

注意文件类型一定是 cifs (Common Internet File System) 类型,需要 linux kernel 内核支持该文件系统。

如果需要备份的目录不存在,就创建:

[[ ! -d "$BACKUP_DIR" ]]  && mkdir -p $BACKUP_DIR

下面是数据库的备份。

我们把 MySQL 的数据库遍历出来:

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

结果就是本地所有数据库名称,然后我们使用循环,逐一导出数据,并压缩到 $BACKUP_DIR ,文件名称是数据库名 + gz 后缀。

for db in $databases; do
 $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done

好了,不知道会有多久这个任务执行完毕,就可以不用挂载远程 Samba 目录了,因为这很耗费网络资源。

umount $SMB_BACKUP_DIR

写在最后

本文我们通过一个简单的需求,在 Linux 下实现了 MySQL 自动备份到指定目录。同时挂载 Samba 远程目录,将数据库备份到异地。

逻辑很清晰,实现很简单,也没有复杂的过程,很适合自动化工作。

Happy coding :_)

本文分享自微信公众号 - 程序员小助手(mql45ea),作者:Rman

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 真实经历:一个Linux小白被文件权限绕晕,评论区让他root用户777

    如果你遇到了修复web服务器的文件权限问题,在网上搜索后,有大牛告诉你需要递归地chmod 777 你的web目录!

    程序员小助手
  • 1个音视频输入,拆解为1个MP4文件和2路RTP流,ffmpeg这么写

    之前我们已经分享过很多关于音视频处理的文章。其中最绕不开的就是ffmpg工具,这个命令行工具构建了当今大小智能设备音频,视频,图片等多媒体文件处理的方方面面。

    程序员小助手
  • PHP自带的DateTime类,Carbon扩展类,真正的“相见恨晚!”

    PHP有一个名为DateTime的类,可以帮助您读取、写入、比较或计算日期和时间。除了DATETIME之外,PHP中还有许多与日期和时间相关的函数,但它为大多数...

    程序员小助手
  • Linux_服务器_08_网卡eth1修改为eth0

     找到与ifconfig 查出出的MAC相同的一行(NAME='eth1'这一行),把它改为"NAME=eth0 ",然后把上面一行(NAME='eth0')注...

    shirayner
  • 如何转行成为初级测试?

    今天来聊一聊如何成为一枚初级软件测试工程师?之前在贴吧和知乎经常收到小伙伴私信问如何转行到互联网行业,以及谈到自己半路转行没什么经验,也不是学的计算机相关专业,...

    八音弦
  • python连接HBase

    hadoop 2.7.0 hbase 1.2.1 Thrift 0.9.0

    py3study
  • 动捕技术是拯救VR体验的关键,但如何落地却已成为世界难题

    镁客网
  • iCDO一周数据要闻:阿里首发“AI智能文案”;微信订阅号变为feed流形式;2018全球广告预算将达5510亿美元

    6月18日,中国领先的技术驱动型电商京东集团和Google今天宣布,Google将以5.5亿美元现金投资京东,双方将结成广泛的战略合作伙伴关系。

    iCDO互联网数据官
  • 爬虫篇 | 200 行代码实现一个滑动验证码

    做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的...

    叫我龙总
  • 安卓ROOT权限是厂商的春药,用户的毒药

    国庆节前夕, 360手机助手提供一键ROOT功能,建议用户卸载一些预装应用,还将某些预装应用称为“牛皮癣”。这个举动遭到6家互联网和手机厂商强烈反弹,纷...

    罗超频道

扫码关注云+社区

领取腾讯云代金券