mysql 5.7的备份与恢复&python脚本自动备份mysql

一.mysqldump备份与恢复数据库文件
1.1 一次备份所有库操作方法
所有库的备份:
mysqldump -u root -p -A > /root/test20211011-6.sql

所有库的恢复:
 /usr/bin/mysql -u root -p < /root/test20211011-6.sql
-A参数:--all-databases表示所有库
xxx.sql:数据库备份文件
全库备份图片:
全库 恢复图片:
1.2 单独备份与恢复一个库
单独一个库的备份:
mysqldump -u root -p testdb > /root/test20211011-8.sql 
单独一个库的恢复:
需要先创建需要恢复的库
mysql -u root -p
create database  testdb character set utf8;
exit
/usr/bin/mysql -u root -p testdb < /root/test20211011-8.sql
testdb:数据库名称
xxx.sql:数据库备份文件
character set utf8:让数据库支持中文
备份服务器:
恢复服务器现在没有testdb的库:
二.脚本自动备份:
2.1 添加配置文件内容如下

否则会有如下报错mysqldump: [Warning] Using a password on the command line interface can be insecure.

原因:出于安全考虑mysql不让你把密码写在命令行里面,防止暴露

2.2 自动备份的python脚本

mkdir /mysql-backup创建一个自动备份的文件夹

将脚本放置到该文件夹,脚本如下

scp脚本主要是将内容防止到我的备份服务器,如果不需要,最后一行修改为 #scp_put()

添加执行权限
chmod +x /mysql-bak/mysql_dump.py

添加crontab 

0 0 1 * * /usr/bin/python3.6 /mysql-bak/mysql_dump.py >> /mysql-bak/report.log 2>&1

#coding:utf-8
'''
运行环境
python3
centos 7
'''
import os
import time

#下载数据库
time_now = time.strftime("%Y-%m-%d", time.localtime())
#------------手工修改参数---开始-----------------
#自动生成一个日期命名的.sql的文件
backup_file = '/mysql-bakcup/' + time_now +'.sql'
#远程备份文件夹位置,可以提前配置免密登录
remote_backup_file_dir = 'root@10.225.254.179:/hubin-backup-20201022/mysql_bakcup/'
#-----------手工修改参数---结束----------------------
def mysql_dump():
    if os.path.exists(backup_file):
        os.remove(backup_file)
    cmd = "mysqldump -A > %s" %(backup_file)
    result = os.system(cmd)
    if result == 0: #os.system返回值为0的表示命令执行成功
        print ('mysql_dump success')
    else:
        print ('mysql_dump fail')
        os._exit(0)
    return


def scp_put():
    #os.mkdir(backup_dir)
    # cmd = "/usr/bin/scp -l 100000 -r " + scp_server_dir + backup_dir
    #-l 速率,单位Kbps,远端文件夹拉到根目录
    cmd = "/usr/bin/scp -l 50000 %s %s"%(backup_file,remote_backup_file_dir)
    result = os.system(cmd)
    if result == 0: #上传成功会返回100%字段
        print ("scp update file sucess")
    else:
        print ('scp update file fail')
        os._exit(0)
    return

if __name__ == '__main__':
    print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
    mysql_dump()
    scp_put()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值