引言在 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 :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注 。
【分享一段 Bash 脚本,用于MySQL备份压缩到Samba远程目录】
推荐阅读
- 饵料|今年已走数十人,野钓的保命技巧分享
- 纯干货分享 王者荣耀:从懵逼到牛逼,教你三个进阶为大神的技巧
- 茶艺师分享的冲泡红茶细节,短短49个字,藏着3处基础错误
- 茶友分享经验,水与茶的关系下
- 茶友分享布朗山系茶,吉普号2013年布朗秋韵开汤
- 炸鱼用淀粉还是面粉?大厨分享正确做法,外酥里嫩,又脆又香
- 分享六种根据IP地址获取相应城市信息接口
- 2000多元高性价比吃鸡电脑 配置分享
- 20种常见花卉绿植的习性分享,在家居环境中,也能把它们养出彩
- 10 款下载量最高的 Mac 软件分享