本文内容来自 YashanDB 官网,原文内容请见 https:///newsinfo/7106884.html?templateId=1718516
背景:通过备份恢复完成 yasdb 到 yasdb 的数据迁移,环境分为 A 环境(ip:127.0.0.1)与 B 环境(ip:127.0.0.2),数据从 A 环境迁移到 B 环境。
方式有两种,一是 yasql 命令行,二是通过 yasrman 工具
A 环境备份
1、进入 A 环境并登录 yashanA 用户
2、检查数据库是否处于归档模式
yasql / as sysdbaselect log\_mode from V$database; (ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式)
复制代码
● 若数据库未处于归档模式则按下面步骤打开数据库归档(打开数据库归档需要停库,请在无运行业务时完成切换)
shutdown immediate; exit; yasboot cluster start -c yashandb -m mountyasql / as sysdbaalter database archivelog;(将数据库设置为归档模式)select log\_mode from V$database;(检查是否归档模式是否设置成功)alter database open;(设置成功后打开数据库)
复制代码
3、登录 yasdb 数据库,并执行数据库备份命令(备份路径根据可根据实际情况自定义,TAG 参数不能与之前其它备份的 TAG 重复)
BACKUP DATABASE FULL FORMAT '/data/yashan/backup/full\_20240118' TAG 'FULL\_20240118' PARALLELISM 4;
复制代码
4、将备份好的数据文件放置到 B 环境所在机器上
1、进入 B 环境并登录 yashanB 用户
2、登录生产环境数据库并执行停库操作(执行数据库恢复需要停库并移除数据库文件,请在无运行业务时完成切换)
yasql / as sysdbashutdown immediate;exit;
复制代码
3、移除 B 环境 $YASDB_DATA/dbfiles 目录下的文件到其他目录(迁移路径可自行定义)
cd $YASDB\_DATAmv ./dbfiles /home/yashanB/dbfiles1mkdir dbfiles
复制代码
4、以 nomount 模式启动 yasdb,并登录数据库
yasboot cluster start -c yashandb -m nomount yasql / as sysdba
复制代码
5、若 yasdb 在 A 环境与 B 环境的安装路径不一致,在 B 环境上恢复数据库时,需要在数据库配置文件 yasdb.ini 中添加参数来修改数据库恢复路径(如果恢复路径一致可忽略步骤 5)
vi $YASDB\_DATA/config/yasdb.ini
复制代码
● 在文件末尾添加以下参数:(前面为 A 环境的 YASDBDATA 路径,后面为 B 环境 YASDB_DATA 路径)
DB\_FILE\_NAME\_CONVERT='/home/yashanA/yasdb\_data/db-1-1','/home/yashanB/yasdb\_data/db-1-1'REDO\_FILE\_NAME\_CONVERT='/home/yashanA/yasdb\_data/db-1-1','/home/yashanB/yasdb\_data/db-1-1'DB\_BUCKET\_NAME\_CONVERT='/home/yashanA/yasdb\_data/db-1-1','/home/yashanB/yasdb\_data/db-1-1'
复制代码
6、执行数据库恢复命令(路径为 B 环境上存放的备份数据路径)
RESTORE DATABASE FROM '/home/yashanB/backup\_from\_test/full\_20240118'; recover database;
复制代码
7、B 环境数据库恢复完成后,将 yasdb 从 nomount 模式启动到 open 状态
8、检查 B 环境恢复的数据库,没问题后删除步骤 3 中 B 环境旧的 dbfiles 目录
rm -rf /home/yashanB/dbfiles1
复制代码
yasrma n 工具备份恢复
yasrman 主要功能:
● 支持本地备份恢复,yasrman 可代替基于 SQL 的备份恢复命令,连接数据库并在数据库侧生成备份集,或恢复数据库侧的备份集。备份集默认存储在 $YASDB_DATA/backup 文件夹下
● 支持远程备份恢复,yasrman 可以远程连接数据库,在工具侧生成备份集,或者恢复工具侧的备份集到远程数据库。备份集默认存储在 catalog/backup 文件夹下
● 支持分布式集群的本地备份恢复,yasrman 可以连接分布式集群里的所有节点,同时进行备份和恢复,并保证分布式事务的一致性。
● 支持备份集查询,删除,参数配置。
● 支持 XBSA 协议流式备份恢复接口,可对接第三方备份软件。
(需使 用 yasrma n 远程备份功能, 将 A 环境数据远程备份到 B 环境。)
1、进入 A 环境并登录 yashanA 用户
2、检查数据库是否处于归档模式
yasql / as sysdbaselect log\_mode from V$database; (ARCHIVELOG表示为归档模式,NOARCHIVELOG表示非归档模式)
复制代码
● 若数据库未处于归档模式则按下面步骤打开数据库归档(打开数据库归档需要停库,请在无运行业务时完成切换)
shutdown immediate; exit; yasboot cluster start -c yashandb -m mountyasql / as sysdbaalter database archivelog;(将数据库设置为归档模式)select log\_mode from V$database;(检查是否归档模式是否设置成功)alter database open;(设置成功后打开数据库)
复制代码
3、进入 B 环境并登录 yashanB 用户
4、用 yasrman 创建 catalog 目录
yasrman sys/yasdb\_123@127.0.0.2:1688 -c "create catalog" -D /home/yashanB/catalog
复制代码
5、执行远程 A 库数据全量备份(此处的 ip 地址为 A 库 ip,TAG 参数不能与之前其它备份的 TAG 重复,远程备份集默认放在 catalog/backup 文件夹下)
yasrman sys/sys@127.0.0.1:1688 -c "backup database tag 'full\_1' dest client format 'full\_bak\_1'" -D /home/yashanB/catalog
复制代码
6、查看备份集
yasrman sys/sys@127.0.0.2:1688 -c "list backup" -D /home/yashanB/catalog
复制代码
恢复
1、进入 B 环境并登录 yashanB 用户
2、登录 B 环境数据库并执行停库操作(执行数据库恢复需要停库并移除数据库文件,请在无运行业务时完成切换)
yasql / as sysdbashutdown immediate;exit;
复制代码
3、移除 B 环境 $YASDB_DATA/dbfiles 目录下的文件到其他目录(迁移路径可自行定义)
cd $YASDB\_DATAmv ./dbfiles /home/yashanB/dbfiles1mkdir dbfiles
复制代码
4、以 nomount 模式启动 yasdb
yasboot cluster start -c yashandb -m nomount
复制代码
5、查看备份集
yasrman sys/yasdb\_123@127.0.0.2:1688 -c "list backup" -D /home/yashanB/catalog
复制代码
6、执行数据库恢复命令
yasrman sys/yasdb\_123@127.0.0.2:1688 -c "restore database from tag 'full\_1'" -D /home/yashanB/catalog
复制代码
7、检查 B 环境恢复的数据库,没问题后删除步骤 3 中 B 环境旧的 dbfiles 目录
rm -rf /home/yashanB/dbfiles1
复制代码
常见问题:
● 若 $YASDB_DATA/dbfiles 目录下存在数据库文件,执行备份恢复将出发 YAS-00311 错误
● 恢复任务的并行度值必须在 1-8,否则将触发 YAS-04204 错误
● 恢复时指定的 catalog 文件,必须和备份时指定的为同一个文件,否则会触发 YAS-02519 错误
● 备份恢复之前要清理归档日志,否则可能会报 YAS-02305 的问题,解决方法是把报错给出路径下的归档日志清理
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3067651/ ,如需转载,请注明出处,否则将追究法律责任。