宿主机Linux离线安装mysql客户端,使用mysqldump备份数据库

本文介绍了如何在宿主机内网Linux环境中,由于安全限制无法直接使用mysqldump,通过安装MySQL客户端并创建shell脚本实现定时备份的方法,包括下载安装包、配置脚本、添加CronTab定时任务等步骤。
摘要由CSDN通过智能技术生成

前言

宿主机Linux属于内网环境,且mysql使用的是docker容器安装,所以宿主机不具备mysqldump命令的使用条件,而容器环境内使用crontab命令定时备份又比较麻烦,所以决定在宿主机安装mysql客户端。

准备安装包

mysql客户端下载:mysql官网下载地址

在这里插入图片描述
在这里我们需要下载三个文件:

  • mysql-community-client-5.7.10-1.el7.x86_64.rpm
  • mysql-community-common-5.7.10-1.el7.x86_64.rpm
  • mysql-community-libs-5.7.10-1.el7.x86_64.rpm

安装客户端

将文件拷贝至服务器,执行命令

rpm -ivh mysql-community-client-5.7.10-1.el7.x86_64.rpm mysql-community-common-5.7.10-1.el7.x86_64.rpm mysql-community-libs-5.7.10-1.el7.x86_64.rpm

在这里插入图片描述
如果出现上述依赖冲突,或者已经安装过mysql,需要卸载;

查看mariadb-libs版本

rpm -qa | grep mariadb-libs

在这里插入图片描述
卸载

sudo yum remove  mariadb-libs

如果是内网环境,卸载可能会中断,可以使用下面的命令强制卸载

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

此时再次执行安装命令即可
在这里插入图片描述
输入mysqldump验证安装成功
在这里插入图片描述

定时备份

创建.sh脚本

#!/bin/bash
#全备方式,一般在从机上执行,适用于小中型mysql数据库
#删除7天以前备份

source /etc/profile        #加载系统环境变量
source ~/.bash_profile    #加载用户环境变量
set -o nounset             #引用未初始化变量时退出
#set -o errexit            #执行shell命令遇到错误时退出

user="root"
password="123456"
host="192.168.136.142"
port="3306"
#需备份的数据库,数组
db=("test1" "test2")
#备份时加锁方式,
#MyISAM为锁表--lock-all-tables,
#InnoDB为锁行--single-transaction
lock="--single-transaction"
backup_path="/data/backup/MysqlData"
date=$(date +%Y-%m-%d_%H-%M-%S)
day=7
backup_log="/data/backup/back.log"

#建立备份目录
if [ ! -e $backup_path ];then
    mkdir -p $backup_path
fi

#删除以前备份
find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1

echo "开始备份数据库:${db[*]}"

#备份并压缩
backup_sql(){
    dbname=$1
    backup_name="${dbname}_${date}.sql"
    #-R备份存储过程,函数,触发器
    mysqldump -h $host -P $port -u $user -p$password $lock --set-gtid-purged=OFF  --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name    
    if [[ $? == 0 ]];then
        cd $backup_path
        tar zcpvf $backup_name.tar.gz $backup_name
        size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
        rm -rf $backup_name
        echo "$date 备份 $dbname($size) 成功 "
    else
        cd $backup_path
        rm -rf $backup_name
        echo "$date 备份 $dbname 失败 "
    fi
}

#循环备份
length=${#db[@]}
for (( i = 0; i < $length; i++ )); do
        backup_sql ${db[$i]} >> $backup_log 2>&1
done

echo "备份结束,结果查看 $backup_log"
du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'

添加定时任务

crontab -e

示例:15 1 * * * /data/app/backup.sh (每天凌晨1点15分执行)
重启定时器

service crond restart
  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值