数据库服务器定时自动备份

时间:2024-05-19 19:15:32

Linux VPS一键备份脚本

1.1 backup.sh下载

backup.sh的主要特点有:

1、支持 MySQL/MariaDB/Percona 的数据库全量备份或选择备份;

2、支持指定目录或文件的备份;

3、支持加密备份文件(需安装 openssl 命令,可选);

4、支持上传至 Google Drive(需先安装 gdrive 并配置,可选);

5、支持在删除指定天数本地旧的备份文件的同时,也删除 GoogleDrive 上的同名文件(可选)。

下载该脚本并赋予执行权限:

wget--no-check-certificate https://github.com/teddysun/across/raw/master/backup.sh

备用:https://raw.githubusercontent.com/freehao123/across/master/backup.sh

chmod+x backup.sh

1.2 backup.sh配置

直接编辑backup.sh文件,相关的变量名说明:

ENCRYPTFLG (加密FLG,true 为加密,false 为不加密,默认是加密)

BACKUPPASS (加密密码,重要,务必要修改)

LOCALDIR (备份目录,可自己指定)

TEMPDIR (备份目录的临时目录,可自己指定)

LOGFILE (脚本运行产生的日志文件路径)

MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用户密码)

MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的数据库名,留空则是备份所有数据库)

BACKUP (需要备份的指定目录或文件列表,留空就是不备份目录或文件)

 

LOCALAGEDAILIES (指定多少天之后删除本地旧的备份文件,默认为 7 天)

DELETE_REMOTE_FILE_FLG (删除 Google Drive 或 FTP 上的备份文件 FLG,true 为删除,false 为不删除)

 

FTP_FLG (上传文件至 FTP 的 FLG,true 为上传,false 为不上传)

FTP_HOST (连接的 FTP 域名或 IP 地址)

FTP_USER (连接的 FTP 的用户名)

FTP_PASS (连接的 FTP 的用户的密码)

FTP_DIR (连接的 FTP 的远程目录,比如: public_html)

 

※ MYSQL_DATABASE_NAME 是一个数组变量,可以指定多个。举例如下:

 

MYSQL_DATABASE_NAME[0]=”phpmyadmin”

MYSQL_DATABASE_NAME[1]=”test”

 

※ BACKUP 是一个数组变量,可以指定多个。举例如下:

 

BACKUP[0]=”/data/www/default/test.tgz”

BACKUP[1]=”/data/www/default/test/”

BACKUP[2]=”/data/www/default/test2/”

 

1.3 backup.sh备份

执行以下命令开始备份:

./backup.sh

我们可以在我们设置的路径下看到已经备份的文件和数据库。

注:MySQL错误处理: Errcode: 24 “Toomany open files” when using LOCK TABLES|大数据库备份与导出导入,解决办法很简单,加上参数就好:–skip-lock-tables 跳过lock table的步骤

Linux VPS主机自动备份查看备份

如果你设置了加密备份的话,想要查看的话还需要解密,命令如下:

opensslenc -aes256 -in /root/backups/ubuntu_20200101160232.tgz.enc -outdecrypted_backup1.tgz -pass pass:qimm -d -md sha1

 

 

 

百度网盘

Centos7下利用crontab+bypy实现自动备份数据到百度网盘

一、关于

有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百度网盘数据的同步。

这是一个百度云的Python 客户端,其主要目的和功能,就是为 Linux 使用者提供一种在命令行下,使用百度云盘中的存储空间的方法。它提供文件列表、下载、上传、比较、向上同步、向下同步,等操作。

二、环境配置

环境:Centos7+python2.7.5

查看系统是否有python环境(一般系统自带python2.7)

安装pip、bypy

sudo yum -y install epel-release    #这是安装pip时要用到的东西

sudo yum -y install python-pip

sudo yum clean all

sudo pip install --upgrade pip    #更新

#如果无法更新可以使用命令:sudo python -m pipinstall --upgrade pip

sudo pip install bypy

sudo pip install requests

如出现如下界面,则安装完成

数据库服务器定时自动备份

 

三、授权登陆

执行bypy info

bypy info

访问方框内的连接

数据库服务器定时自动备份

登陆百度云账号

数据库服务器定时自动备份

获得授权码

数据库服务器定时自动备份

粘贴到终端上

数据库服务器定时自动备份

授权完成后可查看相关信息,由于百度PCS API权限限制,程序只能存取百度云端/apps/bypy目录下面的文件和目录

bypy info     #空间使用信息

bypy list     #目录信息

数据库服务器定时自动备份

四、使用bypy备份数据

例如我们可以备份上传‘’/test"目录下的所有文件

把本地当前目录下的文件同步到百度云盘:

bypy upload     #要注意切换到你想要上传的目录在执行这个命令

登录到网盘上,可以看到所有文件已经上传

把云盘上的内容同步到本地:

bypy downdir

比较本地当前目录和云盘根目录,看是否一致,来判断是否同步成功:

bypy compare

五、使用crontab实现定时自动数据备份

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被守护进程**, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。每个用户可以拥有自己的crontab文件。同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc目录中。

 

用法:* * * * *command。前面5个*代表执行命令时间,后面的command代表要执行的命令。该命令可以使一个普通的命令、shell脚本、python脚本、java的jar包等

创建shell脚本

数据库服务器定时自动备份

此脚本使用bypy upload命令将/opt/backups/sql文件夹下所有文件上传至网盘中apps\bypy\dlb文件夹下

添加crontab任务

crontab -e

输入以下内容,“* 23 ** *“表示每天23点,“/usr/bin/sh”是执行脚本命令的路径,后面的事要被执行的脚本的绝对路径(为避免环境问题,推荐命令带上路径)

数据库服务器定时自动备份

查看任务

crontab -l

数据库服务器定时自动备份

crontab -r   删除任务

重启crond服务

systemctl restart crond

这样系统将会每天定时执行数据备份的脚本

crontab配置文件位于“/etc/crontab”,打开配置文件,可以看到相关配置信息

数据库服务器定时自动备份