把数据库添加进Mirror

以往的经验里, 用户在把数据库添加到镜像时遇到过各种各样的问题,以致必须请求外部帮助才能解决。除了步骤本身比较繁琐,很大的原因是阅读文档不细致。还有一个,就是对英文水平不太高的用户,有些英文句式并不是很好懂,比如说,文档中有这一句其实非常关键:

If you attempt to add a new database to the mirror on a nonprimary member that was not created as a mirrored database on the primary, but rather added to the mirror after it was created, an error message notes this and you cannot complete the operation.

我用最好的翻译器DeepL翻译后的中文是:

如果你试图在一个非主要成员上向镜像添加一个新的数据库,而这个数据库并不是在主要成员上作为镜像数据库创建的,而是在创建后添加到镜像中的,那么就会出现错误信息提示,你无法完成操作。

很讨厌的是它没用说明错误信息是什么,以致于很多用户, 当他们在Backup成员中把一个数据库添加到镜像时,遇到相关的错误时,没有把问题和这句话关联起来,这个错误提示是这样的:

“错误 #2105: 与成员 SERVERA/IRIS 中的相匹配的数据库 :mirror:AUGEST:DEMO 未被创建为镜像数据库”。

或者用英文,

ERROR #2105: Matching mirrored DB :mirror:AUGEST:DEMO in member SERVERA/IRIS was not created as mirrored DB

我来解释一下这句话,它说的是: ”嘿, 你在本机要添加的:mirror:AUGEST:DEMO数据库, 它在主镜像成员SERVERA/IRIS里, 未被创建为镜像数据库。“

如果您看了我的解释, 还觉得莫名其秒,我相信您其实是没懂这个关键点:

“一个数据库创建成镜像数据库,和创建成普通数据库后面后再添加到镜像里,它们是不同的。”

关于这一点,其实文档也有说明,啰嗦,但说明了原因。直接上翻译:

创建镜像数据库(即添加一个不含数据的新数据库)的过程与向镜像添加现有数据库的过程不同。作为镜像数据库创建的数据库上的Global操作从一开始就被记录在镜像Journal中,因此镜像可以访问它所需要的所有数据,以便在镜像成员之间同步数据库。但现有数据库在被添加到镜像之前的Global操作包含在非镜像Journal文件中,镜像不能访问这些文件。由于这个原因,一个现有的数据库在被添加到镜像后,必须在主故障转移成员上进行备份,并在备份故障转移成员和它要所在的任何异步成员上进行恢复。一旦这样做了,你必须激活并赶上数据库,使其与主数据库保持同步。

清楚了这个关键, 您才能理解为什么安装步骤分为下面的两个类型,

  • 创建新的镜像数据库
  • 将已有的数据库加入镜像

TIP: 另外,还有一个值得提醒的:只有用户自己的数据库可以被加入镜像。系统本身的数据库, 比如IRISSYS, IRISLIB, IRISTEMP等等,都不能加入镜像。早期有些版本可以,NOMORE!

创建新的镜像数据库

  • 主镜像成员的系统维护界面上,选择System Administration – Configuration – System Configuration – Local Databases , 选择Create New Database. 在数据库创建向导窗口,在“镜像数据库?”下拉菜框,选择'是‘(Yes)

<img src="/sites/default/files/inline/images/image-20220915132341910.png" alt="" style="zoom: 33%/>

创建成功后,维护界面会回到数据库创建页面。在下面数据库列表里,您可以看到的NEWDB前面加入了镜像的名称AUGUEST。

查看镜像监视器, 您会看到这个数据库已经成功添加入了镜像,状态为“一般”。英文原文为“Normal”,请无视优秀的翻译。

Tip: 要把数据库从镜像里移除,在“系统操作>镜像监视器“里操作。

这时候您如果去其他的镜像成员的镜像监视器里查看, 会发现如下的内容, 表示这个成员已经收到了Primary的消息:"嘿,我主机上把这个数据库加到了镜像里。"

  • 在每一个镜像成员中, 无论是backup还是异步成员,创建相同名字的本地数据库。同样的操作,选择相同的文件路径,同样在“镜像数据库?”下拉框回答Yes。创建好之后,您会看到镜像监视器里,这个数据库已经添加成功。如果在您当前操作的机器上查看镜像监视器, 您会发现和Primary里看到的稍有不同, 象这样:

​ (注意它的状态是Dejournaling, 表示它在正常的接收或者准备接收主机发来的数据同步)

  • 检查数据库工作正常

    • 在所有的镜像成员上一个个的创建使用NEWDB的命名空间。在各个机器上必须保持一致,一样的名称,一样的资源等等。(理论上不必要,但维护中非常必要)
    • 在Primary上做一个数据库操作。我喜欢在“系统资源管理器>SQL"页面执行SQL语句,比如CREATE TABLE Persons(Id int, Name varchar(255))。注意先要切换到创建的命名空间
    • 在所有的镜像成员上, 查看“系统资源管理器>SQL"页面, 确认表Persons同步到了所有的镜像成员。

这里如果您遇到上面提到的“Error 2105“, 那就是这个数据库在Primary上先是创建成一般数据库,然后加入的镜像,那您应该按下面的步骤操作了。

如果有人好奇:在Primary上的这种区别,Backup是怎么知道的,它不是还没加入到镜像吗? 故事是这样的: 镜像日志中同步的不是只有镜像数据库的数据的修改, 还包括IRISSYS, IRISAUDIT,等库的内容。NEWDB在主成员中是怎么加入到镜像的, IRISSYS里的Global Set是不一样的,而这个set, 是同步给备用成员backup的。 又一个没用的知识。

将已有的数据库加入镜像

已有的(Existing)数据库是指原本在主成员里按普通数据库创建的,然后加入镜像的数据库。

这样的情况,哪怕同样名称,配置的数据库在其他成员上已经有了。能直接加入镜像吗?比如你主成员上有个User, 备用成员上也有,您能在主机, 备机直接把它们加入镜像吗?

答案是肯定不行。系统根本没法保证这两个库里面已有的数据是一样的。您要在主成员上备份数据库,在其他成员恢复, 而恢复操作成功后,在其他成员上,这个数据库自动变成了“镜像数据库”, 也就是加入了镜像。

这个同名的数据库要先在其他成员上创建。创建成普通数据库。如果其他成员上已经有了,也不用删除,就直接用主机的备份文件覆盖就好。

以下是详细的步骤:

  • 在主机的“系统>配置>本地数据库“页面, 点击添加到镜像按钮。然后在跳出窗口中选中您要添加的数据库,可以一次选多个。 数据库很大或者多个数据库同时加入是,可以选中”在后台运行“。通常这个添加动作是在秒级时候内完成的,无所谓是否后台运行。

  • 到镜像监视器查看添加的结果。被添加的数据库状态这时候应该是"一般"(Normal) 。

  • 到其他镜像成员的镜像监视器查看, 您会看到主机来的通知引发的提醒:

  • 在备机检查自己的数据库状态。如果没有DEMO或者USER数据库,那么创建它们,创建时下拉框”是否镜像?”选择否或者NO。之后在本地数据库列表中它们应该是这样,注意没有在镜像里。

  • 在Primary做数据库的在线备份, 用于后面步骤里到其他成员上去做数据库恢复。

    以下过程仅供参考:

# 在主成员备份,并发送给备份成员serverb%SYS>do ^BACKUP1) Backup
2) Restore ALL
3) Restore Selected or Renamed Directories
4) Edit/Display List of Directories for Backups
5) Abort Backup
6) Display Backup volume information
7) Monitor progress of backup or restoreOption? 1*** The time is: 2022-09-17 15:27:48 ***InterSystems IRIS Backup Utility--------------------------
What kind of backup:1. Full backup of all in-use blocks2. Incremental since last backup3. Cumulative incremental since last full backup4. Exit the backup program
1 => 1
Specify output device (type STOP to exit)
Device: /isc/FullDBList_user.cbk => /isc/setmirror.cbk
Backing up to device: /isc/setmirror.cbk
Description:Backing up the following directories:/isc/data/demo//isc/iris/mgr/user/Start the Backup (y/n)? => y
Journal file switched to:
/isc/jrnpri/MIRROR-AUGEST-20220917.011Starting backup pass 1
Backing up /isc/data/demo/ at 09/17/2022 15:28:26
Copied 82 blocks in 0.004 secondsFinished this pass of copying /isc/data/demo/Backing up /isc/iris/mgr/user/ at 09/17/2022 15:28:28
Copied 908 blocks in 0.475 secondsFinished this pass of copying /isc/iris/mgr/user/Backup pass 1 complete at 09/17/2022 15:28:29Starting backup pass 2
Backing up /isc/data/demo/ at 09/17/2022 15:28:31
Copied 2 blocks in 0.000 secondsFinished this pass of copying /isc/data/demo/Backing up /isc/iris/mgr/user/ at 09/17/2022 15:28:33
Copied 2 blocks in 0.000 secondsFinished this pass of copying /isc/iris/mgr/user/Backup pass 2 complete at 09/17/2022 15:28:33Starting backup pass 3Journal file '/isc/jrnpri/MIRROR-AUGEST-20220917.010' and the subsequent ones are required for recovery purpose if the backup were to be restoredJournal marker set at
offset 197572 of /isc/jrnpri/MIRROR-AUGEST-20220917.011- This is the last pass - Suspending write daemon
Backing up /isc/data/demo/ at 09/17/2022 15:28:35
Copied 2 blocks in 0.000 secondsFinished this pass of copying /isc/data/demo/Backing up /isc/iris/mgr/user/ at 09/17/2022 15:28:35
Copied 2 blocks in 0.001 secondsFinished this pass of copying /isc/iris/mgr/user/Backup pass 3 complete at 09/17/2022 15:28:35***FINISHED BACKUP***Global references are enabled.Backup complete.1) Backup
2) Restore ALL
3) Restore Selected or Renamed Directories
4) Edit/Display List of Directories for Backups
5) Abort Backup
6) Display Backup volume information
7) Monitor progress of backup or restoreOption?
%SYS>!scp /isc/setmirror.cbk root@172.16.58.102:/isc
Enter passphrase for key '/root/.ssh/id_rsa':
root@172.16.58.102's password:
setmirror.cbk                                                                                            100% 8448KB  49.4MB/s   00:00%SYS>
  • 在其他成员上恢复数据库,这里分两种情况:

    • 其他成员上没有这个数据库: 比如我的serverb没有DEMO数据库,要做的是:创建一个DEMO数据库,使用和servera一样的设置,除了在下拉框“镜像数据库?“,回答”NO“
    • 其他成员上有这个库,比如备机serverb里有User, 不用管它,下面我们就可以直接把它覆盖掉。

    请参考下面的数据库恢复过程。 提醒一点:不要使用第一个选项“All Directories", 该选项不能用其他机器的备份文件恢复本机。

# 在Backup成员serverb上执行,恢复用源文件拷贝自servera%SYS>do ^DBRESTCache DBREST UtilityRestore database directories from a backup archiveRestore: 1. All directories2. Selected and/or renamed directories3. Display backup volume information4. Exit the restore program1 => 2Do you want to set switch 10 so that other processes will be
prevented from running during the restore? Yes =>Specify input file for volume 1 of backup 1(Type STOP to exit)
Device: /isc/setmirror.cbkThis backup volume was created by:IRIS for UNIX (Red Hat Enterprise Linux 7 for x86-64) 2022.1The volume label contains:Volume number      1Volume backup      SEP 17 2022 03:28PM FullPrevious backup    SEP 16 2022 09:11AM FullLast FULL backup   SEP 16 2022 09:11AMDescriptionBuffer Count       0Mirror name        AUGESTFailover Member    SERVERA/IRIS
Is this the backup you want to start restoring? Yes =>
This backup was made on the other mirror member.
Limit restore to mirrored databases? yesFor each database included in the backup file, you can:-- press RETURN to restore it to its original directory;-- type X, then press RETURN to skip it and not restore it at all.-- type a different directory name.  It will be restored to the directoryyou specify.  (If you specify a directory that already contains adatabase, the data it contains will be lost)./isc/data/demo/ (:mirror:AUGEST:DEMO) =>
/isc/iris/mgr/user/ (:mirror:AUGEST:USER) =>Do you want to change this list of directories? No =>Restore will overwrite the data in the old database. Confirm Restore? No => Yes***Restoring /isc/data/demo/ at 15:47:09
82 blocks restored in 0.0 seconds for this pass, 82 total restored.
Expanding /isc/iris/mgr/user/ ...Expanding /isc/iris/mgr/user/ from 1 MB to 654 MB***Restoring /isc/iris/mgr/user/ at 15:47:12
908 blocks restored in 0.0 seconds for this pass, 908 total restored.***Restoring /isc/data/demo/ at 15:47:12
2 blocks restored in 0.0 seconds for this pass, 84 total restored.***Restoring /isc/iris/mgr/user/ at 15:47:12
2 blocks restored in 0.0 seconds for this pass, 910 total restored.***Restoring /isc/data/demo/ at 15:47:12
2 blocks restored in 0.0 seconds for this pass, 86 total restored.***Restoring /isc/iris/mgr/user/ at 15:47:12
2 blocks restored in 0.0 seconds for this pass, 912 total restored.Specify input file for volume 1 of backup following SEP 17 2022  03:28PM(Type STOP to exit)
Device:Do you have any more backups to restore? Yes => no
Mounting /isc/data/demo/ which is a mirrored DB/isc/data/demo/       ... (Mounted)Mounting /isc/iris/mgr/user/ which is a mirrored DB/isc/iris/mgr/user/   ... (Mounted)Journal records for mirrored DBs were restored successfully.
%SYS>
  • 检查数据库列表中的状态,注意它们已经成了AUGEST的镜像数据库了, 而且它们是只读模式

  • 在serverb上查看镜像监视器,确认它们的状态是Dejournaling

后面您可以像上面提到的,在主机上操作数据, 确认数据修改同步给了备机。到此这部分工作才算结束。

如果只有外部备份文件:

按照文档上的说法,如果用外部备份在非主成员恢复,恢复后需要在镜像监视器的”镜像数据库列表里“点击"ACtiviate", 直到看到状态为Caaught up为至。请参考文档,我不是很清楚细节。

其他的镜像操作

这里我说说怎么删除镜像, 以及其他的一些常用操作的要点, 比如什么时候使用“SET NO FAILOVER”等等。
TO BE CONTINUED...

IRIS镜像配置(3)相关推荐

  1. IRIS的镜像配置(2)

    Mirror的配置 这里详细介绍了主成员(Primary)和备用成员(Backup)的设置过程. 虽然也包括了异步成员配置的章节,其实我没有真的操作,我认为应该没有特别需要注意的. 配置Mirror应 ...

  2. SQL Server 2012 数据库镜像配置完整篇

    "数据库镜像"是一种提高 SQL Server 数据库的可用性的解决方案. 镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库.数据库镜像维护一个数据库的两个副本,这两个 ...

  3. aliyun maven 添加jar_阿里云Maven配置,Maven仓库配置,Maven镜像配置

    阿里云Maven配置,Maven仓库配置,Maven镜像配置 ======================== 蕃薯耀 2018-01-23 http://fanshuyao.iteye.com/ 一 ...

  4. 实战SQL Server 2005镜像配置全过程

    SQL Server 2005镜像配置基本概念 我理解的SQL Server 2005镜像配置实际上就是由三个服务器(也可以是同一服务器的三个 SQL 实例)组成的一个保证数据的环境,分别是:主服务器 ...

  5. sqlplus 镜像_【Docker】拉取Oracle 11g镜像配置

    以下是基于阿里云服务器Centos 7操作 1.拉取Oracle11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_1 ...

  6. 用iso镜像配置本地yum源

    2019独角兽企业重金招聘Python工程师标准>>> 用iso镜像配置本地yum源 在虚拟机安装iso 镜像挂载 mkdir /centosmount /dev/cdrom /ce ...

  7. 华三交换机配置多个镜像口_H3C交换机端口镜像配置的方法

    H3C交换机端口镜像配置的方法 基于流镜像的交换机针对某些流进行镜像,每个连接都有两个方向的数据流,对于交换机来说这两个数据流是要分开镜像的.下面YJBYS小编为大家整理了关于H3C交换机端口镜像配置 ...

  8. 各型号交换机端口镜像配置方法和命令

    各型号交换机端口镜像配置方法和命令 "Port Mirror"即端口镜像,端口镜像为网络传输提供了备份通道.此外,还可以用于进行数据流量监测.可以这样理解:在端口A和端口B之间建立 ...

  9. 网络流量一对多镜像配置

    需求: 做网络流量分析需要实时复制一份网络流量做分析,通过交换机镜像功能解决.但多数交换机只有一对一镜像的功能,没有一对多功能(一对多需求是从一个网络口复制成多份流量用于分析),还有多对多镜像配置. ...

最新文章

  1. 语义表征的无监督对比学习:一个新理论框架
  2. c语言小程序解决生活中小问题,自己写的一个小程序 有问题帮帮忙
  3. 【数据结构与算法】之深入解析“股票价格跨度”的求解思路与算法示例
  4. hdu 6035:Colorful Tree (2017 多校第一场 1003) 【树形dp】
  5. 生物信息之ME, HMM, MEMM, CRF
  6. [软技能] 在前后端分离项目里,请说说前端传递的token的流程?
  7. java 记录一个类加载顺序的坑
  8. flowable 设置流程跟踪高亮线的颜色
  9. python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例
  10. Spring Cloud核心组件原理分析
  11. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
  12. 层次分析法模型(数学建模学习)
  13. DirectX 学习经典参考书籍 电子书下载
  14. 黑鲨重装计算机安装无法继续,一键重装失败不要怕,黑鲨教你解决一键重装系统失败问题...
  15. JS细胞分裂递归案例
  16. 快递柜智能柜C语言程序,家用智能快递柜的设计与实现(含电路图)
  17. 20世纪中文电影一百强
  18. 令牌桶算法的python实现,人人都可以玩算法
  19. BW处理链的几个操作
  20. c#在output窗口输出调试信息

热门文章

  1. 我要减肥~~~~~~
  2. Markdown插入图片的方法
  3. 复分析导论第一卷pdf微盘_【分享】【分享】《复分析导论(第2卷):多复变函数》【已搜索无重复】 - 数学 - 小木虫 - 学术 科研 互动社区...
  4. 进程退出、孤儿进程、僵尸进程
  5. 深入探究 WinRT 和 await
  6. 网页浏览器的Web打印插件开发指南
  7. 软件设计师笔记----计算机组成与结构
  8. web开发过程中遇到的问题_您将在Web开发中遇到的坏消息
  9. Java学习笔记(第6天)
  10. “一生一芯”项目遇到的卡壳问题