Ich habe ein Python-Skript, das jede Stunde meine MySQL-Datenbank in Amazon S3-Buckets sichert. Ich verwende das Skript, um einfach mysqldump
aufzurufen, um den Speicherauszug zu erstellen und dann in den S3-Bucket unter Verwendung von tinys3
hochzuladen, beachte, dass ich lock-tables
auf false setze, so dass Transaktionen von anderen Anwendungen nicht behindert werden. HierServerabsturz bei MySQL-Sicherung mit Python
ist das Skript für Ihre Referenz:
import tinys3
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
application = get_wsgi_application()
from django.utils import timezone
import pytz
import datetime
import json
timezone.activate(pytz.timezone("Asia/Kolkata"))
current_datetime = timezone.localtime(
datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
)
dir_struct = '/'.join(current_datetime.strftime("%Y-%m-%d-%H-%M-%S").split('-'))
endpoint = 's3-us-west-2.amazonaws.com'
params = json.load(open('buckets.json'))
S3_ACCESS_KEY=params['S3_ACCESS_KEY']
S3_SECRET_KEY = params["S3_SECRET_KEY"]
bucket = params['mysql']
db_name = params['db_name']
mysql_command = 'sudo mysqldump --defaults-file=/home/ubuntu/.my.cnf --lock-tables=false %s > /home/ubuntu/%s.sql' %(db_name, db_name)
compress_command = "zip -r /home/ubuntu/%s.sql.zip /home/ubuntu/%s.sql" %(db_name, db_name)
delete_command = "sudo rm -rf /home/ubuntu/%s.sql*" %db_name
os.system(mysql_command)
os.system(compress_command)
backup_file = open('/home/ubuntu/%s.sql.zip' %db_name, 'rb')
conn = tinys3.Connection(S3_ACCESS_KEY, S3_SECRET_KEY, tls=True,endpoint=endpoint)
print conn.upload(
(dir_struct+'%s.sql.zip' %db_name),
backup_file,
bucket,
public=False
)
print conn.get((dir_struct+'%s.sql.zip' %db_name),bucket)
os.system(delete_command)
Das Problem ist, dass, wenn ich starten Sie den Cron-Job dieses Skript jede Stunde, der Server abstürzt nach ein paar Stunden laufen (etwa 5 bis 7 Stunden) . Ich habe noch keinen wesentlichen Grund für dieses Verhalten gefunden. Was ist das Problem hier? Gibt es einen Fehler in diesem Skript oder etwas in Bezug auf MySQL?
Erhalten Sie irgendwelche Protokolle, wenn MySQL abstürzt? – Chris
Der gesamte Server ist ausgefallen und muss neu gestartet werden, nicht nur MySQL. Die MySQL-Fehlerprotokolle zeigen ebenfalls keine Fehler. –