簡體   English   中英

用於轉儲數據庫的bash腳本

[英]a bash script to dump a database

如何編寫一個bash腳本,它將轉儲數據庫並將其恢復。 應該有兩個論點。 第一個是要轉儲的db的名稱,另一個是db的名稱,我將在其中恢復以前的轉儲數據。

我有一個python腳本,他把轉儲並上傳到s3。 我認為它比bash腳本更好:

import datetime

import subprocess, tarfile, os, S3, tempfile

#Mysql
MYSQL_USER = "xxxx"
MYSQL_PASS = "xxx"
MYSQL_DB = "xxxxx"
MYSQL_HOST = "localhost"
MYSQL_DUMP = "mysqldump"

AWS_ACCESS_KEY_ID = "xxxxxxxxxxxx"
AWS_SECRET_ACCESS_KEY = "yyyyyyyyyyyyyyyyyyyy"

BUCKET_NAME = "bucket"

FOLDER = "backup/"

KEEP = 5

EXT_TIME = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%H:%M')

print "start mysqldump..."

proc1 = subprocess.Popen(MYSQL_DUMP + " --no-create-info  -u %s -p%s   -x  --databases  %s" % (MYSQL_USER, MYSQL_PASS, MYSQL_DB), shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

t1 = tempfile.NamedTemporaryFile()
t1.write(proc1.communicate()[0])

tar = tarfile.open( (os.path.join(os.curdir, MYSQL_DB + "_%s.tar.gz" % (EXT_TIME))), "w|gz")

tar.add(t1.name, MYSQL_DB + "_data.sql")
t1.close()
tar.close()

print "uploading to S3..."
conn = S3.AWSAuthConnection( AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY )
tardata = open(os.path.join(os.curdir, MYSQL_DB + "_%s.tar.gz" % EXT_TIME) , "rb").read()
response = conn.put(BUCKET_NAME, FOLDER + MYSQL_DB + "_%s.tar.gz" % EXT_TIME, S3.S3Object(tardata))

if response.http_response.status == 200 :
    print "sucessfully uploaded the archive to Amazon S3"
else:
    print "Uploading database dump to Amazon S3 is not successful" 

os.remove(os.path.join(os.curdir, MYSQL_DB + "_%s.tar.gz" % (EXT_TIME)))

嘗試這個:

#!/bin/bash
mysqldump $1 > test.sql
mysql $2 -uusername -ppassword < test.sql
rm test.sql

可能你需要mysqldump和mysql命令的任何可選參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM