linux中利用python脚本备份mysql、redis、mongodb数据库

安装可以直接用pip执行:

 代码如下 复制代码

pip install yunbk

github地址如下:

https://github.com/dantezhu/yunbk

而用法也非常简单,比如要备份mysql,则代码如下:

 代码如下 复制代码
from yunbk import YunBK
from yunbk.backend.local import LocalBackend
 
import sh
 
backend = LocalBackend('/data/backup')
 
with YunBK('mysql', [backend]) as ybk:
    sh.mysqldump(u='root',
                 all_databases=True,
                 _out="dump.sql")
    ybk.backup()

怎么样,简单吧!
上面的代码会将mysql的所有数据库dump下来之后,保存到本地的 /data/backup 目录,并且按照分类和日期命名。除了保存到本地之外,yunbk还提供了 ftp, sftp, 百度的bcs,阿里的oss等多种备份方式.

简单讲一下yunbk的设计原理:

在上面的代码中,用with语句进入了yunbk指定的一个默认临时目录,此时所有的文件写入都会在这个目录里。
当调用backup的时候,yunbk会调用[backend] 中每个backend的upload方法,将数据备份起来
当with结束的时候,yunbk创建的临时目录会自动删除,即不会留下任何痕迹
需要特别说明的是,yunbk是受 bakthat 这个插件启发而来,只是他默认使用亚马逊作为备份方式,在天朝你懂得,另外还有一些实现方式觉得不是特别好,代码有些冗余,所以就自己实现了一个。

废话就不多少了,列一下常用的几种被封方式的示例:

FTP备份

 代码如下 复制代码
from yunbk import YunBK
from yunbk.backend.ftp import FTPBackend
 
import sh
 
backend = FTPBackend('127.0.0.1', 'user', 'passwd', '/data/backup')
 
with YunBK('mysql', [backend]) as ybk:
    sh.mysqldump(u='root',
                 all_databases=True,
                 _out="dump.sql")
    ybk.backup()

阿里OSS备份

 代码如下 复制代码

from yunbk import YunBK
from yunbk.backend.ali_oss import OSSBackend
 
import sh
 
backend = OSSBackend('127.0.0.1', 'access_id', 'secret_access_key', 'backup_my_data')
 
with YunBK('mysql', [backend]) as ybk:
    sh.mysqldump(u='root',
                 all_databases=True,
                 _out="dump.sql")
    ybk.backup()
sftp 和 百度bcs 就不写啦,大家应该已经能够自己写出来啦

另外,推荐结合定时执行的库: APScheduler 一起使用,很方便:

# -*- coding: utf-8 -*-
 
import datetime
from apscheduler.scheduler import Scheduler
from apscheduler.events import EVENT_JOB_ERROR, EVENT_JOB_MISSED
import logging
 
from yunbk.yunbk import YunBK
from yunbk.backend.local import LocalBackend
 
 
logger = logging.getLogger('default')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
 
sched = Scheduler(daemonic=False)
 
 
def err_listener(ev):
    if ev.exception:
        logger.fatal('%s error.', str(ev.job), exc_info=True)
    else:
        logger.info('%s miss', str(ev.job))
 
 
@sched.cron_schedule(second='1')
def job():
    logger.debug(datetime.datetime.now())
    backend = LocalBackend('/data/release/backup/')
    with YunBK('ybk', [backend]) as ybk:
        f = open('t2.txt', 'w')
        f.write('ok')
        f.close()
        ybk.backup()
 
 
if __name__ == '__main__':
    sched.add_listener(err_listener, EVENT_JOB_ERROR | EVENT_JOB_MISSED)
    sched.start()

好啦,就到这里,希望对大家有用:)

时间: 2024-12-24 06:04:56

linux中利用python脚本备份mysql、redis、mongodb数据库的相关文章

在Linux中通过Python脚本访问mdb数据库的方法

  这篇文章主要介绍了在Linux中通过Python脚本访问mdb数据库的方法,本文示例基于debian系的Linux系统,需要的朋友可以参考下 在 linux 系统中连接 mdb 数据库,直接连接的话,mdb 默认的驱动无法识别非 windows 的路径, 所以不能使用常规的连接方式 ? 1 DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:dirfile.mdb 安装 这里我们需要借助一些库来实现第三方的驱动 我们需要安装这些包:mdbtools,

用Python脚本备份Mysql数据库

#!/usr/bin/env python #coding=utf8 #author : itnihao #mail : itnihao@qq.com #source : http://code.taobao.org/p/python2/src/trunk/ #version:1.0 ''' 功能:mysql备份.用mysqldump对mysql中各库进行备份 1.user,pass,host,path,del参数为变量 2.默认备份删除周期为5天,备份以天为单位 3.默认备份路径为/mysql

linux中利用shell脚本监控网站状态异常

  最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱.     这里赞一下OS X自带有crontab计划任务,可以直接在本机测试脚本啦^_^    代码如下 复制代码 # vi check_web_alive.sh --------------------------------------------------------------------- #!/bin/bash PATH=/bin:

linux中利用Shell脚本自动提交网站404死链到搜索引擎

  Shell脚本 说做就做,简单的写了个 Shell 脚本就搞定了! 脚本名称:网站死链生成脚本 脚本功能:每天定时分析网站前一天的 nginx 日志, 然后提取状态码为404并且UA为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链. 脚本代码: #!/bin/bash #Desc: Death Chain File Script #Author: ZhangGe #Blog: http://你的域名/5038.html #Date: 2015-05-0

linux中利用shell脚本查看占用swap的进程

查看进程在占用swap分区的脚本 命令脚本如下:  代码如下 复制代码 for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr 查看占用swap的进程  代码如下 复制代码 #!/bin/bash   echo -e `d

Linux 平台下 Python 脚本编程入门(一)

众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会给你带来一些其它的好处. 在 Linux 中学习 Python 脚本编程 首先,我们会使用 Python 的命令行工具,还会接触到 Python 的面向对象特性(这篇文章的后半部分会谈到它). 学习 Python 可以助力于你在桌面应用开发及数据科学领域的职业发展. 容易上手,广泛使用,拥有海量"开箱即用

教你用bat脚本备份mysql方法

备份mysql的方法其实有很多,但是并不是所有的mysql都能够在linux下运行.windows下备份也是少不了的.下面小编就教大家用bat脚本备份mysql方法.下面一起来学习用bat脚本备份mysql方法吧! rem rem C:Program FilesWinRAR 需要放到 path 下,才能调用rar cli工具 rem rem 跳转到工作目录下 f: cd f:DBBAK rem 设置变量:备份文件名 SET BAK_FILE=MY_DBBAK_%date:~0,-4%.sql r

Linux平台下Python脚本编程入门(一)

众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会给你带来一些其它的好处. 首先,我们会使用 Python 的命令行工具,还会接触到 Python 的面向对象特性(这篇文章的后半部分会谈到它). 学习 Python 可以助力于你在桌面应用开发及数据科学领域的职业发展. 容易上手,广泛使用,拥有海量"开箱即用"的模块(它是一组包含 Python

Linux下用Python脚本监控目录变化代码分享

  这篇文章主要介绍了Linux下用Python脚本监控目录变化代码分享,本文直接给出实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python #coding=utf-8   import os from pyinotify import WatchManager, Notifier, ProcessEven