返回顶部
首页 > 资讯 > 数据库 >Python3 备份 MySQL/Mar
  • 460
分享到

Python3 备份 MySQL/Mar

备份MarMySQL 2023-01-31 08:01:53 460人浏览 八月长安
摘要

【准备工作】搭建 FTP 服务器:windows Server 2008 R2 搭建FTP服务如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。如果远程主机无法访问,检查防火墙。关于 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/Mar

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

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

猜你喜欢
  • Python3 备份 MySQL/Mar
    【准备工作】搭建 FTP 服务器:Windows Server 2008 R2 搭建FTP服务如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。如果远程主机无法访问,检查防火墙。关于 ftp 的端口:控制...
    99+
    2023-01-31
    备份 Mar MySQL
  • Python3备份
    Python3生产者/消费者模式 import threading import queue,time,random class Goods:#产品类 def __init__(self): ...
    99+
    2023-01-31
    备份
  • Python3 备份 MySQL/MariaDB(本地+FTP)
    【准备工作】搭建 FTP 服务器:Windows Server 2008 R2 搭建FTP服务如果本机访问报 530 错误:1、检查用户名、密码;2、检查 ftp 目录的用户权限。如果远程主机无法访问,检查...
    99+
    2024-04-02
  • python3备份juniper交换机
    #!/usr/bin/env python3# -*- coding: utf-8 -*-"""  Author:  Linxy -- <592901071@qq.com>  Purpose: Juniper备份脚本  Crea...
    99+
    2023-01-31
    交换机 备份 juniper
  • mysql备份
    一.备份的原因 运维工作的核心简单概括就两件事: 1)第一个是保护公司的数据. 2)第二个是让网站能7*24小时提供服务(用户体验)。 1)备份就是为了恢复。 2)尽量减少数据的丢失(公司的损失) 二.备份的类型 冷备份: 这些备份在...
    99+
    2015-04-13
    mysql备份
  • MySQL定时备份(全量备份+增量备份)
    参考 zmcyu 的 mysql数据库的完整备份、差异备份、增量备份 更多binlog的学习参考马丁传奇的 MySQL的binlog日志,这篇文章写得认真详细,如果看的认真的话,肯定能学的很好的。 如果查看binlog是出现语句加密的情况...
    99+
    2016-10-03
    MySQL定时备份(全量备份+增量备份)
  • Percona Xtrabackup备份mysql (完整备份与增量备份)
    Percona Xtrabackup备份mysql (完整备份与增量备份)Xtrabackup简介Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB...
    99+
    2024-04-02
  • mysql备份策略的实现(全量备份+增量备份)
    目录设计场景技术点服务器信息准备工作编写全量备份脚本(Mysql-FullyBak.sh)编写增量备份脚本设置定时任务crontab恢复操作最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略...
    99+
    2022-05-21
    mysql备份策略 mysql 全量备份 mysql 增量备份
  • mysql全库备份/增量备份脚本
    http://hongge.blog.51cto.com/ 生产环境中Mysql数据库的备份是周期性重复的操作,所以通常是要编写脚本实现,通过crond计划任务周期性执行备份脚本 mysqldump备份...
    99+
    2024-04-02
  • mysql 定时备份
    mysql备份 mysqldump -uroot  -p111111 test > ~/mysqlBak/test`date "+%Y%m%d%H%M%S"`.sql cron编辑 crontab -e cron列表 crontab...
    99+
    2017-12-05
    mysql 定时备份
  • mysql备份脚本
    在网上看了几个脚本根据网上的稍微修改了下,稍微更准确了点,就是缺少记录日志的功能,还没想好怎么写,后续添加 #!/bin/bash#做大备份数量Backup_Max_Files=20#数据库备份目录WORK...
    99+
    2024-04-02
  • mysql备份恢复
                 MYSQL备份恢复MySQL备份一般采取全库备份加日志备份的方式.1、binlogmysql的二进制日志记录着...
    99+
    2024-04-02
  • MySQL分库备份
    公司一直是全备+binlog,但是如果单个库出现问题怎么办,在进行完整恢复的话,第一会耽误时间,第二会影响其它数据库,第三如果数据量大,对于库的恢复也是问题,所以我提出了,除了全备,还要做分库备份,只要更灵...
    99+
    2024-04-02
  • MySQL 增量备份
    增量备份的特点        增量备份的优点是没有重复数据,备份量不大,时间短。缺点也很明显,需要上次完全备份及完全备份之后所有的增量备...
    99+
    2024-04-02
  • MySQL备份之mysqldump
    mysqldump是mysql自带的数据库备份工具,属于单线程,大部分生产环境的mysql数据库备份都是使用该工具,mysqldump可以将数据导出为原生sql语句,在将其数据导入至数据库时,相当于是执行一...
    99+
    2024-04-02
  • Mysql备份系列
    mysql三种备份方式 https://www.cnblogs.com/fengzhongzhuzu/p/9101782.html Mysql备份系列(1)--备份方案总...
    99+
    2024-04-02
  • 如何备份mysql
    本篇文章为大家展示了如何备份mysql,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如何备份mysql1.进入mysql客户端连接数据库2.选择需要备份的文件,点击...
    99+
    2024-04-02
  • mysql如何备份
    这篇文章将为大家详细讲解有关mysql如何备份,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 mysqlhotcopy是一个Perl脚本,最...
    99+
    2024-04-02
  • 初探MySQL数据备份及备份原理
    相信通过上一篇文章《数据丢失如当头棒喝,数据备份重如山!》,很多人对于数据备份的重要性有了深刻的认识,本文将以MySQL为例带大家进一步了解数据备份的原理和初步实践。 根据需求的不同,数据备份的方式也...
    99+
    2024-04-02
  • mysql如何全量备份和增量备份
    本篇内容主要讲解“mysql如何全量备份和增量备份”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何全量备份和增量备份”吧!mysql 全量备份:vi...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作