https://tidb.net/blog/2a88149e?utm_source=tidb-community&utm_medium=referral&utm_campaign=repost#br%E6%8E%92%E9%99%A4%E8%A7%84%E5%88%99

在br文档中有使用 --filter 或 -f 来指定表库过滤规则,但是这是指定的需要备份的表,跟上面需求不符合。通过查询文档,在https://docs.pingcap.com/zh/tidb/v5.4/table-filter#%E4%BD%BF%E7%94%A8%E9%80%9A%E9%85%8D%E7%AC%A6

中有指定通配符,但需要符合排除规则才可以,如下:

使用通配符

表名的两个部分均支持使用通配符(详情见 fnmatch(3) )。

  • *:匹配零个或多个字符。

  • ?:匹配一个字符。

  • [a-z]:匹配 "a" 和 "z" 之间的一个字符。

  • [!a-z]:匹配不在 "a" 和 "z" 之间的一个字符。

排除规则

在一条过滤规则的开头加上 !,则表示符合这条规则的表不会被 TiDB 数据迁移工具处理。通过应用排除规则,库表过滤可以作为屏蔽名单来使用。

*.*
#^ 注意:必须先添加 *.* 规则来包括所有表
!*.Password
!employees.salaries

根据上面的通配与排除规则,那br的备份命令可以如下写出:

br backup full --pd "{PDIP}:{PORT}" -f '*.*' -f '!dbname.*' -s 'local:///tmp/backup'

测试过程

1,创建测试数据

create database monitor_db_skywalking;

create table moe_test ...

create database syk_db;

create table syk_test ...

2,br备份

[root@opsys-103-236-30 ~]# /root/tidb-toolkit-v6.5.0-linux-amd64/br backup full --pd "10.103.236.30:2379" -f '*.*' -f '!monitor_db_skywalking.*' -s 'local:///tmp/backup' Detail BR log in /tmp/br.log.2023-02-09T11.34.00+0800 Full Backup <-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00% Checksum <--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00% [2023/02/09 11:34:01.794 +08:00] [INFO] [collector.go:73] ["Full Backup success summary"] [total-ranges=22] [ranges-succeed=22] [ranges-failed=0] [backup-checksum=91.994496ms] [backup-fast-checksum=11.178486ms] [backup-total-ranges=80] [backup-total-regions=80] [total-take=1.416143685s] [BackupTS=439330705621123078] [total-kv=1114] [total-kv-size=269.8kB] [average-speed=190.5kB/s] [backup-data-size(after-compressed)=74.35kB] [Size=74346] [root@opsys-103-236-30 ~]# grep syk_test /tmp/br.log.2023-02-09T11.34.00+0800 [2023/02/09 11:34:01.686 +08:00] [INFO] [worker.go:76] ["Calculate table checksum start"] [db=syk_db] [table=syk_test] [2023/02/09 11:34:01.691 +08:00] [INFO] [worker.go:76] ["Calculate table checksum completed"] [db=syk_db] [table=syk_test] [Crc64Xor=1484897629768183948] [TotalKvs=6] [TotalBytes=367] [calculate-take=5.027214ms] [flush-take=804ns] [2023/02/09 11:34:01.790 +08:00] [INFO] [validate.go:82] ["checksum success"] [db=syk_db] [table=syk_test] [root@opsys-103-236-30 ~]# grep moe_test /tmp/br.log.2023-02-09T11.34.00+0800 [root@opsys-103-236-30 ~]# grep syk_db /tmp/br.log.2023-02-09T11.34.00+0800 [2023/02/09 11:34:01.686 +08:00] [INFO] [worker.go:76] ["Calculate table checksum start"] [db=syk_db] [table=syk_test] [2023/02/09 11:34:01.691 +08:00] [INFO] [worker.go:76] ["Calculate table checksum completed"] [db=syk_db] [table=syk_test] [Crc64Xor=1484897629768183948] [TotalKvs=6] [TotalBytes=367] [calculate-take=5.027214ms] [flush-take=804ns] [2023/02/09 11:34:01.790 +08:00] [INFO] [validate.go:82] ["checksum success"] [db=syk_db] [table=syk_test] [root@opsys-103-236-30 ~]# grep monitor_db_skywalking /tmp/br.log.2023-02-09T11.34.00+0800 [2023/02/09 11:34:00.378 +08:00] [INFO] [common.go:718] [arguments] [__command="br backup full"] [filter="[.,!monitor_db_skywalking.*]"] [pd="[10.103.236.30:2379]"] [storage=local:///tmp/backup]

使用grep后发现moe_test没有备份,说明br命令符合需求。

3,恢复测试

mysql [root@10.103.236.30:monitor_db_skywalking]> show databases; +-----------------------+ | Database | +-----------------------+ | INFORMATION_SCHEMA | | METRICS_SCHEMA | | PERFORMANCE_SCHEMA | | monitor_db_skywalking | | mysql | | syk_db | +-----------------------+ 6 rows in set (0.00 sec)

mysql [root@10.103.236.30:monitor_db_skywalking]> drop database monitor_db_skywalking; Query OK, 0 rows affected (0.28 sec)

mysql [root@10.103.236.30:monitor_db_skywalking]> drop database syk_db ; Query OK, 0 rows affected (0.28 sec)

[root@opsys-103-236-30 ~]# /root/tidb-toolkit-v6.5.0-linux-amd64/br restore full --pd "10.103.236.30:2379" -s 'local:///tmp/backup' Detail BR log in /tmp/br.log.2023-02-09T11.36.31+0800 Full Restore <----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00% [2023/02/09 11:36:35.600 +08:00] [INFO] [collector.go:73] ["Full Restore success summary"] [total-ranges=14] [ranges-succeed=14] [ranges-failed=0] [split-region=589.01µs] [restore-ranges=5] [total-take=4.071264805s] [BackupTS=439330705621123078] [RestoreTS=439330744981782573] [total-kv=10] [total-kv-size=733B] [average-speed=180B/s] [restore-data-size(after-compressed)=8.692kB] [Size=8692]

mysql [root@10.103.236.30:monitor_db_skywalking]> show databases; +--------------------+ | Database | +--------------------+ | INFORMATION_SCHEMA | | METRICS_SCHEMA | | PERFORMANCE_SCHEMA | | mysql | | syk_db | +--------------------+ 5 rows in set (0.00 sec)

mysql [root@10.103.236.30:monitor_db_skywalking]> select count() from syk_db.syk_test; +----------+ | count() | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)

恢复完成,从备份到恢复都是按我们需求来完成的。

br排除规则

需要使用 两个--filter 或 -f 来指定表库过滤规则。先加所有,然后再加排除。

必须先添加 *.* 规则来包括所有表
然后对需要排除的库开头加上 !

特别感谢

感谢微信群 TiDB社区技术布道师中小伙伴 咖啡哥-上海、清风明月、caiyfc-武汉-神州数码、db_user-北京-鲸算、黄漫绅|tidb (排名不分前后) 。

[转帖]br备份时排除某个库的更多相关文章

  1. mysqldump备份数据库时排除某些库

    说明:使用mysqldump –all-databases会导出所有库.但如果做主从,从主库dump出数据时,我们是不需要也不想要information_schema 和 mysql 库的.数据库少的 ...

  2. mysql完整备份时过滤掉某些库

    mysql进行完整备份时使用--all-database参数比如:#mysqldump -u root -h localhost -p --all-database > /root/all.sq ...

  3. 备份时如何排除掉默认的 information_schema 和 mysql 库?

    备份时如何排除掉默认的 information_schema 和 mysql 库? mysql -e "show databases;" -uroot -ppassword | g ...

  4. mysql备份时过滤掉某些库 以及 去掉"Warning: Using a password on the command line interface can be insecure."提示信息

    在对mysql进行完整备份时使用--all-database参数 # mysqldump -u root -h localhost -p --all-database > /root/all.s ...

  5. 关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】

    刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [root@ ...

  6. mysqldump备份时保持数据一致性

    对MySQL数据进行备份,常见的方式如以下三种,可能有很多人对备份时数据一致性并不清楚 1.直接拷贝整个数据目录下的所有文件到新的机器.优点是简单.快速,只需要拷贝:缺点也很明显,在整个备份过程中新机 ...

  7. eclipse debug maven项目时出现缺少库的问题

    调试maven web项目时出现缺少库的情况导致项目无法启动  可是打包到tomcat发布却一切正常 后来在stackoverlow上找到了解决方案 项目右键属性->Deployment Ass ...

  8. 7z压缩文件时排除指定的文件

    分享一个7z压缩文件时排除指定文件类型的命令行,感觉很有用: 7z a -t7z d:\updateCRM.7z d:\updateCRM\*.* -r -x!*.log -x!*bak a:创建压缩 ...

  9. mysql 恢复备份时出错 Unknown command ‘\”

    今天恢复mysql备份时,出现了Unknown command ‘\”这样的错误,原以为是备份文件出错,重新备份导入时还是出错.研究了一凡是因为编码的问题,解决方案如下: 使用你导出备份时的编码重新导 ...

  10. cocos项目导入其它源文件时加入依赖库时,头文件提示找不到文件夹中的文件

    cocos项目导入其它源文件时加入依赖库时,头文件提示找不到文件夹中的文件解决方法: 选择项目属性->c/c++->常规,在附加包括项目中加上对应的文件夹 cocos test项目的库(所 ...

随机推荐

  1. JVM学习-程序编译与优化

    原文链接:https://gaoyubo.cn/blogs/89d6d9be.html 一.前端编译与优化 Java技术下讨论"编译期"需要结合具体上下文语境,因为它可能存在很多种 ...

  2. 2023-11-04:用go语言,如果n = 1,打印 1*** 如果n = 2,打印 1*** 3*** 2*** 如果n = 3,打印

    2023-11-04:用go语言,如果n = 1,打印 1*** 如果n = 2,打印 1*** 3*** 2*** 如果n = 3,打印 1*** 3*** 2*** 4*** 5*** 6*** ...

  3. 3层结构+7大特点,带你认识华为云IoTEdge

    摘要:华为云IoTEdge三层架构联合打造的IoT边缘平台功能,持续为更多企业和开发者带来价值. 本文分享自华为云社区<[华为云IoTEdge学习笔记]华为云IoT边缘功能特点及价值>,作 ...

  4. 10个问题让你快速避开java中的jdbc常见坑

    摘要:JDBC,即Java Database Connectivity,java数据库连接.是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范. 本文分享自华为云社区<1 ...

  5. 硬核化解ISV四大痛点,华为云智联生活行业加速器助力伙伴实现商业成功

    摘要:场景化展现合作伙伴.客户的案例,以期针对性的解决行业痛点,帮助伙伴共筑全场景智联生活. 本文分享自华为云社区<硬核化解ISV四大痛点,华为云智联生活行业加速器助力伙伴实现商业成功>, ...

  6. 开心档之Java 测验

    目录 Java 测验 Java 测验 Java 测验技术文档 Java测验是一种衡量Java编程水平的测试,可以通过一系列问题和编程任务来测试Java开发人员的技能水平和理解程度.Java测验可以用于 ...

  7. 在Linux(CentOS7)服务器上安装Java的JDK

    一.介绍 最近,我在做有关CI/CD的测试,真是一步一个坑啊,碰得我头破血流,这么难得的经验,必须记录下来,以防以后想找却找不到.说道CI/CD最好的工具,大家肯定是一致推荐Jenkins,对了,我现 ...

  8. 火山引擎DataLeap联合DataFun发布《数据治理知识地图》

    近期,火山引擎DataLeap和技术社区DataFun联合发布<数据治理知识地图专业版V1>(以下简称"地图"),地图将数据治理的领域.流程.技术.工具等内容进行系统化 ...

  9. Chrome 护眼模式 - 黑暗模式 - 夜眼(Night Eye) 插件

    Chrome 地址栏里输入: chrome://extensions/ 打开插件商城:

  10. 【C++库函数】stringstream-类型转换&&字符分割

    继续填坑٩(•̤̀ᵕ•̤́๑),这次是 stringstream的内容,最初是看到它可以把字符串直接输出成int类型,惊了,但是一直不是很懂.在网上查了很多资料,才终于差不多理解.stringstre ...