mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
1. 環(huán)境配置
要將本地文件上傳到阿里云oss中, 必須使用阿里云提供的工具?ossutil, 有32位,也有64位的, Linux和Windows都有.具體可以到阿里云官網(wǎng)下載
本文以Linux系統(tǒng)為例:
下載工具:
wget http://gosspublic.alicdn.com/ossutil/1.6.7/ossutil64
修改文件執(zhí)行權(quán)限:
chmod 755 ossutil64
使用交互式配置生成配置文件:
./ossutil64 config
該命令將創(chuàng)建一個(gè)配置文件,在其中存儲(chǔ)配置信息。
請(qǐng)輸入配置文件路徑(默認(rèn)為:/home/user/.ossutilconfig,回車將使用默認(rèn)路徑。如果用戶設(shè)置為其它路徑,在使用命令時(shí)需要將--config-file選項(xiàng)設(shè)置為該路徑):
未輸入配置文件路徑,將使用默認(rèn)配置文件:/home/user/.ossutilconfig。
對(duì)于下述配置,回車將跳過相關(guān)配置項(xiàng)的設(shè)置,配置項(xiàng)的具體含義,請(qǐng)使用"help config"命令查看。
請(qǐng)輸入endpoint:http://oss-cn-hangzhou.aliyuncs.com
請(qǐng)輸入accessKeyID:yourAccessKeyID
請(qǐng)輸入accessKeySecret:yourAccessKeySecret
請(qǐng)輸入stsToken:
endpoint:填寫B(tài)ucket所在地域的域名信息,可參考訪問域名和數(shù)據(jù)中心。
accessKeyID:查看方式請(qǐng)參考創(chuàng)建AccessKey。
accessKeySecret:查看方式請(qǐng)參考創(chuàng)建AccessKey。
stsToken:非必配項(xiàng),若采用STS臨時(shí)授權(quán)方式訪問OSS需要配置該項(xiàng),否則置空即可。stsToken生成方式參考臨時(shí)訪問憑證。
說明 更詳細(xì)的配置文件說明可參考 https://helpcdn.aliyun.com/document_detail/120072.html?spm=a2c4g.11186623.2.21.409c448ahCrIHZ#concept-303826 。
配置完成后,可以用如下命令進(jìn)行測(cè)試:
ossutil64 cp /etc/fatab oss://aliyunoss-backup/DB_DATA/
# aliyunoss-backup 為我的oss Bucket名稱.DB_DATA為數(shù)據(jù)庫備份目錄.
如果你在第一步輸入了 config file path, 執(zhí)行上傳命令的時(shí)候必須要加上指定的 config file path, 否則到默認(rèn)的地方/root/.ossutilconfig是找不到的.如:
ossutil64 cp/etc/fatab oss://aliyunoss-backup/DB_DATA/ --config-file=/path to config file/filename
2. 示例
說明, 如下腳本是本人用的備份MySQL數(shù)據(jù)庫并上傳到阿里云oss存儲(chǔ).
1 #!/bin/bash2 # mysql_backup.sh: backup mysql databases and keep newest 7days backup.3 #4 # ${db_user} is mysql username5 # ${db_password} is mysql password6 # ${db_host} is mysql host7 # —————————–8 #/root/mysql_backup.sh
9 # everyday 3:00AM execute database backup10 # 0 3 * * * /root/mysql_backup_to_oss.sh
11 #/etc/cron.daily12
13 # the directory for story your backup file. #14 backup_dir="/opt/backup/mysql/"
15
16 # 要備份的數(shù)據(jù)庫名 #17 all_db="mydb1 mydb2 mydb3"
18
19 # 要保留的備份天數(shù) #20 backup_day=7
21
22 #數(shù)據(jù)庫備份日志文件存儲(chǔ)的路徑23 logfile="/var/log/mysql_backup.log"
24
25 # Aliyun OSS Bucket Name.26 bucket_name=aliyunoss-backup27
28 # local IP address29 local_ip=`hostname -i`30
31 # date format for backup file (dd-mm-yyyy) #32 time="$(date +"%Y-%m-%d")"
33
34 # mysql, ${mysqldump} and some other bin's path #
35 mysql="/usr/bin/mysql"
36 mysqldump="/usr/bin/mysqldump"
37
38 # the directory forstory the newest backup #39 test ! -d ${backup_dir} && mkdir -p ${backup_dir}40
41 #備份數(shù)據(jù)庫函數(shù)#42 mysql_backup()43 {44 # 取所有的數(shù)據(jù)庫名 #45 for db in${all_db}46 do
47 backname=${db}.${time}48 dumpfile=${backup_dir}${backname}49
50 #將備份的時(shí)間、數(shù)據(jù)庫名存入日志51 echo "------"$(date +'%Y-%m-%d %T')"Beginning database"${db}"backup--------" >>${logfile}52 ${mysqldump} --login-path=my3306 ${db} > ${dumpfile}.sql 2>>${logfile} 2>&1
53
54 #開始將壓縮數(shù)據(jù)日志寫入log55 echo $(date +'%Y-%m-%d %T')"Beginning zip ${dumpfile}.sql" >>${logfile}56
57 #將備份數(shù)據(jù)庫文件庫壓成ZIP文件,并刪除先前的SQL文件. #58 tar -czvf ${backname}.tar.gz ${backname}.sql 2>&1 && rm ${dumpfile}.sql 2>>${logfile} 2>&1
59
60 #將壓縮后的文件名存入日志。61 echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}62 echo -e "-------"$(date +'%Y-%m-%d %T')"Ending database"${db}"backup-------\n" >>${logfile}63 done
64 }65
66 delete_old_backup()67 {68 echo "delete backup file:" >>${logfile}69 # 刪除舊的備份 查找出當(dāng)前目錄下七天前生成的文件,并將之刪除70 find ${backup_dir} -type f -mtime +${backup_day} | tee delete_list.log | xargs rm -rf71 cat delete_list.log >>${logfile}72 }73
74 upload_backups_toAliyunOSS()75 {76 # upload backfile to Aliyun OSS bucket77 for db in${all_db}78 do
79 backname=${db}.${time}80 echo "upload ${backname}.tar.gz to AliyunOSS begin at"$(date +'%Y-%m-%d %T') >>${logfile}81 ### Upload to AliyunOSS by storage Monthly ###82 ossutil64 cp ${backname}.tar.gz oss://${bucket_name}/DB_DATA/$(date +'%Y%m')/${local_ip}/ -f
83 echo "upload ${backname}.tar.gz to AliyunOSS done at"$(date +'%Y-%m-%d %T') >>${logfile}84 done
85 }86
87 #進(jìn)入數(shù)據(jù)庫備份文件目錄88 cd ${backup_dir}89
90 mysql_backup91 delete_old_backup92 upload_backups_toAliyunOSS93
94 echo -e "========== mysql backup && upload_to_AliyunOSS done at"$(date +'%Y-%m-%d %T')"==========\n\n">>${logfile}95 #cat ${logfile}
MySQL備份腳本(壓縮并上傳到阿里云OSS)
OSS中存儲(chǔ)格式:
備份日志:
3. MySQL認(rèn)證登錄配置
在上述腳本中使用到了MySQL認(rèn)證登錄, 使用mysql_config_editor工具提前配置好MySQL的認(rèn)證登錄.
mysql_config_editor是在MySQL-5.6以后提供的,?這個(gè)工具可以認(rèn)證信息加密存儲(chǔ)在.mylogin.cnf中,通常這個(gè)文件在Linux用戶的家目錄,當(dāng)然password信息是加密的,無需擔(dān)心泄露問題, 當(dāng)然也不需要每次登錄都輸入密碼, 更不用講密碼寫入腳本或配置文件中, 登錄MySQL只需要使用認(rèn)證信息登錄即可. 在一定程度上保障了數(shù)據(jù)庫的安全.
mysql_config_editor使用方法:
mysql_config_editor set --login-path=[認(rèn)證信息名] user=[用戶名] --password
#認(rèn)證信息名是該條認(rèn)證信息的名稱,后續(xù)登錄時(shí)直接使用認(rèn)證信息名即可登錄,無需再次輸入密碼。
#這里需要注意的是密碼里面不能含有特殊字符,建議創(chuàng)建一個(gè)新的用戶來進(jìn)行備份操作
mysql --login-path=[認(rèn)證信息名]
#直接使用認(rèn)證信息名來登錄
如:
mysql_config_editor set --login-path=my3306 --user=root --socket=/opt/mysql/mysql.sock --password
輸入密碼后,就建立了認(rèn)證信息文件my3306, 下次登錄MySQL數(shù)據(jù)庫, 就不用輸入密碼了,使用如下命令即可免密登錄mysql:
mysql --login-path=my3306
MySQL備份:
mysqldump --login-path=my3306 py3db > py3db.sql
無需輸入MySQL密碼, 即可執(zhí)行命令.
總結(jié)
以上是生活随笔為你收集整理的mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙芯中科办公平台100%国产化!冲向最后
- 下一篇: c远程连接mysql数据库_MySQL数