首页 > 数据库 >(Linux环境)MySQL数据库定时备份

(Linux环境)MySQL数据库定时备份

时间:2023-12-28 10:36:35浏览次数:62  
标签:LOG database 备份 Linux TIME MySQL BACKUP DIR


(Linux环境)MySQL数据库定时备份_mysql


最近遇到MySQL数据库备份的问题,其实备份可以直接备份数据库数据目录,但是这个方法比较困难,得停数据库才能备份。于是写了shell脚本,采用for循环备份MySQL里面的所有库,然后用rsync软件将备份数据同步到其他服务器上实现异地备份,保留7天的备份数据。脚本展示如下:

#!/bin/bash
#date 2020-04-21
#author by believer 
#discription: This script use to backup mysql data and send to remote server:192.168.1.100 dir:/data/databackup.
#rollback data:mysql -uroot -proot databasename < back.sql
#设置环境变量
source /etc/profile > /dev/null 2>&1
BACKUP_TIME=`date "+%Y%m%d%H%M%S"`
BACKUP_DIR='/opt/databack/backupdata'
BACKUP_LOG='/opt/databack/log'
ROOT_PASSWORD='123456'
REMOTE_USER='test'
REMOTE_DIR='/data/databackup'
REMOTE_IP='192.168.1.100'
export MYSQL_PWD="$ROOT_PASSWORD"
#开始备份所有数据库
for database in buse supershow goods 
do
 echo "mysqldump -uroot -h127.0.0.1  $database > ${BACKUP_DIR}/${database}_${BACKUP_TIME}_bak.sql" >> ${BACKUP_LOG}/${database}_${BACKUP_TIME}_dump.log
 mysqldump -uroot -h127.0.0.1  $database > ${BACKUP_DIR}/${database}_${BACKUP_TIME}_bak.sql 2>> ${BACKUP_LOG}/${database}_${BACKUP_TIME}_dump.log
 if [ $? -eq '0' ];
 then
    echo "backup $database successful !" >> ${BACKUP_LOG}/${database}_${BACKUP_TIME}_dump.log
 else
    echo "backup $database fail !!!" >> ${BACKUP_LOG}/${database}_${BACKUP_TIME}_dump.log
 fi
done
#打包SQL文件成tar.gz文件并且同步到异地机器
cd ${BACKUP_DIR}/
tar -zcvf mysql_${BACKUP_TIME}.tar.gz *.sql 
sleep 3s
rm -f *.sql 
sleep 5s
#rsync -avzP --delete 该命令发现远端服务器与本机文件不一致,会删除远端服务器不一样的文件,故尽量同步远程的普通用户。root权限比较大,存在风险,生产环境必须谨慎!!! 
rsync -avzP --delete ${BACKUP_DIR}/ ${REMOTE_USER}@${REMOTE_IP}:${REMOTE_DIR}/
#保留7天内的备份文件
cd ${BACKUP_DIR}/
find ${BACKUP_DIR}/ -type f -mtime +7 -exec rm -f {} \;
#保留7天内的日志
cd ${BACKUP_LOG}/
find ${BACKUP_LOG}/ -type f -mtime +7 -exec rm -f {} \;

欢迎各路大佬转载交流~~


标签:LOG,database,备份,Linux,TIME,MySQL,BACKUP,DIR
From: https://blog.51cto.com/u_12484226/9010234

相关文章

  • 解决/lib64/libc.so.6: version `GLIBC_2.14' not found(Linux环境)
    ......
  • MySQL数据库知识重构(1)
    平时工作会用到mysql数据,但是没有对知识点进行系统的学习,知识比较零散。所以为了将mysql吃透,方便以后工作。从现在起,开始知识点重构的旅程。MySQL数据库?MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库......
  • Linux系统禁止直接用root登录,改成普通用户登录
    为了提高系统的安全级别,一般都要禁止直接用root远程登录服务器,改成普通用户登录,在执行su-root登录。[root@test~]#useraddtest[root@test~]#passwdtest修改ssh的配置文件[root@test~]#vim/etc/ssh/sshd_configPort32222修改端口,改成自己想用的端口。注意不要与其......
  • 银河麒麟系统下完全mysql卸载
    1.下载卸载包首先,您需要下载MySQL数据库的卸载包。卸载包是一个脚本文件,它将协助您在系统上卸载MySQL数据库。您可以从MySQL官方网站下载该卸载包。2.停止MySQL服务在执行卸载之前,您需要停止MySQL服务。打开终端并运行以下命令:终端命令:sudoservicemysqlstop这个命令将停止M......
  • Linux - ps命令详解
    一、引言在Linux系统中,有许多命令可以帮助我们监控和管理系统中正在运行的进程。其中,ps(ProcessStatus)指令是最常用且功能强大的命令之一。ps用于报告当前系统的进程状态,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用......
  • Linux - 查看磁盘io利用率
    一、概述含义:iostat是I/Ostatistics(输入/输出统计)的缩写作用1、主要对系统的磁盘操作活动进行监视2、汇报磁盘活动及CPU使用情况,输出磁盘IO和CPU的统计信息劣势不能对某个进程进行深入分析,仅对系统的整体情况进行分析二、安装iostat属于sysstat软件包,安装iostat的命令:......
  • MySQL-锁
    按粒度划分全局锁概念全局锁就是对整个数据库实例加锁。应用场景全库逻辑备份(mysqldump)实现方式MySQL提供了一个加全局读锁的方法,命令是Flushtableswithreadlock(FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更......
  • RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装
    欢迎关注公众号【11来了】,发送笔记可领取Redis、JVM等系列完整pdf!MQ之间的对比三种常用的MQ对比,ActiveMQ、Kafka、RocketMQ性能方面:三种MQ吞吐量级别为:万,百万,十万消息发送时延:毫秒,毫秒,微秒可用性:主从,分布式,分布式扩展性方面:水平伸缩能力:均支持技术栈:Java,Java/Scala,Java功能......
  • linux下gcc 4.8.5和7.5并存
    有些软件依赖于c++14甚至c++17的特性,比如libpqxx6.4.8版本就需要4.9以上版本,4.8.5不可以,会下列错误,invalidinitializationofnon-constreferenceoftype‘pqxx::connection_base&’fromanrvalueoftype‘<brace-enclosedinitializerlist>’  m_open{C......
  • cmake管理qt项目,设置windows和linux下生成的程序图标,以及任务栏显示设置的图标
    先代码设置MainWindow图标://主要用于在linux下运行程序时,在任务栏显示图标MainWindoww;w.setWindowIcon(QIcon(":/res/icon.png"));(*windows下设置生成的exe程序的ico图标后,默认也会对运行程序时任务栏的图标也设置成这个ico,但是同样的代码拿到linux下就无效,需要其他方......