分享

python-Mysql备份脚本

 copy_left 2019-10-29

记一次血泪史!

国庆七天乐,因为机房所在建筑故障导致停电,中间交换机、中转机全部瘫痪。外部手段无法与服务器进行交互。不出意外,UPS抗了2天后全部宕机。

最终一台centos6.5的mysql服务器彻底挂了。clone、重建、找数据中心恢复最新的数据,然后发现第三方公司的软件备份的是有问题的,无法恢复.......

所以还是自己动手做备份吧。python 备份mysql的脚步来了... 如下。配合系统内的定时任务启动即可。

#!/usr/local/bin/python

'''

此脚本用于Mysql数据库的备份

'''

import os

import time

import datetime

import pipes

# mysql/bin的路径

MYSQLD = ''

# 服务器的IP

DB_HOST = 'localhost'

# 数据库用户名

DB_USER = 'root'

# 数据库密码

DB_USER_PASSWORD = '_mysql_user_password_'

# 需要备份的数据库名

DB_NAMES = ['td_oa', 'td_edu']

# 备份路径

BACKUP_PATH = '/backup/dbbackup'

# 创建今天的备份目录

DATETIME = time.strftime('%Y%m%d-%H%M%S')

NOWBACKUPPATH = BACKUP_PATH + '/' + DATETIME

# 保留多少份备份文件。

try:

os.stat(NOWBACKUPPATH)

except:

os.mkdir(NOWBACKUPPATH)

print('开始执行备份.....')

backupBaseCMD = '''mysqldump -h {DB_HOST} -u {DB_USER} -p{DB_USER_PASSWORD} {db} > {NOWBACKUPPATH}/{db}.sql'''.format(DB_HOST=DB_HOST, DB_USER=DB_USER, DB_USER_PASSWORD=DB_USER_PASSWORD,NOWBACKUPPATH=NOWBACKUPPATH)

for i, dbname in enumerate(DB_NAMES):

tip = '({0}/{1})'.format(i+1, len(DB_NAMES))

print('{0}数据库{1}开始备份...'.format(tip, dbname))

backupCMD = backupBaseCMD.format(db=dbname)

backupResult = os.system(backupCMD)

# 0表示成功执行命令。1 表示异常执行

if backupResult == 0:

print('{0}数据库{1}开始压缩...'.format(tip, dbname))

gzipcmd = 'gzip {TODAYBACKUPPATH}/{db}.sql'

os.system(gzipcmd)

print('{0}数据库{1}成功备份...'.format(tip, dbname))

else:

print('{0}数据库{1}备份失败!!!'.format(tip, dbname))

print ('备份执行完成,备份路径为:{0}'.format(NOWBACKUPPATH))

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多