当前位置:网站首页>TiDB 操作实践 -- 备份与恢复
TiDB 操作实践 -- 备份与恢复
2022-07-29 12:03:00 【InfoQ】
前言
操作
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.8.0/tiup-cluster display tidb-test
Cluster type: tidb
Cluster name: tidb-test
Cluster version: v5.1.0
Deploy user: tidb
SSH type: builtin
Dashboard URL: http://172.24.74.69:2379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
172.24.74.68:9093 alertmanager 172.24.74.68 9093/9094 linux/x86_64 Up /tidb/tidb-data/alertmanager-9093 /tidb/tidb-deploy/alertmanager-9093
172.24.74.68:3000 grafana 172.24.74.68 3000 linux/x86_64 Up - /tidb/tidb-deploy/grafana-3000
172.24.74.67:2379 pd 172.24.74.67 2379/2380 linux/x86_64 Up|L /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.68:2379 pd 172.24.74.68 2379/2380 linux/x86_64 Up /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.69:2379 pd 172.24.74.69 2379/2380 linux/x86_64 Up|UI /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.67:9090 prometheus 172.24.74.67 9090 linux/x86_64 Up /tidb/tidb-data/prometheus-9090 /tidb/tidb-deploy/prometheus-9090
172.24.74.67:4000 tidb 172.24.74.67 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.68:4000 tidb 172.24.74.68 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.69:4000 tidb 172.24.74.69 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.67:20160 tikv 172.24.74.67 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.68:20160 tikv 172.24.74.68 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.69:20160 tikv 172.24.74.69 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
Total nodes: 12
部署工具包
下载工具包
wget https://download.pingcap.org/tidb-toolkit-v5.0.1-linux-amd64.tar.gz
解压工具包,得到工具包目录
tar xvf tidb-toolkit-v5.0.1-linux-amd64.tar.gz
将工具包目录配置到环境变量
vi ~/.bash_profile
export PATH=/home/tidb/tidb-toolkit-v5.0.1-linux-amd64/bin:$PATH
source ~/.bash_profile
BR
备份
全库备份
mkdir /tidb/backup/20211214
chmod 755 /tidb/backup/20211214
br backup full --pd "172.24.74.67:2379" --storage "local:///tidb/backup/20211214" --ratelimit 120 --log-file backupfull.log
参数解释:
--pd : 任意pd节点id
--storage :tikv节点的备份目录,需保证目录存在且为空 ,否则会报错
--ratelimit : 带宽限速,120即为120M/S
--log-file : 备份日志存放文件
备份成功会得到`Full backup success summary`字样的提示
单库备份
mkdir /tidb/backup/20211214-yyh
chmod 755 /tidb/backup/20211214-yyh
br backup db --pd "172.24.74.67:2379" --db yyh --storage "local:///tidb/backup/20211214-yyh" --ratelimit 120 --log-file backupdb.log
参数解释:
--db :备份的库
备份成功会得到`Full backup success summary`字样的提示
单表备份
mkdir /tidb/backup/20211214-test2
chmod 755 /tidb/backup/20211214-test2
br backup table --pd "172.24.74.67:2379" --db yhh --table test1 --storage "local:///tidb/backup/20211214-test2" --ratelimit 120 --log-file backuptable.log
参数解释:
--table :备份的表
备份成功会得到`Full backup success summary`字样的提示
恢复
cd /tidb/backup/20211214
scp 172.24.74.68:/tidb/backup/20211214/* .
scp 172.24.74.69:/tidb/backup/20211214/* .
scp * 172.24.74.68:/tidb/backup/20211214/.
scp * 172.24.74.69:/tidb/backup/20211214/.
全库恢复
br restore full --pd "172.24.74.67:2379" --storage "local:///tidb/backup/20211214" --log-file restoredb.log
Full backup success summary单库恢复
br restore db --pd "172.24.74.67:2379" --db yyh --storage "local:///tidb/backup/20211214-yyh" --log-file restoredb.log
Full backup success summary单表恢复
br restore table --pd "172.24.74.67:2379" --db yhh --table test2 --storage "local:///tidb/backup/20211214-test2" --log-file restoredb.log
Full backup success summary指定对象恢复
例1: 恢复yyh库中的所有表
br restore full --pd "172.24.74.67:2379" --filter yyh.* --storage "local:///tidb/backup/20211214" --log-file restoredb.log
例2: 恢复所有y开头的库中的test1表
br restore full --pd "172.24.74.67:2379" --filter y*.test1 --storage "local:///tidb/backup/20211214" --log-file restoredb.log
Full backup success summaryDumpling & Lightning
Dumpling
全量导出
dumpling \
-u root \
-p root123\
-P 4000 \
-h 172.24.74.67 \
--filetype sql \
-t 8 \
-o /tidb/backup/dumpbak \
-r 200000 \
-F 256MiB
-h-P-u-p-p-o-t-r-FMiB5GiB8KB-F--filetype带 sql 条件导出
dumpling \
-u root \
-p root123\
-P 4000 \
-h 172.24.74.67 \
--filetype csv \
-t 8 \
-o /tidb/backup/dumpbak \
-r 200000 \
-F 256MiB \
--sql 'select * from yyh.test1 where id < 1000'
--sql带筛选条件导出
- 使用
--where选项筛选数据
--where--sql- 使用
--filter选项筛选数据
--filter--where- 使用
-B或-T选项筛选数据
-B-Byy*-T-T-B-T--filter--where导出历史数据快照
dumpling \
-u root \
-p root123\
-P 4000 \
-h 172.24.74.67 \
--filetype sql \
-t 8 \
-o /tidb/backup/dumpbak \
-r 200000 \
-F 256MiB \
--snapshot "2021-12-15 19:03:45"
--snapshotSHOW MASTER STATUSPositionLightning
操作步骤
backend[lightning]
# 转换数据并发数,默认为逻辑cpu数量,独立部署可不用设置本参数,混合部署建议设置为逻辑cpu的75%
# region-concurrency =
# 日志
level = "info"
file = "tidb-lightning.log"
[tikv-importer]
# 选择使用的 local 后端模式 ,需根据需求调整模式
# 也可在命令行用参数方式指定,如:tidb-lightning -d /tmp/data --backend tidb
backend = "local"
# 设置排序的键值对的临时存放地址,目标路径需要是一个有权限的空目录
sorted-kv-dir = "/tmp/sorted-kv-dir"
[checkpoint]
# 启用断点续传,导入时会记录当前进度
enable = true
# 断点存储方式,可选本地文件(file)或者mysql服务器(mysql),这里以本地文件作为参数
#
driver = "file"
# 断点的存放位置
#
# 若 driver = "file",此参数为断点信息存放的文件路径。
# 如果不设置该参数则默认为 `/tmp/CHECKPOINT_SCHEMA.pb`
#
# 若 driver = "mysql",此参数为数据库连接参数 (DSN),格式为“用户:密码@tcp(地址:端口)/”。
# 默认会重用 [tidb] 设置目标数据库来存储断点。
# 为避免加重目标集群的压力,建议另外使用一个兼容 MySQL 的数据库服务器。
dsn = "/tmp/tidb_lightning_checkpoint.pb"
[mydumper]
# 源数据目录。
data-source-dir = "/tidb/backup/dumpbak"
# 配置通配符规则,默认规则会过滤 mysql、sys、INFORMATION_SCHEMA、PERFORMANCE_SCHEMA、METRICS_SCHEMA、INSPECTION_SCHEMA 系统数据库下的所有表
# 也可通过命令行参数方式指定,如:tidb-lightning -f 'yyh.*' -f 'test*.test1' -d /tmp/data --backend tidb
filter = ['yyh.*','test*.test1']
[tidb]
# 目标集群的信息
host = "172.24.74.67"
port = 4000
user = "root"
password = "root123"
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# 集群 pd 的地址
pd-addr = "172.24.74.67:2379"
nohup tidb-lightning -config tidb-lightning.toml > nohup.out &
tidb lightning exittidb-lightning-ctl --switch-mode=normal
断点续传的控制
tidb-lightningtidb-lightning-ctl--checkpoint-error-destroy
tidb-lightning-ctl --checkpoint-error-destroy='`schema`.`table`'
`- 如果导入
`schema`.`table`这个表曾经出错,这条命令会:
- 从目标数据库移除 (DROP) 这个表,清除已导入的数据。
- 将断点重设到“未开始”的状态。
- 如果
`schema`.`table`没有出错,则无操作。
tidb-lightning-ctl --checkpoint-error-destroy=all
--checkpoint-error-ignore
tidb-lightning-ctl --checkpoint-error-ignore='`schema`.`table`' && tidb-lightning-ctl --checkpoint-error-ignore=all
`schema`.`table`--checkpoint-remove
tidb-lightning-ctl --checkpoint-remove='`schema`.`table`' && tidb-lightning-ctl --checkpoint-remove=all
边栏推荐
- mapbox 地图 生成矢量数据圆
- WordPress 重置密码
- MyCat中间件高可用、读写分离、分片、主从切换、ER分片
- SQL clock 】 【 daily DAY 21 丨 report the state of the system date of continuous difficulty difficult 】 【
- 考完PMP后有什么益处
- 【每日SQL打卡】DAY 22丨页面推荐【难度中等】
- 【每日SQL打卡】DAY 25丨不同性别每日分数总计【难度中等】
- SQL clock in daily DAY 23 丨 】 the number of students have different subjects to test difficulty simple 】 【
- 测试环境要多少,从现实需求说起
- 企业微信客户朋友圈一天可以发多少条?都有哪些限制?如何突破朋友圈可展示人数限制?
猜你喜欢

网络层和传输层限制

CSDN TOP1 "a virgo program ape" how to become a blogger, millions of fans writing

金仓数据库KingbaseES客户端编程接口指南-JDBC(2. 概述)

MarkDown高阶语法手册

PHP 基础知识
Based article 】 【 learn with Rust | Rust function and process control, rounding

企业微信客户朋友圈一天可以发多少条?都有哪些限制?如何突破朋友圈可展示人数限制?

峰米V10、极米Rs Pro2及当贝X3 Pro究竟孰优孰劣?

XSS漏洞分析

365天挑战LeetCode1000题——Day 043 有效的正方形 数学
随机推荐
解决 Chrome 浏览器被毒霸篡改问题
【每日SQL打卡】DAY 27丨列出指定时间段内所有的下单产品【难度简单】
shell if else 使用
PHP uedtior报错 errorHandler is not defined
MFC学习备忘
MarkDown高阶语法手册
【每日SQL打卡】DAY 25丨不同性别每日分数总计【难度中等】
使用Tenserboard可视化深度学习训练过程
SQL clock 】 【 daily DAY 21 丨 report the state of the system date of continuous difficulty difficult 】 【
PL/SQL 面向对象
企业微信客户朋友圈一天可以发多少条?都有哪些限制?如何突破朋友圈可展示人数限制?
飞桨框架体验评测交流会,产品的使用体验由你来决定!
365 days challenge LeetCode1000 topic - Day 043 square mathematics effectively
Distributed Configuration Center of Infrastructure
LED透明屏和LED玻璃显示屏区别
【每日SQL打卡】DAY 21丨报告系统状态的连续日期【难度困难】
网络层和传输层限制
【一起学Rust | 基础篇】rust函数与流程控制详解
【多线程】——Callable创建多线程
宝塔快速搭建自适应咖啡网站模板与管理系统源码实测