首页 > 数据库 >mysql数据库的备份

mysql数据库的备份

时间:2022-11-15 17:36:20浏览次数:47  
标签:backup 备份 datetime env mysql os 数据库 dir

linux备份
使用python脚本,要求有python3和mysqldump
脚本中 保留时间有点问题,不会自动删除,后期再看

vim /usr/bin/mysql_bakup.py

#! /usr/bin/python36
# -*- coding: utf-8 -*-

import os
import re
import datetime
import subprocess
#mysql_bak表示备份的文件夹名称,IP地址表示需要备份的数据库地址
mysql_host = {
#    'test': '192.168.0.3',
#    'pre': '192.168.0.2',
    'mysql_bak': '127.0.0.1'
}
db_user = 'root'
db_passwd = 'mypasswd'
##备份文件夹存放地址
back_dir = '/home/mysql/'

#  备份文件保存时间,单位:天
backup_keep_time = 10

# 此列表中的数据库将不会备份,下面是默认的基础数据库。
ignore_database = ['Database','information_schema','mysql','sys','performance_schema']

today = datetime.datetime.today().strftime('%Y%m%d%H%M')
for env in mysql_host:
    cmd = '/usr/bin/mysql -h {} -u{} -p{} -e "show databases"'.format(mysql_host.get(env),db_user,db_passwd)
    result = subprocess.check_output(cmd,shell=True,universal_newlines=True).split('\n')
    databases = [i for i in result if i and i not in ignore_database]
    env_backup_dir = os.path.join(back_dir,env,today)
    os.system('mkdir -p {}'.format(env_backup_dir))

    for database in databases:
        back_path = os.path.join(env_backup_dir,'%s_%s.sql.gz' %(database,today))
        command = '/usr/bin/mysqldump -h {} -u{} -p{} {} --force |gzip > {}'.format(
            mysql_host.get(env),db_user,db_passwd,database,back_path
        )
        os.system(command)

    for dirname in os.listdir(env_backup_dir):
        t1 = re.findall(r'_([\d]*?).sql.*',dirname)[0]
        time1 = datetime.datetime.strptime(t1,'%Y%m%d%H%M')
        time_dif = datetime.datetime.today()-time1
        times = time_dif.days
        if times >= backup_keep_time:
            os.remove(os.path.join(env_backup_dir,dirname))

执行命令

python3 vim /usr/bin/mysql_bakup.py

会在/home/mysql下自动生成一个mysql_bak的文件夹,文件夹是以当时时间的文件夹,文件下就是数据库的备份

[root@localhost ~]# ls /home/mysql/mysql_bak/
202211151637

[root@localhost ~]# ls /home/mysql/mysql_bak/202211151637/
mysql_bak_202211151637.sql.gz

标签:backup,备份,datetime,env,mysql,os,数据库,dir
From: https://www.cnblogs.com/wangyuanguang/p/16893146.html

相关文章

  • 安卓应用数据任意备份风险
    问题描述:App提供应用程序数据的备份和恢复功能,该由 AndroidManifest.xml文件中的allowBackup属性值控制,其默认值为true。当该属性没有显式设置为false时,攻击者可......
  • Mysql:存储引擎
    InnoDB引擎和MyISAM引擎InnoDB引擎MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎,它被设计用......
  • 数据库独角兽SingleStore:没有HTAP,机器学习和人工智能都是不切实际的
    SingleStore(前身MemSQL)是一个为数据密集型应用设计的云原生数据库。它是一个分布式的关系型SQL数据库管理系统(RDBMS),具有ANSISQL支持,它以数据摄入、交易处理和查询处......
  • MySQL驱动表和被驱动表说明
    老男孩Linux运维MySQL中级DBA-第12章-MySQL驱动表和被驱动表说明-补#驱动表和被驱动表####1.什么是驱动表和被驱动表?在join连接查询中,驱动表在SQL语句执行的过程中总......
  • MySQL、Kafka(含zookeeper)、Redis的docker-composer文件
    以下docker-composer文件仅用于开发环境,快速搭建原型使用,生产环境,请进行针对性设置。MySQLversion:'3.1'services:db:image:mysql:8.0.28command:--d......
  • mysql动态新增字段
    使用PREPARE预处理语句动态新增字段,先判断表的字段是否存在,如果存在不新增,反之新增。--1.动态新增字段(储存过程);--结束符号DROPprocedureifEXISTSsp_add_col......
  • Centos7安装MySQL8.0-操作手册
    一.Mysql8.0.31安装(YUM方式)1)首先删除系统默认或之前可能安装的其他版本的mysql或者mairadb[[email protected]~]#foriin$(rpm-qa|grep-E"mysql|mariadb");dor......
  • logstash 同步mysql 到elasticsearch
    1.下载logstash要和es的版本一致 用的是7.17.6     下载地址:https://www.elastic.co/cn/downloads/past-releases#logstash2.配置  LS_JAVA_HOME  系......
  • Sql Server 数据库导出一张表的数据,为脚本
    https://zhidao.baidu.com/question/1643403394551614060.html1、首先打开sqlserver,找到需要导出的数据库。2、单击右键,选择任务 -> 生成脚本,然后选择下一步。......
  • mysql详细学习笔记
    连接与断开服务器mysql-h地址-P端口-u用户名-p密码mysql>SHOWPROCESSLIST;显示哪些线程正在运行+----+------+-----------+------+---------+------+----......