iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Python3 备份 MySQL/MariaDB(本地+FTP)
  • 803
分享到

Python3 备份 MySQL/MariaDB(本地+FTP)

2024-04-02 19:04:59 803人浏览 独家记忆
摘要

【准备工作】搭建 FTP 服务器:windows Server 2008 R2 搭建FTP服务如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。如果远程主机无法访问,检查

【准备工作】

  • 搭建 FTP 服务器windows Server 2008 R2 搭建FTP服务

  • 如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。

  • 如果远程主机无法访问,检查防火墙。

  • 关于 ftp 的端口:控制端口为21;数据端口在主动模式(PORT)下为20,被动模式(PASV)下不定。

  • 开启被动模式:在“FTP 防火墙支持”里面配置端口,然后重启“Microsoft FTP Service”服务。注意具体 ftp 站点的数据框是灰色的,需要在 IIS 总站点配置。


【code】

以下代码对 Windows 下 MariaDB 10.1.18,ubuntu 下  Mysql 5.7.23 测试可行。

# encoding: utf-8
# author: walker
# date: 2018-08-02 
# summary: python3 备份 mysql/MariaDB(本地+FTP),一个库一个文件

import os
import time
import pymysql
import pprint
import psutil
from ftplib import FTP

DBHost = r'127.0.0.1'
DBPort = 3306
DBUser = r'root'     
DBPwd = r'passWord'

# LocalBakRoot = r'/home/walker/sql_bak'    # 本地备份目录
LocalBakRoot = r'D:\sql_bak'    # 本地备份目录
LocalIP = ''

FtpHost = r'192.168.xx.xx'  # FTP 主机
FtpBakRoot = r'sql_bak'     # FTP 目录
FtpUser = r'ftpadmin'        
FtpPwd = r'password' 

# 忽略掉系统库
IgnoreDB = {'infORMation_schema', 'mysql', 'performance_schema', 'sys'}    

# 根据前缀获取IP
def GetLocalIPByPrefix(prefix):
    localIP = ''
    dic = psutil.net_if_addrs()
    for adapter in dic:
        snicList = dic[adapter]
        for snic in snicList:
            if not snic.family.name.startswith('AF_INET'):
                continue
            ip = snic.address
            if ip.startswith(prefix):
                localIP = ip
      
    return localIP
  
# 处理一个数据库
def ProcOneDB(dbName):
    print('ProcOneDB %s ...' % dbName)

    filename = '%s_%s_%s.sql' % (time.strftime('%Y%m%d', time.localtime()), LocalIP, dbName)
    localFile = os.path.join(LocalBakRoot, filename)
    #备份数据库,如果没有 -B 参数不会导出数据库创建语句
    cmd = 'mysqldump -u%s -p%s -B %s > %s' % (DBUser, DBPwd, dbName, localFile)
    # print('cmd: %s' % cmd)
    print('mysqldump ...')
    rtn = os.system(cmd)
    if 0 != rtn:
        print('Error: 0 != rtn')
        return False

    ftp = FTP()
    ftp.encoding = 'gb18030'
    ftp.set_pasv(False)
    ftp.connect(FtpHost, port=21, timeout=10)
    ftp.login(user=FtpUser, passwd=FtpPwd)

    print(ftp.getwelcome())
    ftp.cwd(FtpBakRoot)
    # 以 sql 服务器 ip 作为子目录名
    if LocalIP not in ftp.nlst():
        ftp.mkd(LocalIP)       # 创建子目录
    ftp.cwd(LocalIP)
    with open(localFile, mode='rb') as f:
        ftp.storbinary('STOR ' + filename, f)

    return True    
  
# 处理所有数据库
def ProcAllDB():
    connDB = pymysql.connect(host=DBHost,
                                port=DBPort,
                                user=DBUser,
                                passwd=DBPwd,
                                charset='utf8mb4')
                                  
    cur = connDB.cursor()
          
    sql = "show databases;" 
    print('input sql:' + sql)
    cur.execute(sql)
    rowList = cur.fetchall()
    cur.close()
    connDB.close()
      
    dbList = list()
    for row in rowList:
        dbList.append(row[0])
    print('dbList(%d):\n%s\n' % (len(dbList), pprint.pformat(dbList, indent=4)))
      
    for dbName in dbList:
        if dbName in IgnoreDB:
            continue
        print('current time: %s' % time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))    
        ProcOneDB(dbName)                                          
        print('current time: %s\n' % time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))    
                                          
if __name__ == '__main__':
    LocalIP = GetLocalIPByPrefix('192.168.xx.')
    ProcAllDB()


【相关阅读】

  • python3 统计 ftp 文件个数和大小

  • ftplib — FTP protocol client

  • psutil

  • MySQL/MariaDB Tips

  • Ubuntu Server 18.04 与 MySQL 5.7

  • FTP 目录同步:pyftpsync


*** walker ***


您可能感兴趣的文档:

--结束END--

本文标题: Python3 备份 MySQL/MariaDB(本地+FTP)

本文链接: https://www.lsjlt.com/news/44026.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL自动备份的脚本及异地定时FTP
    这篇文章主要介绍“MySQL自动备份的脚本及异地定时FTP”,在日常操作中,相信很多人在MySQL自动备份的脚本及异地定时FTP问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • Python3 备份 MySQL/Mar
    【准备工作】搭建 FTP 服务器:Windows Server 2008 R2 搭建FTP服务如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。如果远程主机无法访问,检查防火墙。关于 ftp 的端口:控制...
    99+
    2023-01-31
    备份 Mar MySQL
  • python3以ftp方式备份华为交换机
    客户这里,有很多华为S系列交换机,基本时都是2700,5700系列。数量很多,原来都是手工登陆备份,费时,费力。后来想用python脚本备份交换机配置文件。思路:1、华为交换机的配置文件都是以vrpcfg.zip文件方式保存在交换机内存中2...
    99+
    2023-01-31
    华为 交换机 备份
  • 自动备份MySQL到FTP并定期清理过期备份的Shell脚本分享
    这篇文章主要介绍“自动备份MySQL到FTP并定期清理过期备份的Shell脚本分享”,在日常操作中,相信很多人在自动备份MySQL到FTP并定期清理过期备份的Shell脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-09
  • 云服务器本地备份
    首先,云服务器本地备份的作用是保护服务器上的数据。如果服务器上的数据遭受破坏或丢失,它将无法提供服务。因此,实现云服务器本地备份是非常重要的。在本地备份方面,可以使用各种备份工具,如备份软件、备份硬盘、云存储服务等。这些工具可以自动或手动备...
    99+
    2023-10-28
    备份 服务器
  • python备份mysql脚本
    今天简单的写了个python的mysql备份脚本,其实也不是很难呀。比shell简洁了很多!  开整:  注释都用英文写了,有些英语基础的朋友应该都可以看得懂了!#!/usr/bin/env python #backup the gtsho...
    99+
    2023-01-31
    脚本 备份 python
  • Mysql怎么远程备份binlog日志到本地
    本篇内容主要讲解“Mysql怎么远程备份binlog日志到本地”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql怎么远程备份binlog日志到本地”吧! ...
    99+
    2024-04-02
  • 阿里云 备份ecs到本地
    简介 在云计算时代,阿里云成为了许多企业和个人首选的云服务提供商之一。然而,随着数据量的不断增长,如何保证数据的安全性和完整性成为了一个重要的问题。本文将介绍如何使用阿里云备份ECS(弹性计算服务)的功能,将ECS上的数据备份到本地,以实现...
    99+
    2023-12-30
    阿里 备份 ecs
  • 云服务器备份到本地
    云服务器通常是通过公共互联网连接来提供服务的,因此您可以将数据备份到本地磁盘或远程服务器上。但是,为了安全和更有效的备份和恢复数据,请将数据备份到云服务器提供商的数据中心或本地数据中心。 以下是一些步骤,您可以将数据备份到云服务器: 准...
    99+
    2023-10-26
    备份 服务器
  • 华为云服务器备份本地备份实现原理
    华为云服务器备份可以分为本地备份和云端备份。其中,本地备份是指将数据存储在本地磁盘中,通过备份软件来实现备份。云端备份则是将数据存储在云服务器上,通过云服务提供商的备份软件来实现备份。 本地备份可以采用多种备份软件进行备份,包括华为云备份...
    99+
    2023-10-28
    备份 华为 原理
  • MySQL热备份与还原---利用mysqldump---备份脚本
    对extmail数据库进行每天01:00完全热备份,并可以完全恢复!一、先建立备份脚本,如下:vi mysql_extmail_bak.sh #!/bin/bash # Program ...
    99+
    2024-04-02
  • 云服务器本地备份文件
    1. 为什么需要云服务器本地备份文件? 在使用云服务器进行网站托管或应用程序部署时,数据的安全性和可靠性是至关重要的。尽管云服务提供商通常会提供数据备份和恢复功能,但在某些情况下,本地备份文件仍然是必要的。 本地备份文件可以提供以下优势:...
    99+
    2023-10-27
    备份文件 服务器
  • vps主机如何备份到本地
    要将VPS主机备份到本地,可以使用以下几种方法:1. 使用远程登录工具:使用远程登录工具(例如SSH)登录到VPS主机,然后使用命令...
    99+
    2023-08-14
    vps主机 vps
  • 如何实现远程FTP定时备份Shell脚本
    这篇文章主要讲解了“如何实现远程FTP定时备份Shell脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现远程FTP定时备份Shell脚本”吧!先说问题.公司现在有2台服务器,都是c...
    99+
    2023-06-09
  • mysql的备份脚本分享
    本篇内容介绍了“mysql的备份脚本分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#!/bin/bas...
    99+
    2024-04-02
  • MySQL数据库全库备份及增量备份脚本
    脚本网盘链接下载。 1、全库备份脚本如下: #!/bin/bash ############### 定义默认值 ################# user='root' passwd='123.com...
    99+
    2024-04-02
  • 阿里云备份本地数据库吗?
    阿里云备份本地数据库吗?这是一个经常被问到的问题。答案是肯定的,阿里云提供了多种方式来备份本地数据库。本文将详细介绍阿里云备份本地数据库的步骤和方法,帮助您更好地管理和保护本地数据库。 阿里云备份本地数据库主要有两种方式:一是使用阿里云的...
    99+
    2023-10-31
    阿里 备份 数据库
  • 云服务器数据备份到本地
    云服务器通常提供数据备份和容错功能,以确保数据的安全性和可用性。以下是可能的步骤: 备份数据到云端:使用同一云服务器上的多个云备份服务,将您的数据备份到多个云端存储设备上。这可以确保数据的可用性和安全性,并防止备份数据丢失或损坏。 重新...
    99+
    2023-10-26
    数据备份 服务器
  • 云服务器如何备份到本地
    要将云服务器备份到本地,可以使用以下几种方法:1. 数据库备份:如果云服务器上运行着数据库,可以使用数据库备份工具将数据库备份到本地...
    99+
    2023-09-27
    云服务器
  • 云服务器备份到本地文件
    云服务器通常提供备份功能,以确保在服务器故障或宕机时能够快速恢复数据。但是,如果您只备份数据文件,而不备份应用程序和系统配置文件,则可能存在数据泄露的风险。 在这种情况下,您可以考虑使用云备份服务提供商的服务来备份数据。这些服务通常会将数...
    99+
    2023-10-26
    备份 本地文件 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作