linux 服务器自动备份脚本的方法(mysql、附件备份)

yizhihongxing

下面我将详细讲解 “linux 服务器自动备份脚本的方法(mysql、附件备份)”。

背景介绍

在日常的服务器维护中,备份是至关重要的一项工作。本文主要介绍如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件。

准备工作

在开始前需要先进行几个准备工作:

  • 确定备份的目录和数量
  • 安装必要的软件:rsync, mysqldump

编写备份脚本

在linux服务器上编写备份脚本,备份脚本的基本框架如下:

#!/bin/bash
#定义变量
dir=/data/backup        #备份文件存放目录
date=$(date +%Y%m%d)    #获取当前日期
user=root               #数据库用户名
pass=password           #数据库密码
db_name=db_name         #数据库名称

#创建备份文件存放目录
mkdir -p $dir/$date

#备份mysql数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

#同步附件文件
rsync -avzP --delete /path/to/attachs username@remote_host:$dir/$date/attachs

#删除7天前的备份文件
find $dir -ctime +7 -delete

其中:

  • dir是备份文件存放目录;
  • date是当前日期,用于区分备份文件;
  • user是mysql数据库用户名;
  • pass是mysql数据库密码;
  • db_name是需要备份的数据库名称;
  • mkdir -p命令用于创建备份文件存放目录;
  • mysqldump命令用于备份mysql数据库,将备份文件存放在指定目录中;
  • rsync命令用于将附件文件进行同步备份到远程服务器上;
  • find命令用于删除7天前的备份文件。

设置定时任务

为了实现自动备份,需要将备份脚本设置为定时任务。编辑crontab文件:

crontab -e

在文件末尾添加以下内容:

0 3 * * * /bin/bash /path/to/backup.sh > /dev/null 2>&1

其中:

  • 0 3 * * *表示每天凌晨3点执行备份任务;
  • /bin/bash表示执行备份脚本的解释器;
  • /path/to/backup.sh表示备份脚本所在的路径;
  • > /dev/null 2>&1表示将脚本的标准输出和标准错误输出都重定向到/dev/null。

示例

为了更好的理解备份脚本,这里提供两个示例:

示例1:备份wordpress博客

假设我们的wordpress博客目录为:/var/www/wordpress,附件存放目录为:/var/www/wordpress/wp-content/uploads。我们可以将备份脚本写成以下形式:

#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=wordpress

mkdir -p $dir/$date

mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

rsync -avzP --delete /var/www/wordpress/wp-content/uploads username@remote_host:$dir/$date/uploads

find $dir -ctime +7 -delete

示例2:备份gitlab数据

假设我们的gitlab存储目录为:/var/opt/gitlab,在备份之前需要先停止gitlab服务,然后将备份脚本写成以下形式:

#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=gitlabhq_production

mkdir -p $dir/$date

#停止 gitlab 服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

#备份数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql

#备份 gitlab 存储目录
tar -czvf $dir/$date/gitlab.tar.gz /var/opt/gitlab

#同步附件文件
rsync -avzP --delete /var/opt/gitlab/uploads username@remote_host:$dir/$date/uploads

#启动 gitlab 服务
gitlab-ctl start

find $dir -ctime +7 -delete

总结

以上就是如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件的完整攻略。通过脚本自动备份可以有效保障服务器数据安全,并且提高了日常运维效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux 服务器自动备份脚本的方法(mysql、附件备份) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 解析MySQL索引的作用

    解析MySQL索引的作用 在MySQL中,索引是一种特殊的数据结构,可以加速数据的查找。本文将详细讲解MySQL索引的作用,以及如何解析索引。 什么是MySQL索引 MySQL索引是一种特殊的数据结构,用于加速数据查找。使用索引可以将查找的时间从线性时间复杂度优化为对数时间复杂度,大大提高了数据库的查询效率。 索引可以看作是一张目录表,表中记录了数据存储的物…

    database 2023年5月19日
    00
  • CentOS安装MySQL5.5的完整步骤

    下面我为您详细讲解 CentOS 安装 MySQL 5.5 的完整步骤,具体如下: 1. 环境准备 在开始安装之前,请确保您的 CentOS 系统已经安装了 wget 和 tar 工具。 如果您的系统中没有安装这些工具,您可以使用以下命令安装: yum install -y wget tar 2. 下载 MySQL 使用以下命令下载 MySQL 5.5: w…

    database 2023年5月21日
    00
  • 深入理解MySQL中MVCC与BufferPool缓存机制

    深入理解MySQL中MVCC与BufferPool缓存机制需要分别从两个方面来进行讲解。下面我将详细讲解这两个方面,同时给出相关示例说明。 MVCC机制 MVCC概念解释 MVCC,全称为Multi-Version Concurrency Control,简言之,就是多版本并发控制。简单地说,就是在MySQL数据库中,每一行数据可以有多个版本,不同的事务可以…

    database 2023年5月22日
    00
  • Redis 通过key前缀获取所有匹配的key的值

    最近工作中,遇到一个不太难的问题,但是一般情况下 通常,我们使用redis要求的都是key不能相同,但是这次的问题是 值相等的key  不能存在多个。解决的时候,看到redis可以写正则表达式获取匹配的key,所有给自己没有规律的key,加了一个前缀,毕竟一个系统 ,缓存的数据还是很多的,避免拿到别人的key。接下来,我们来看看代码怎么写的。 首先写了一个测…

    Redis 2023年4月11日
    00
  • 浅谈sql数据库去重

    浅谈 SQL 数据库去重 在使用 SQL 数据库时,我们经常需要对数据进行去重操作。本文将介绍 SQL 数据库去重的完整攻略,同时提供两条示例说明。 去重操作条件 在进行去重操作时,需要确定去重的条件。一般情况下,去重的条件是某些字段的值相同,可以使用 GROUP BY 和 HAVING 子句实现。 使用 GROUP BY 进行去重 使用 GROUP BY …

    database 2023年5月21日
    00
  • MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

    下面是详细的攻略。 问题背景 MySQL中的sql_mode是一个很重要的参数,一般情况下,我们建议使用 sql_mode=strict_trans_tables,这样可以强制 MySQL 严格执行 SQL 标准。但是,在某些情况下,应用程序可能需要更灵活的 sql_mode,因为开启了某些 SQL 模式可能会导致一些误报/报错的情况。 这里我们主要介绍一种…

    database 2023年5月18日
    00
  • MySql数据库触发器使用教程

    MySql数据库触发器使用教程 MySQL触发器常用于在特定表上定义自动化的操作,以代替手动执行相应的SQL语句,从而提高工作效率。 触发器的基本概念 触发器(Trigger)是指一种能够进行自动化的操作,通常是在特定的表上定义所触发的操作,以代替手工地执行相应的SQL语句。 MySQL支持三类触发器: BEFORE触发器:在所触发的操作执行之前先执行相应的…

    database 2023年5月21日
    00
  • 在ASP.NET 2.0中操作数据之十七:研究插入、更新和删除的关联事件

    在ASP.NET 2.0中,我们常常需要通过代码操作数据库的数据,涉及到插入、更新和删除等操作。而这些操作都会涉及到数据的关联事件,本文就来详细讲解在ASP.NET 2.0中如何研究插入、更新和删除的关联事件。 关联事件 ASP.NET 2.0中提供了大量的关联事件,这些事件可以在数据库中执行特定操作时发生。下面是一些常见的关联事件: Inserted:插入…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部