tidb-dumpling备份数据库并上传到oss上
dumpling备份数据库并上传到oss上
参考文档:
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview
一、介绍
通过数据导出工具 Dumpling,你可以把存储在 TiDB 或 MySQL 中的数据导出为 SQL 或 CSV 格式,用于逻辑全量备份。Dumpling 也支持将数据导出到 Amazon S3 中。
二、安装
你可以通过下列任意方式获取 Dumpling:
- TiUP 执行
tiup install dumpling
命令。获取后,使用tiup dumpling ...
命令运行 Dumpling。 - 下载包含 Dumpling 的 tidb-toolkit 安装包。
- https://docs.pingcap.com/zh/tidb/stable/download-ecosystem-tools
三、从 TiDB/MySQL 导出数据
1、备份用户需要的最小权限
- SELECT
- RELOAD
- LOCK TABLES
- REPLICATION CLIENT
- PROCESS
2、通过并发提高 Dumpling 的导出效率
默认情况下,导出的文件会存储到 ./export-<current local time>
目录下。常用选项如下:
-t
用于指定导出的线程数。增加线程数会增加 Dumpling 并发度提高导出速度,但也会加大数据库内存消耗,因此不宜设置过大。-r
选项用于指定单个文件的最大记录数,或者说,数据库中的行数。开启后 Dumpling 会开启表内并发,提高导出大表的速度。当上游为 TiDB 且版本为 v3.0 或更新版本时,设置-r
参数大于 0 表示使用 TiDB region 信息划分表内并发,具体取值不影响划分算法。对上游为 MySQL 且表的主键是 int 的场景,该参数也有表内并发效果。--compress gzip
选项可以用于压缩导出的数据。压缩可以显著降低导出数据的大小,同时如果存储的写入 I/O 带宽不足,可以使用该选项来加速导出。但该选项也有副作用,由于该选项会对每个文件单独压缩,因此会增加 CPU 消耗。
利用以上选项可以提高 Dumpling 的导出速度。
3、 Linux系统安装ossutil。
- 参考文档:https://help.aliyun.com/document_detail/120075.htm?spm=a2c4g.11186623.0.0.3bc021a1JRIE8S#concept-303829
运行以下命令下载ossutil。
wget https://gosspublic.alicdn.com/ossutil/1.7.14/ossutil64
注意 复制下载地址时会自动加上spm编码内容,使用wget命令下载时注意删除链接中
?spm=xxxx
的内容。运行以下命令修改文件执行权限。
chmod 755 ossutil64
使用交互式配置生成配置文件。
输入配置命令。
./ossutil64 config
根据提示设置配置文件路径。
建议直接按回车使用默认配置文件的路径。
请输入配置文件名,文件名可以带路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。 如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):
ossutil默认使用/home/user/.ossutilconfig作为配置文件,若您设置了配置文件的路径,则每次使用命令时需增加**-c选项指定配置文件。例如配置文件保存为/home/config,使用ls**时,命令格式如下:
./ossutil64 ls oss://examplebucket -c /home/config
根据提示设置工具的语言。
请输入语言CH或EN。工具使用的语言默认与操作系统保持一致。该配置项将在此次config命令设置成功后生效。
根据提示分别设置Endpoint、AccessKey ID、AccessKey Secret和STSToken参数。
参数说明如下:
参数 说明 endpoint 填写Bucket所在地域的Endpoint。关于各地域Endpoint的更多信息,请参见访问域名和数据中心。您也可以增加 http://
或https://
指定ossutil访问OSS使用的协议,默认使用HTTP协议。例如,使用HTTPS协议访问华东1(杭州)的Bucket,设置为https://oss-cn-hangzhou.aliyuncs.com
。accessKeyID 填写账号的AccessKey。使用阿里云账号或RAM用户访问时,AccessKey的获取方式,请参见创建AccessKey。使用STS临时授权账号访问时,AccessKey的获取方式,请参见使用STS临时访问凭证访问OSS。 accessKeySecret stsToken 使用STS临时授权账号访问OSS时需要配置该项,否则置空即可。关于stsToken的生成方式,请参见临时访问凭证。 说明 关于配置文件的更多信息,请参见config。
运行以下命令,验证是否已成功安装ossutil。
./ossutil64
如果屏幕中输出ossutil所有支持的命令,表明已成功安装ossutil。
4、导出脚本
backup-mysql-to-oss.sh
#!/bin/bashdb_host=IP
db_port=3306
db_user=root
db_password='Pass@w0rd'
BACKUPFILE_PATH=/data/selfbuit-tools-mysql-db-yearning-jumpserver-backup
Ding_Webhook_Token='**dingding_webhook**'
# 要导出的库名以逗号分割
databases=dbname1,dbname2DATE=$(date +"%F-%H%M")mkdir -p $BACKUPFILE_PATH/$DATE/databases-sql
echo "$(date +"%F %H:%M:%S") 1. 开始进行备份: $databases"
dumpling \-c gzip \-h $source_db_host \-P $source_db_port \-u $source_db_user \-p $source_db_password \-B $databases \--filter "*.*" \--filetype sql \--threads 4 \-o $BACKUPFILE_PATH/$DATE/databases-sql \-F 256MiB \--logfile $BACKUPFILE_PATH/$DATE/export-task.log >$BACKUPFILE_PATH/$DATE/dumpling-nohupout.log 2>&1if [ $? -eq 0 ];thenecho "$(date +"%F %H:%M:%S") 2. 备份完成"echo "$(date +"%F %H:%M:%S") 已备份Databases: $databases" > $BACKUPFILE_PATH/$DATE/backup-metarm -f $BACKUPFILE_PATH/$DATE/dumpling-nohupout.log $BACKUPFILE_PATH/$DATE/export-task.logcd $BACKUPFILE_PATH/tar -zcf backup-$DATE.tar.gz $DATEecho "$(date +"%F %H:%M:%S") 3. 备份压缩已完成"echo "$(date +"%F %H:%M:%S") 4. 正在上传备份压缩文件至OSS"ossutil64 cp $BACKUPFILE_PATH/backup-$DATE.tar.gz oss://BucketName/db-backup/backup-$DATE.tar.gz 2>&1 > /dev/nullecho "$(date +"%F %H:%M:%S") 5. 已完成上传备份压缩文件至OSS"curl -s https://oapi.dingtalk.com/robot/send?access_token="$Ding_Webhook_Token" \-H 'Content-Type: application/json' \-d '{"msgtype": "markdown","markdown": {"title": "数据库备份","text": "'$DATE'\n MySQL已备份以下库并上传至OSS:\n> '$databases'"},"at": {"isAtAll": true}}' 2>&1 > /dev/nullecho "$(date +"%F %H:%M:%S") 6. 已发送钉钉通知"#rm -rf $BACKUPFILE_PATH/$DATE $BACKUPFILE_PATH/selfbuit-mysql-backup-$DATE.tar.gzecho "$(date +"%F %H:%M:%S") 7. 已删除临时存储备份"
fi
5、参数介绍
-h
、-P
、-u
分别代表地址、端口、用户。如果需要密码验证,可以使用-p $YOUR_SECRET_PASSWORD
将密码传给 Dumpling。-o
用于选择存储导出文件的目录,支持本地文件路径或外部存储 URL 格式。-t
用于指定导出的线程数。增加线程数会增加 Dumpling 并发度提高导出速度,但也会加大数据库内存消耗,因此不宜设置过大。一般不超过 64。-r
用于指定单个文件的最大行数,指定该参数后 Dumpling 会开启表内并发加速导出,同时减少内存使用。当上游为 TiDB 且版本为 v3.0 或更新版本时,设置-r
参数大于 0 表示使用 TiDB region 信息划分表内并发,具体取值不影响划分算法。对上游为 MySQL 且表的主键是 int 的场景,该参数也有表内并发效果。-F
选项用于指定单个文件的最大大小,单位为MiB
,可接受类似5GiB
或8KB
的输入。如果你想使用 TiDB Lightning 将该文件加载到 TiDB 实例中,建议将-F
选项的值保持在 256 MiB 或以下。
如果导出的单表大小超过 10 GB,强烈建议使用 -r
和 -F
参数。
5、主要选项表
主要选项 | 用途 | 默认值 |
---|---|---|
-V 或 --version | 输出 Dumpling 版本并直接退出 | |
-B 或 --database | 导出指定数据库 | |
-T 或 --tables-list | 导出指定数据表 | |
-f 或 --filter | 导出能匹配模式的表,语法可参考 table-filter |
*.* (导出所有库表)
|
–case-sensitive | table-filter 是否大小写敏感 | false,大小写不敏感 |
-h 或 --host | 连接的数据库主机的地址 | “127.0.0.1” |
-t 或 --threads | 备份并发线程数 | 4 |
-r 或 --rows | 将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。 | |
-L 或 --logfile | 日志输出地址,为空时会输出到控制台 | “” |
–loglevel | 日志级别 {debug,info,warn,error,dpanic,panic,fatal} | “info” |
–logfmt | 日志输出格式 {text,json} | “text” |
-d 或 --no-data | 不导出数据,适用于只导出 schema 场景 | |
–no-header | 导出 csv 格式的 table 数据,不生成 header | |
-W 或 --no-views | 不导出 view | true |
-m 或 --no-schemas | 不导出 schema,只导出数据 | |
-s 或–statement-size |
控制 INSERT SQL 语句的大小,单位 bytes
|
|
-F 或 --filesize |
将 table 数据划分出来的文件大小,需指明单位(如 128B , 64KiB , 32MiB , 1.5GiB )
|
|
–filetype | 导出文件类型(csv/sql) | “sql” |
-o 或 --output | 导出文件路径 | “./export-${time}” |
-S 或 --sql | 根据指定的 sql 导出数据,该选项不支持并发导出 | |
–consistency |
flush: dump 前用 FTWRL snapshot: 通过 TSO 来指定 dump 某个快照时间点的 TiDB 数据 lock: 对需要 dump 的所有表执行 lock tables read 命令 none: 不加锁 dump,无法保证一致性 auto: MySQL 默认用 flush, TiDB 默认用 snapshot
|
“auto” |
–snapshot | snapshot tso,只在 consistency=snapshot 下生效 | |
–where | 对备份的数据表通过 where 条件指定范围 | |
-p 或 --password | 连接的数据库主机的密码 | |
-P 或 --port | 连接的数据库主机的端口 | 4000 |
-u 或 --user | 连接的数据库主机的用户名 | “root” |
–dump-empty-database | 导出空数据库的建库语句 | true |
–ca | 用于 TLS 连接的 certificate authority 文件的地址 | |
–cert | 用于 TLS 连接的 client certificate 文件的地址 | |
–key | 用于 TLS 连接的 client private key 文件的地址 | |
–csv-delimiter | csv 文件中字符类型变量的定界符 | ‘"’ |
–csv-separator | csv 文件中各值的分隔符 | ‘,’ |
–csv-null-value | csv 文件空值的表示 | “\N” |
–escape-backslash |
使用反斜杠 (\ ) 来转义导出文件中的特殊字符
|
true |
–output-filename-template | 以golang template 格式表示的数据文件名格式 支持 DB Table、Index 三个参数 分别表示数据文件的库名、表名、分块 ID | {{.DB}}.{{.Table}}.{{.Index}} |
–status-addr | Dumpling 的服务地址,包含了 Prometheus 拉取 metrics 信息及 pprof 调试的地址 | “:8281” |
–tidb-mem-quota-query | 单条 dumpling 命令导出 SQL 语句的内存限制,单位为 byte,默认为 32 GB | 34359738368 |
tidb-dumpling备份数据库并上传到oss上相关推荐
- SpringMVC框架——本地上传和OSS上传
目录 1.本地上传 1.1.1上传的必要条件 1.1.2 文件上传 1.2.1 普通本地上传 1.2.2 使用ajax进行本地上传 2.OSS上传 2.1 普通方法 2.1.1 准备OSS的相关设置 ...
- 上传文件删除上传文件——前端layui
一.添加页面 添加页面代码 <div class="layui-form-item-row" style="margin-top: 10px;">& ...
- 服务器护卫神怎么上传文件,护卫神异地备份系统怎么将数、据上传到服务器上?...
护卫神异地备份系统怎么将数.据上传到服务器上? 发布时间:2017-09-11 14:08 来源:互联网 当前栏目:软件安装 护卫神异地备份系统可以对各类数据实时或定时上传到原创FTP服务器备份,也可 ...
- java 将本地图片批量上传到oss服务
上段时间在后台搞了一个图片上传的功能,但是由于项目上传的图片量过大,如果用后台上传效率较慢,所以搞了一个程序直接从把本地的图片上传的oss. import com.alibaba.fastjson.J ...
- 文件上传--Smartupload上传组件【上】
首先祝愿大家2013元宵节快乐! 图片等文件上传不同于单纯的数字,文件在计算机中以二进制的形式存在,文件的上传要用到Smartupload组件.我们一起学习一下如何利用Smartupload组件上传文 ...
- 图片上传之后清空_OSS文件上传及OSS与ODPS之间数据连通
场景描述 有这样一种场景,用户在自建服务器上存有一定数量级的CSV格式业务数据,某一天用户了解到阿里云的OSS服务存储性价比高(嘿嘿,颜值高),于是想将CSV数据迁移到云上OSS中,并且未来还想对这些 ...
- java 图片上传_java web图片上传和文件上传实例
本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...
- asp.net ftp上传文件到服务器,.net 文件上传到服务器上
详解 Linux 下 SSH 远程文件传输命令 scp 3.将本地文件上传到服务器上 scp-P 2222/home/lnmp0.4.tar.gz root@www.vpser.net:/root/l ...
- ftp上传乱码_ftp上传与wordpres常规基本设置
网站建立之初需要购买空间和域名,在这里,我是在阿里云上提前购买的虚拟主机和域名,然后将下载好的wordpress文件利用FTP软件把文件上传到空间上,ftp软件有 FileZilla.lashftp. ...
最新文章
- SpringBoot第九篇: springboot整合Redis
- 聚类算法(2):系统聚类/层次聚类算法
- Kettle使用_2变量替换之设置标量
- 基本权限管理框架,开通淘宝支付
- java 实验张智,JAVA实验指导
- C#3.0 自动属性——只能在简单属性上偷懒
- 平面设计师和ui设计师_游戏设计师的平面设计
- 数据挖掘10大算法详细介绍
- Spark 性能相关参数配置详解-shuffle篇
- “数学不好,干啥都不行!”高级开发:方向不对,努力也白费!
- 工具篇1-CMDER--windows下工具,模拟linux好用的工具
- jdk HashMap源码解读
- 遗传算法在组卷中的应用
- Selenium获取浏览器Network数据包
- 创新未来,走进元宇宙,创造不可思议的数字体验!
- 打开 CMD 的方式+常用的Dos命令
- 加载繁体字体时遇到的问题
- OSChina 周六乱弹 ——抗议破坏教学道具,致其严重变形!
- PAL和NTSC有什么区别
- D1-阿里音乐流行趋势预测竞赛数据清洗整合——纯python