1 备份
1.1 安装coscli
# wget https://github.com/tencentyun/coscli/releases/download/v0.12.0-beta/coscli-linux
# mv coscli-linux /usr/bin/coscli
# chmod 755 /usr/bin/coscli
# coscli --version
如果github慢可以使用国内镜像:
wget https://cosbrowser.cloud.tencent.com/software/coscli/coscli-linux
1.2 准备cos存储桶和coscli账号
创建data存储桶,并且创建apps文件夹,apps下面再创建mysql文件夹。
在存储桶中,设置“基础配置/生命周期”中,设置备份过期时间。(这里设置,30天后,前缀为backup/的文件将会自动删除)
创建coscli子账号
运行coscli,首次运行coscli,根据提示填写相关信息,其中的session token不填。
上传
# coscli cp /tmp/a.txt cos://data-2023007/apps/mysql/a.txt
下载
# coscli cp cos://data-2023007/apps/mysql/a.txt /tmp/a.txt
1.3 创建mysqldump备份用户
这里内网用户才有导出权限
mysql> grant select,trigger,show view,lock tables,process,event,reload,replication client on *.* to 'dumper'@'10.0.%' IDENTIFIED BY 'm@xxxxxxx';
mysql> flush privileges;
1.4 备份脚本
vim mysql_backup.sh
#!/bin/bash
function _backup(){
local databaseName=$1
local nowDate=$2
local sqlName=$1.$2.sql
local tarGzName=$sqlName.tar.gz
cd /home/admin/backup
mysqldump -udumper -pxxxbxx -h 10.0.116.115 -P 3306 --databases $databaseName > $sqlName
tar -czf $tarGzName $sqlName
coscli cp $tarGzName cos://data-2022/apps/mysql/$databaseName/backup/$tarGzName
rm -f $tarGzName $sqlName
}
function run(){
_backup user `date '+%Y%m%d'`
_backup logs `date '+%Y%m%d'`
}
run
1.5 备份定时任务
chmod a+x mysql_backup.sh给脚本添加运行权限,运行crontab -e设置备份脚本每天运行一次
30 3 * * * sh /home/admin/backup/mysql_backup.sh >> /home/admin/backup/run.log 2>&1 &
2 从cos恢复
2.1 从cos下载文件
# coscli cp cos://data-202207/apps/mysql/user/backup/user.`date '+%Y%m%d'`.sql.tar.gz /tmp/user.`date '+%Y%m%d'`.sql.tar.gz
2.2 解压
# tar -zxvf user.20230115.sql.tar.gz
2.2 导入
将sql文件导入到数据库
# mysql -uroot -pxxxxxxh -h 127.0.0.1 -P 3306 < /home/admin/backup/user.20230115.sql
参考文档
1,《自动备份本地文件、数据库到COS中》:https://cloud.tencent.com/developer/article/1951657
2,《Linux 设置定时任务crontab来自动备份mysql数据到COS上》:https://blog.csdn.net/worldmakewayfordream/article/details/90209793
3,《COSCLI下载与安装配置》:https://cloud.tencent.com/document/product/436/63144