在阿里云oss对象存储上备份数据库

由于自建非云数据库是没用自动备份功能,所以我们需要自行备份。如果备份数据大,而且每天都需要备份的话,采用手动操作存储的方式十分繁琐,而且服务器存储空间容易不足。现采用价格低廉的阿里云OSS对象存储当做存放地点,并通过python脚本实现每天的备份,达到自动化运维的效果。

  1.oss挂载到ecs服务器

(1)创建oss,定义bucket名称,创建好后RAM设置授权读写权限,RAM有access-key-id。

(2)在服务器上安装ossfs

a.linux 7版本 安装:

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm 
yum localinstall your_ossfs_package

b.配置账号信息:
将Bucket名称以及具有此Bucket访问权限的AccessKeyId/AccessKeySecret信息存放在/etc/passwd-ossfs文件中。注意这个文件的权限必须正确设置,建议设为640。

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

c.将Bucket挂载到指定目录

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

挂载示例:将杭州地域名称为bucket-test的Bucket挂载到/tmp/ossfs目录下。

echo bucket-test:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /ossfs
ossfs bucket-test /ossfs -ourl=http://oss-cn-hangzhou.aliyuncs.com

d.查看,成功挂载后可以df -h 查看到。

  2.python编写脚本备份

备份到oss挂载的目录即相当于备份到oss上。

#!/usr/bin env python3
#coding=utf-8
import os
import time
import datetime

#定义服务器,用户名、密码、数据库名称(多个库分行放置)和备份的路径
DB_HOST = '47.xx.xx.xx'
DB_USER = 'root'
DB_USER_PASSWD = 'xxxxxxxxx'
DB_NAME = '/ossfs/ningmeng/dbnames.txt'
BACKUP_PATH = '/ossfs/ningmeng/'
DATETIME = time.strftime('%Y%m%d-%H%M%S')
TODAYBACKUPPATH = BACKUP_PATH + DATETIME
print("正在创建备份文件夹!")

#创建备份文件夹
if not os.path.exists(TODAYBACKUPPATH):
       os.makedirs(TODAYBACKUPPATH)

print("正在检查数据库名称文件")


#定义执行备份脚本,读取文件中的数据库名称,注意按行读写,不校验是否存在该库
def run_backup():
        in_file = open(DB_NAME,"r")
        for dbname in in_file.readlines():
                dbname = dbname.strip()
                print("正在启动备份数据库 %s" %dbname)
                dumpcmd = "mysqldump -u" +DB_USER + " -p"+DB_USER_PASSWD+" " +dbname+" > "+TODAYBACKUPPATH +"/"+dbname+".sql"
                print(dumpcmd)
                os.system(dumpcmd)
        file1.close()

#执行压缩的函数
def run_tar():
        compress_file = TODAYBACKUPPATH + ".tar.gz"
        compress_cmd = "tar -czvf " +compress_file+" "+DATETIME
        os.chdir(BACKUP_PATH)
        os.system("pwd")
        os.system(compress_cmd)
        print("compress complete!")
        #print("压缩完成!")
        #删除备份文件夹
        remove_cmd = "rm -rf "+TODAYBACKUPPATH
        os.system(remove_cmd)

#备份数据库文件存在就执行备份和压缩,否则退出
if os.path.exists(DB_NAME):
        file1 = open(DB_NAME)
        print("开始备份在{}路径下的数据库".format(DB_NAME))
        run_backup()
        run_tar()
        print("backup success!")
        #print("备份成功")
else:
        print("找不到数据库文件..")
        exit()

备份完成后显示backup success!并查看路径为有tar.gz的包则表示备份完成。

届时打开对象储存-bucket列表可以查看已在列表上。

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇