读写分离集群主库备份集+备库归档还原一个新库
有时候集群出了问题,为了不影响应用的使用,需要先恢复一个单机,在集群不能使用的时候代替一下。今天就模拟一下这种情况,主库有定时备份,主库节点崩了,切换到了备库,数据想恢复到最新,只能用主库的备份集+备库的归档。
一、数据准备
Ip 主机名 备注
192.168.202.153 dameng6 读写分离集群主库
192.168.202.154 dameng7 读写分离集群备库
192.168.202.133 dameng1 用来恢复数据的单机
说明:192.168.202.133服务器上部署好了达梦数据库,端口5236。开不开归档都可以还原成功。
二、添加测试数据
1、连接主库,添加test测试表
注意:我是在主库所在服务器上操作的,当然也可以在其他地方,只要能连接上主库即可。
[dmdba@dameng6 bin]$ ./disql sysdba@localhost:32141
服务器[localhost:32141]:处于主库打开状态
SQL> create table test(id int,name varchar);
SQL> insert into test values(1,'test');
SQL> commit;
SQL> checkpoint(100);
2、在主库上备份数据
注意:在主库所在服务器上。
SQL> backup database backupset '/home/dmdba/backup/bak2';
说明:当前集群节点尚未崩坏,所以可以用sql备份。
3、备库服务器连接主库再插入一条数据
注意:这一步其实可以不做,我是想测试一下,所以才加的这一步。
[dmdba@dameng7 bin]$ ./disql sysdba@192.168.202.153:32141
服务器[192.168.202.153:32141]:处于主库打开状态
SQL> insert into test values(2,'test2');
SQL> commit;
SQL> checkpoint(100);
4、在备库服务器连接备库
注意:这一步其实可以不做,我是想测试一下,所以才加的这一步。

备库上无法建表和插入数据

5、连接主库,添加test2测试表
注意:我是在主库所在服务器上操作的,当然也可以在其他地方,只要能连接上主库即可。
SQL> create table test2(id int,name varchar,type int);
SQL> insert into test2 values(1,'test',1);
SQL> commit;
SQL> checkpoint(100);
说明:test2是在备份之后创建的,所以备份集中没有test2的数据,只有归档中有。
三、还原
1、把主库的备份集拷贝到单机上
注意:在主库服务器上。
scp -r bak2 dmdba@192.168.202.133:/dm8/rww/backup
2、把备库的归档拷贝到单机上
注意:在备库服务器上。
scp -r STANDBY_ARCHIVE_0x537405DA\[0\]_2021-09-06_09-44-14.log dmdba@192.168.202.133:/dm8/rww/arch
3、还原
注意:在192.168.202.133这台单机服务器上执行还原,需要先停止数据库服务。
1)查归档的db_magic
[dmdba@dameng1 bin]$ ./dmrachk arch_path=/dm8/rww/arch

说明:恢复的时候需要指定归档的db_magic,不然会恢复失败。
2)从归档还原
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/rww/backup/bak2';
recover database '/dm8/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dm8/rww/arch' use db_magic 928564432;
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

3)、测试是否还原成功
A、启动数据库

B、disql连接数据库
因为是用主库备份集还原的,所以被还原的单机是主库状态,单机一般是normal状态,先把数据库改为normal状态,再把数据库从mount状态改为open状态,最后查一下读写分离集群中的数据是否存在。

更多资讯请上达梦技术社区了解: https://eco.dameng.com

浙公网安备 33010602011771号