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
  1. 运行以下命令下载ossutil。

    wget https://gosspublic.alicdn.com/ossutil/1.7.14/ossutil64
    

    注意 复制下载地址时会自动加上spm编码内容,使用wget命令下载时注意删除链接中?spm=xxxx的内容。

  2. 运行以下命令修改文件执行权限。

    chmod 755 ossutil64
    
  3. 使用交互式配置生成配置文件。

    1. 输入配置命令。

      ./ossutil64 config
      
    2. 根据提示设置配置文件路径。

      建议直接按回车使用默认配置文件的路径。

      请输入配置文件名,文件名可以带路径(默认为:/home/user/.ossutilconfig,回车将使用默认路径。
      如果用户设置为其它路径,在使用命令时需要将--config-file选项设置为该路径):
      

      ossutil默认使用/home/user/.ossutilconfig作为配置文件,若您设置了配置文件的路径,则每次使用命令时需增加**-c选项指定配置文件。例如配置文件保存为/home/config,使用ls**时,命令格式如下:

      ./ossutil64 ls oss://examplebucket -c /home/config
      
    3. 根据提示设置工具的语言。

      请输入语言CH或EN。工具使用的语言默认与操作系统保持一致。该配置项将在此次config命令设置成功后生效。

    4. 根据提示分别设置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。

    5. 运行以下命令,验证是否已成功安装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,可接受类似 5GiB8KB 的输入。如果你想使用 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上相关推荐

  1. SpringMVC框架——本地上传和OSS上传

    目录 1.本地上传 1.1.1上传的必要条件 1.1.2 文件上传 1.2.1 普通本地上传 1.2.2 使用ajax进行本地上传 2.OSS上传 2.1 普通方法 2.1.1 准备OSS的相关设置 ...

  2. 上传文件删除上传文件——前端layui

    一.添加页面 添加页面代码 <div class="layui-form-item-row" style="margin-top: 10px;">& ...

  3. 服务器护卫神怎么上传文件,护卫神异地备份系统怎么将数、据上传到服务器上?...

    护卫神异地备份系统怎么将数.据上传到服务器上? 发布时间:2017-09-11 14:08 来源:互联网 当前栏目:软件安装 护卫神异地备份系统可以对各类数据实时或定时上传到原创FTP服务器备份,也可 ...

  4. java 将本地图片批量上传到oss服务

    上段时间在后台搞了一个图片上传的功能,但是由于项目上传的图片量过大,如果用后台上传效率较慢,所以搞了一个程序直接从把本地的图片上传的oss. import com.alibaba.fastjson.J ...

  5. 文件上传--Smartupload上传组件【上】

    首先祝愿大家2013元宵节快乐! 图片等文件上传不同于单纯的数字,文件在计算机中以二进制的形式存在,文件的上传要用到Smartupload组件.我们一起学习一下如何利用Smartupload组件上传文 ...

  6. 图片上传之后清空_OSS文件上传及OSS与ODPS之间数据连通

    场景描述 有这样一种场景,用户在自建服务器上存有一定数量级的CSV格式业务数据,某一天用户了解到阿里云的OSS服务存储性价比高(嘿嘿,颜值高),于是想将CSV数据迁移到云上OSS中,并且未来还想对这些 ...

  7. java 图片上传_java web图片上传和文件上传实例

    本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...

  8. asp.net ftp上传文件到服务器,.net 文件上传到服务器上

    详解 Linux 下 SSH 远程文件传输命令 scp 3.将本地文件上传到服务器上 scp-P 2222/home/lnmp0.4.tar.gz root@www.vpser.net:/root/l ...

  9. ftp上传乱码_ftp上传与wordpres常规基本设置

    网站建立之初需要购买空间和域名,在这里,我是在阿里云上提前购买的虚拟主机和域名,然后将下载好的wordpress文件利用FTP软件把文件上传到空间上,ftp软件有 FileZilla.lashftp. ...

最新文章

  1. SpringBoot第九篇: springboot整合Redis
  2. 聚类算法(2):系统聚类/层次聚类算法
  3. Kettle使用_2变量替换之设置标量
  4. 基本权限管理框架,开通淘宝支付
  5. java 实验张智,JAVA实验指导
  6. C#3.0 自动属性——只能在简单属性上偷懒
  7. 平面设计师和ui设计师_游戏设计师的平面设计
  8. 数据挖掘10大算法详细介绍
  9. Spark 性能相关参数配置详解-shuffle篇
  10. “数学不好,干啥都不行!”高级开发:方向不对,努力也白费!
  11. 工具篇1-CMDER--windows下工具,模拟linux好用的工具
  12. jdk HashMap源码解读
  13. 遗传算法在组卷中的应用
  14. Selenium获取浏览器Network数据包
  15. 创新未来,走进元宇宙,创造不可思议的数字体验!
  16. 打开 CMD 的方式+常用的Dos命令
  17. 加载繁体字体时遇到的问题
  18. OSChina 周六乱弹 ——抗议破坏教学道具,致其严重变形!
  19. PAL和NTSC有什么区别
  20. D1-阿里音乐流行趋势预测竞赛数据清洗整合——纯python

热门文章

  1. 大学毕业,应该去大公司?还是小公司?
  2. fc重装机兵计算机密码,FC重装机兵秘籍大全。。。。
  3. 东莞1号线大朗站—湿地公园站右线盾构始发
  4. 微信小程序如何实现将数据导出生成excel
  5. 接口自动化之TestFixture测试夹具,或者测试固件
  6. ztree中获取某节点的所有叶子节点
  7. [css3]圆盘旋转动画
  8. Proe5.0 如何修补破面?
  9. 微信小程序基础知识 || 如何让微信开发者工具显示切后台按键
  10. js 是否注册 OCX