Mine værktøjer
Du er her: Forside diverse filer til download mm. mysqldumpsplit.py
Handlinger tilknyttet webside

mysqldumpsplit.py

af Lars Bauer JørgensenSidst opdateret 19/08 2010 17:34

MySQL Dump og split Hejsa.. Laver dagligt backup af en mysql server, ved at lave et mysql dump. Det hele funker sådan set fint, men nu er dumpet oppe og fylde over 1½ gigabyte. Egentlig heller ikke noget problem, før der skal hives en lille del af backuppen ind igen .. Og så er der jo mulighed for at hente en tekstfil-splitter, og splitte tekstfilerne manuelt, og så videre. Er det ikke muligt at få mysqldump til selv at splitte dumpfilen til en selvvalgt størrelse ?

Klik her for at hente fil

Størrelse: 1.5 kB - Filtype text/python-source

Indhold af fil-indholdsobjekt

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
"""USAGE: %(__file__)s [-b <backuppath>]
read mysqldump from stdin  and dump each tables in database
in seperate files in directory named <backuppath>/<database>.<timestamp>/<tablenames>.sql
"""
import os
import sys
import datetime

backuppath = "./"
if "-b" in sys.argv[1:]:
    try:
        backuppath = sys.argv[2].strip()
        if backuppath.endswith("/"):
            pass
        else:
            backuppath += os.path.sep
    except IndexError:
        print __doc__ % vars()
        sys.exit(0)

if not os.path.isdir(backuppath):
    print __doc__ % vars()
    print "backuppath is not a directory"
    sys.exit(0)
    
    
timestamp = datetime.datetime.now().isoformat()

headPart = []
dirname = ""
headFlag = True
newTable = False

databasePattern = "Database:"
tablePattern = "-- Table structure for table "

for line in sys.stdin.readlines():

    if not dirname and databasePattern in line:
        database = line.split(":")[2].strip()
        dirname = backuppath + database + "_" + timestamp
        os.mkdir(dirname)

    if tablePattern in line:
        newTable = True
        tablename = line.replace(tablePattern, "").strip().strip("`") + ".sql"
        output = open(dirname + os.path.sep + tablename, "w")

    if headFlag:
        if newTable:
            headFlag = False
            headPart = "".join(headPart)
        else:
            headPart.append(line)
            continue

    if newTable:
        output.write(headPart)
        newTable = False
    output.write(line)
« august 2018 »
søn man tir ons tor fre lør
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
Chat Rooms
Dyrk motion

Trim ballerup

 

Powered by Plone, the Open Source Content Management System