lealone / Lealone

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库
Other
2.48k stars 520 forks source link

backup 备份恢复到新数据库实例需要相同的数据库ID吗 #174

Closed ContyChen closed 1 year ago

ContyChen commented 1 year ago

一个环境中创建了多个数据库,备份其中一个数据库(dbid=10),恢复到一个新环境,新环境也必须存在dbid =10的数据库才可以吗

codefollower commented 1 year ago

如果是手工拷贝 db_10 目录是不行的,需要再拷贝 db_0 这个目录,db_0 对应的是 lealone 这个系统数据库,它里面存放了用户创建的数据库的元数据,比如 database id 和 完整的 create database 语句。

推荐用 BACKUP 命令备份,支持全量和增量热备份, 比如 BACKUP TO ‘mydb-20230510.zip' 会全量热备份, 比如 BACKUP TO ‘mydb-20230510.zip' LAST DATE '2023-05-09' 就是增量备份一天的新数据。

恢复的时候,把 mydb-20230510.zip 解压到 lealone.yaml 文件中配置的 base_dir 即可, base_dir 默认是 LEALONE_HOME/data 目录。

codefollower commented 1 year ago

BACKUP 命令只备份当前数据库,还需要连到 lealone 数据库然后执行 BACKUP。 如果冷备份的话直接拷贝 db_0 和 db_10 目录即可。

ContyChen commented 1 year ago

同时备份 lealone 数据库,db_0 就不能恢复到已经有其他数据库的环境,会覆盖当前的配置吧, 需要新启动一套实例再恢复?是这样吧?

codefollower commented 1 year ago

是的,database id 是唯一的,每个 table 和 index 的目录名也包含了 database id,如果恢复的环境里正好也有一个 database id 相同的数据库,是不能覆盖它的。需要启动一套新实例,然后把 db_0 和 db_10 一起拷贝过去。

ContyChen commented 1 year ago

明白了,感谢

ContyChen commented 1 year ago

明白了,感谢