首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | 分享一段 Bash 脚本,用于MySQL备份压缩到Samba远程目录

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

作者头像
程序员小助手
发布2020-06-05 10:37:51
4340
发布2020-06-05 10:37:51
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

在 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 :_)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 代码时间
  • 写在最后
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档