在使用br进行恢复时,怎样禁止DDL和DML操作?

在使用br进行恢复操作时,可以用什么方式禁止DDL和DML操作?
下线所有的tidb-server节点吗?但这会对数据库造成什么负面影响吗?
是否有其它方式呢?

把库设置成read_only也许可以,不过没试过得测测影不影响BR恢复

br恢复的时候必须空库没有数据写入啊 不然会失败的

恢复这么还能有业务往里写,恢复完打开业务啊

br恢复时候不允许访问数据库的

我看官方文档里没有说明呢?你是有做过相应的验证吗?

这个结论有官方文档支持或者验证结果支持吗?

打开业务是指什么呢?

read_only是怎么设置的呢?要使这个设置生效是不是需要重启数据库啊?

br恢复完后会有个checksum如果数据不一致会直接失败

1 个赞

set global tidb_super_read_only=1
不用重启

2 个赞

br的时候好像是不能写入的吧,不需要操作啊

权限回收,只给select 权限,br的 权限不动,就行。

如果在恢复过程中有新的数据写入,这些新写入的数据将会与备份数据冲突,可能导致数据不一致或丢失。
为了确保恢复的准确性和完整性,在进行恢复操作期间,请避免在集群中进行写入、删除或创建表等DDL和DML操作。这是因为备份数据可能包含对表进行重命名的 DDL 操作,如果在恢复过程中修改了集群数据,那么恢复操作将无法确定删除的表或已存在的表是由外部操作引起的,这会影响下一次恢复重试的准确性。

具体应该怎么操作呢?是这位朋友说的这个操作吗?
image

这个老师 是 设置 系统 都是 只读模式了。这个没测试过。
可以 改权限的,除了 备份用户,其他都是 select

你做回复怎么会让应用去操作呢??如果说你迁移或者说其他情况这个新建的tidb或者老tidb需要导入另外一个tidb数据,种种原因这个tidb有业务在链接。。。。tidb恢复的时候他不会恢复账号密码的,。
所以你可以不要先把相关的账号密码建上去,不让现有的业务用对应的账号密码去访问就行了。
等恢复完成了在创建对应的账号密码

不要设置什么只读了,增加复杂度,你就直接禁止所有外部连接,要么网络隔绝, 要么删除所有用户,只留一个root自己使用。禁止任何;链接

停掉vip

参考如下方式试试:

  1. 使用 --no-schema 参数:在使用br restore命令时,可以添加–no-schema参数来禁止恢复数据库的模式信息,这将阻止 DDL 操作的执行。

    示例命令: br restore --no-schema

  2. 使用 --no-restore-txn 参数:在使用 br restore 命令时,可以添加 --no-restore-txn 参数来禁止恢复事务数据,这将阻止 DML 操作的执行。

    示例命令: br restore --no-restore-txn

    注意:禁止DDL和DML操作可能会影响数据的完整性和一致性,同时,建议在执行任何数据库操作之前,先进行备份,并在安全的测试环境中进行验证。