首页 > 数据库 >Linux定时备份数据库

Linux定时备份数据库

时间:2023-06-27 15:33:11浏览次数:41  
标签:name -- 备份 Linux mysql path backup 数据库

一、mysql命令备份

①创建存放mysql备份的文件夹backup ②创建backup.sh备份脚本 ③赋予权限chmod u+x backup.sh

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

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

user="root"
password="123456"
host="localhost"
port="3306"
#需备份的数据库,数组
db=("mysql_one" "mysql_two")
#备份时加锁方式,
#MyISAM为锁表--lock-all-tables,
#InnoDB为锁行--single-transaction
lock="--single-transaction"
mysql_path="/data/mysql"
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 * * 6 /home/backup/backup.sh
0

重启定时器

service crond restart

标签:name,--,备份,Linux,mysql,path,backup,数据库
From: https://www.cnblogs.com/twm7512/p/17508980.html

相关文章

  • Linux系统编程21-简单的more命令实现
    /dev/tty:键盘和显示器设备描述文件向该文件写->显示在用户屏幕向该文件读->从键盘获取用户输入当more需要用户输入可以从/dev/tty得到数据#include<stdio.h>#include<stdlib.h>#definePAGELEN24#defineLINELEN512voiddo_more(FILE*);intsee_more(FILE*);......
  • windows和linux环境下安装jprofiler
    Windows安装jprofiler一.windows安装和激活1.首页默认,直点击下一步2.同意授权3.进入注册页面4.在注册页面输入用户和密钥5.打开注册机,点击generate生成账号和密钥6.把licensekey输入到步骤一中的密钥框,公司名字可以顺便写7.直接点击下一步,完成安装二.Linux安装1.......
  • 初识Quantum Mini Linux Development Kit
    本人近期看到稚晖君的Linux-card的相关视频介绍,看到它极大的方便,整体只需Type-C即可供电并且算力满足目前所需要求功能也不少。于是火速下单,从SpeedStudio购入。到货后先认识这个开发套件的外观,可以说是非常小巧,功能接口也不少,可以满足大部分需求。      ......
  • linux vim常用快捷键
    linuxvim常用快捷键行尾插入:A行首插入:I光标后插入:a光标前插入:i往下插入空行:o往上插入空行:O定位整个文本第一行:gg定位整个文本最后一行:G定位某行:比如定位21行::21或21gg或21G复制整行:yy粘贴:p往下复制3行:3yy复制单个字符:v模式——y复制——p粘贴删除整行:dd往下删......
  • 【AGC】云数据库云侧Python SDK集成使用方法
    使用场景云数据库服务端以前支持Node.JS和Java平台的ServerSDK。现在介绍一下服务端为Python平台时的使用方法。集成准备Python环境配置1.下载Python和PyCharm并安装。2.使用安装的python本身作为解释器。3.安装AGCPythonSDK。AGC环境配置1.在AGC创建项目和应用2.开通云数据库服......
  • 统信UOS系统开发笔记(七):在统信UOS系统上使用linuxdeployqt发布qt程序
    前言  在ubuntu上发布qt程序相对还好,使用脚本,但是在统信UOS麒麟上发布的时候,因为银河麒麟等不同版本,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxdeployqt发布qt程序。<br>注意  本篇文章,最终手动结合几个方式成功,花费不少时间研究,推断是终端直......
  • Linux安装花生壳进行端口映射内网穿透
    1下载1.1官网下载进入 花生壳 官网,选择linux版安装包,下载,上传到服务器 1.2wget下载wget"https://down.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm"-Ophddns_5.2.0_amd64.rpm 2安装执行命令rpm-ivhphddns_5.2.0_amd64.rpm安装成功......
  • Linux扩展篇-shell编程(五)-流程控制(二)-case语句
    基本语法:case"${item}"in1)echo"item=1";;2|3)echo"item=2oritem=3";;*)echo"default(noneofabove)";;esac注意事项:以case开始esac结尾case行尾必须为单词“in”,每......
  • Java跟数据库连接有问题怎么办?
    Java与数据库连接出现问题时,可以尝试以下几个步骤来解决问题:1、检查数据库驱动程序:确保使用的数据库驱动程序与数据库版本兼容。检查并确保已正确导入所需的数据库驱动程序的jar文件。2、验证数据库连接参数:确保提供了正确的数据库连接参数,包括数据库URL、用户名和密码等。验证......
  • docker compose部署mysql数据库
    1.想要达成的目标通过dockercompose来部署mysql,并实现一些列需求在mysql容器初始化时设置字符类型设置mysql容器的时区为中国时区设置mysqlroot密码,采用.env传入参数初始化时创建一个数据库初始化时创建用户名和密码挂载本地目录到容器内容器初始化时执行脚本,导入......