首页 > 数据库 >简单的mysqldump备份(linux)

简单的mysqldump备份(linux)

时间:2024-08-06 11:28:23浏览次数:21  
标签:bin mysqlcommand 备份 mysql mysqldump linux bak dir

备份

小数据库用mysql自带的mysqldump就可以完成备份,写一个简单的适用于linux下跑的脚本。

策略

每天凌晨1点全备,保留7天

备份脚本dbbak.sh

#!/bin/bash  
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/xtrabackup/bin

bak_host_IP=xxx.xxx.xxx.xxx
DATE=$(date +%Y-%m-%d)
backup_home=/home/dbbak/${bak_host_IP}
logpath=$backup_home/${DATE}
logfile=$logpath/mysqldump-${DATE}_${bak_host_IP}.log
mkdir -p $logpath

# Logging function
function log_info() {
    if [ "$verbose" == "no" ] ; then
        printf "%s --> %s\n" "$(date +%Y-%m-%d-%T)" "$*" >> "$logfile"
    else
        printf "%s --> %s\n" "$(date +%Y-%m-%d-%T)" "$*" | tee -a "$logfile"
    fi
}

#======================================================================
#You have to modify them to the correct information
#####mysql主机信息配置#########

#last_day=$(date -d "1 days ago" +%Y-%m-%d)  
backup_dir=$logpath
shell_dir=$(cd $(dirname $0); pwd)
#filename=$(find $backup_home -name "$last_day*" -print|awk -F / '{print $NF}')

bak_port=3306
bak_db=--all-databases
bak_env=/home/apps/app/mysql
#bak_config=/etc/my.cnf
bak_config=$bak_env/my.cnf
bak_socket=$bak_env/tmp/mysql.sock
#bak_socket=/var/lib/mysql/mysql.sock
#export rsync_logfile=/app/innobackupex/log/${DATE}/rsync_log/rsync-${DATE}_${bak_host_IP}.log
bakuser='root'
bakpasswd='xxxxxxxxx'

#mysql=/usr/bin/mysql
mysql=$(command -v $bak_env/bin/mysql)
mysqlcommand="$mysql"
mysqlcommand=$mysqlcommand" -u ${bakuser}"
mysqlcommand=$mysqlcommand" -p${bakpasswd}"
mysqlcommand=$mysqlcommand" -h ${bak_host_IP}"
mysqlcommand=$mysqlcommand" -S ${bak_socket}"
[ -n "$bak_port" ] && mysqlcommand=$mysqlcommand" -P $bak_port"
mysqlcommand=$mysqlcommand" -Bse "

$mysqlcommand "show master status"  >> "$logfile"

# Begin script
# we trap control-c
trap sigint INT

# Check for xtrabackup
yhop_mysqldump=$bak_env/bin/mysqldump
#yhop_mysqldump=/usr/bin/mysqldump
if command -v mysqldump >/dev/null; then
    mysqldump=$(command -v mysqldump)
elif
    command -v $yhop_mysqldump >/dev/null; then
	mysqldump=$(command -v ${yhop_mysqldump})
else
    log_info "mysqldump does not appear to be installed. Please install and try again."
    exit 1
fi

#echo "nohup $mysqldump -h $bak_host_IP -P $bak_port -u $bakuser -p$bakpasswd -S $bak_socket --all-databases --single-transaction --set-gtid-purged=OFF --quick > $backup_dir/${bak_host_IP}_$DATE.sql  &"
nohup $mysqldump -h $bak_host_IP -P $bak_port -u $bakuser -p$bakpasswd -S $bak_socket --all-databases --single-transaction --quick > $backup_dir/${bak_host_IP}_$DATE.sql  &


if pgrep -x "mysqldump" > /dev/null
then
    echo "有 mysqldump 进程在运行。"
	log_info "full_Backup is running! at $(date +%Y%m%d%H%M)"  
else
    log_info "mysqldump not running ! at $(date +%Y%m%d%H%M)"  
fi


###清理备份日志,保留七天内的
DAYS_TO_KEEP=7

# 获取当前日期的Unix时间戳
CURRENT_TIME=$(date +%s)

# 计算5天前的Unix时间戳
CUTOFF_TIME=$((CURRENT_TIME - 86400 * DAYS_TO_KEEP))

# 遍历目录下的所有子目录
for dir in "$backup_home"/*; do
    # 检查是否为目录
    if [ -d "$dir" ]; then
        # 提取目录名(假设为日期格式)
        dir_name=$(basename "$dir")
        
        # 尝试将目录名解析为Unix时间戳
        dir_time=$(date -d "$dir_name" +%s 2>/dev/null)
        
        # 如果解析成功并且目录创建时间早于截止时间,删除目录
        if [ $? -eq 0 ] && [ $dir_time -lt $CUTOFF_TIME ]; then
            echo "删除过期目录: $dir"
            rm -rf "$dir"
        fi
    fi
done
log_info "Backup Process Done"

标签:bin,mysqlcommand,备份,mysql,mysqldump,linux,bak,dir
From: https://www.cnblogs.com/haiyoyo/p/18344812

相关文章

  • linux进程篇总结——实战——自定义shell
        前言:经过过去两章十二篇文章的学习,我们已经知道了进程的基本概念以及进程的控制方法。本篇内容就是使用过去学习的内容自己写一个功能简单的shell外壳程序,也就是我们使用的bash命令行。本篇内容是过去进程知识的集大成者。我们在这个实战程序中,将过去学过的......
  • Linux Docker使用代理
    面对dockerpull下载速度过慢,甚至根本无法正常下载的问题,下面介绍三种方法解决Docker联网的问题。内容转载自:https://note.qidong.name/2020/05/docker-proxy/有所修改通常的在终端中设置http_proxy的环境变量不能代理dockerpull的流量,原因在于docker的流量是systemd管理的,......
  • ubuntu22.04桌面版安装linux搜狗输入法
    本文参考搜狗输入法官方教程,并针对ubuntu22.04做了一些调整https://pinyin.sogou.com/linux/help.php1.安装fcitx#查看fcitx版本aptinfofcitx|grepVersionWARNING:aptdoesnothaveastableCLIinterface.Usewithcautioninscripts.Version:1:4.2.9.8-5#......
  • 备份和容灾
    备份:备份是容灾的基础,通常指在数据中心内,将全部或部分数据集合从应用主机的硬盘或阵列复制到其他的存储介质的过程。(数据,保证主数据损坏时,有备份数据可以使用)容灾:容灾系统是指相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意......
  • laravel:得到linux平台当前脚本的执行用户
    一,代码:<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;classIndexAllCommandextendsCommand{/***Thenameandsignatureoftheconsolecommand.**@varstring*/protected$signature='......
  • laravel:从linux命令行运行command
    一,创建command1,执行命令liuhongdi@lhdpc:/data/api$phpartisanmake:commandIndexAllCommand2,查看创建的文件:<?phpnamespaceApp\Console\Commands;useIlluminate\Console\Command;classIndexAllCommandextendsCommand{/***Thenameandsignatu......
  • Linux 下 perf 的使用
    目录一、概述1、perf作用2、常用的工具集二、perf工具的使用1、perflist2、perfstat3、perftop4、perfrecord/report4.1perfrecord4.2perfreport5、perfannotate一、概述1、perf作用perf是一个性能分析工具(基于Linux内核提供的性能事件perf_eve......
  • Linux 下 ag 命令的使用
    目录一、概述1、功能2、下载二、常用参数说明三、实例四、帮助文档一、概述1、功能在Linux系统中,ag命令是用于文本搜索的高效工具。它具有快速、灵活的搜索功能,并支持正则表达式匹配。2、下载在下面是各个系统安装ag的命令:sudoapt-getinstallsilversea......
  • Linux 下 objdump 命令的使用
    目录一、概述二、常用参数说明三、实例四、实例分析一、概述objdump工具是用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。该命令常用于Linux下反汇编目标文件或者可执行文件。什么是反汇编反汇编(disassembly)是......
  • Java调用Linux命令行SpringBoot
    原文链接:https://blog.csdn.net/u014628771/article/details/108308337需求在Linux服务器上的SpringBoot程序中,调用gitclone,之后遍历git仓库中的所有文件。遍历git仓库可以使用File类实现,现在的问题是需要在SpringBoot程序中调用gitclone命令。实现方式使用Javanative的Proc......