Closed ContyChen closed 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 目录。
BACKUP 命令只备份当前数据库,还需要连到 lealone 数据库然后执行 BACKUP。 如果冷备份的话直接拷贝 db_0 和 db_10 目录即可。
同时备份 lealone 数据库,db_0 就不能恢复到已经有其他数据库的环境,会覆盖当前的配置吧, 需要新启动一套实例再恢复?是这样吧?
是的,database id 是唯一的,每个 table 和 index 的目录名也包含了 database id,如果恢复的环境里正好也有一个 database id 相同的数据库,是不能覆盖它的。需要启动一套新实例,然后把 db_0 和 db_10 一起拷贝过去。
明白了,感谢
明白了,感谢
一个环境中创建了多个数据库,备份其中一个数据库(dbid=10),恢复到一个新环境,新环境也必须存在dbid =10的数据库才可以吗