2010-07-26 12 views
1

comment écrire un script bash qui videra une base de données et la restaurera. il devrait y avoir deux arguments. le premier est le nom de db qui va être déversé et un autre est le nom de la base de données dans laquelle je vais restaurer les données précédemment vidées.un script bash pour vider une base de données

+0

J'ai écrit un script BASH qui a fait une fois, mais je trouve qu'il est difficile de maintenir en raison des subtilités de script BASH. Je vous recommande de faire ce que j'ai fait et d'envisager de passer à une implémentation python, ou peut-être de regarder dans la réplication de base de données. – Chris

Répondre

3

Je suis un script python qui prennent la décharge et de le transférer à s3. Je pense que son meilleur que le script 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))) 
+0

Je reçois une erreur lorsque j'essayais ce code dans ma machine.conn = S3.AWSAuthConnection (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) AttributeError: l'objet 'module' n'a pas d'attribut 'AWSAuthConnection' –

+0

Vous obtiendrez S3.py http: // aws.amazon.com/code/134. Téléchargez et vous trouverez le fichier S3.py sous le dossier python. – Tauquir

+0

remercie son travail maintenant je cherchais la même chose –

1

Essayez ceci:

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

Peut être que vous aurez besoin des arguments optionnels pour Mysqldump et commandes mysql

Questions connexes