Encontrar

Artículo
· 10 jul, 2024 Lectura de 5 min

IRISでシャドウイングの代わりにミラーリングを構成する方法-プログラム編

これは InterSystems FAQ サイトの記事です。
 

こちらの記事では、「IRISでシャドウイングの代わりにミラーリングを構成する方法」を紹介しました。

今回は、「プログラムでシャドウイングの代わりにミラーリングを構成する方法(Windows版)」を紹介します。


【今回のサンプル・ミラー構成について】

  正サーバ(ミラー・プライマリ) 副サーバ(ミラー・非同期)
ミラー名 MIRRORSET MIRRORSET
ミラーメンバ名 MACHINEA MACHINEC
IPアドレス 35.77.84.159 54.248.39.237


では、ミラーの構成手順をご紹介します。手順は以下になります。
 

<ミラーリングのプライマリ設定>     // MACHINEA(正サーバ)

1. ISCAgentの自動起動設定および起動         ※Windowsコマンドプロンプトで実行

C:\Users\Administrator>sc config ISCAgent start=auto
C:\Users\Administrator>sc start ISCAgent

 

2. [システム管理] > [構成] > [ミラーサービスの有効化]     ※IRISターミナルで実行

zn "%SYS"
set status=##class(Security.Services).Get("%Service_Mirror", .svcProps)
set svcProps("Enabled") = 1
set status=##class(Security.Services).Modify("%Service_Mirror", .svcProps)

 

3. [システム管理] > [構成] > [ミラーの作成]     ※IRISターミナルで実行

zn "%SYS"
set MirrorSetName="MIRRORSET"
set SystemName = "MIRRORA"     // 任意で設定。設定しない場合、既定で$sysytem 変数の内容を利用(例:<デバイス名>/IRIS)
set MirrorInfo("UseSSL") = 0
set MirrorInfo("ECPAddress") = "xxx.xxx.xxx.xxx"      // this is the SuperServer Address, default value is result of $System.INetInfo.LocalHostName().
set sc = ##class(SYS.Mirror).CreateNewMirrorSet(MirrorSetName, SystemName, .MirrorInfo)
write $system.Mirror.GetMemberType()
// (出力) Failover
write $system.Mirror.GetStatus()
// (出力) PRIMARY、TRANSITIONの場合は少し待って再度実行

 

4. ローカルデータベースの作成(ミラー属性の追加)     ※IRISターミナルで実行

zn "%SYS"
/// ローカルデータベースの作成
Set Directory="c:\intersystems\iris\mgr\mirrordb\"
Set x=$ZF(-100, "/shell", "mkdir", Directory)
Set db=##Class(SYS.Database).%New()
Set db.Directory=Directory
Set status=db.%Save()
Set DBName="MIRRORDB"
Set status=##class(Config.Configuration).AddDatabase(DBName,Directory)
Set NSName=DBName
Set status=##class(Config.Configuration).AddNamespace(NSName,DBName)

/// ミラー属性の追加(プライマリフェイルオーバーメンバのみ)
set status=##class(SYS.Mirror).AddDatabase(Directory)
set db=##Class(SYS.Database).%OpenId(Directory)
write db.Mirrored
// (出力) 1           ; Mirror DB の場合1
kill

 

<ミラーリングのDR非同期設定>     // MACHINEC(副サーバ)

1. ISCAgentの自動起動設定および起動         ※Windowsコマンドプロンプトで実行

C:\Users\Administrator>sc config ISCAgent start=auto
C:\Users\Administrator>sc start ISCAgent


2. ミラーサービスの有効化
 *[システム管理] > [構成] > [ミラーサービスの有効化]     ※IRISターミナルで実行

zn "%SYS"
set status=##class(Security.Services).Get("%Service_Mirror", .svcProps)
set svcProps("Enabled") = 1
set status=##class(Security.Services).Modify("%Service_Mirror", .svcProps)


3. 非同期としてミラーに参加
 *[システム管理] > [構成] > [非同期として参加]     ※IRISターミナルで実行

zn "%SYS"
set MirrorSetName="MIRRORSET"
set InstanceName="IRIS"            // primary instanace name
set AgentAddress="xxx.xxx.xxx.xxx" // primary member DNS name or IPaddress
set AsyncMemberType=0              // DR:0, Reporting R only:1, Reporting R/W:2
set SystemName = "MIRRORC"         // 任意で設定。設定しない場合、既定で$sysytem 変数の内容を利用
set LocalInfo("ECPAddress") = "yyy.yyy.yyy.yyy" // this is the SuperServer Address, default value is result of $System.INetInfo.LocalHostName().
set status=##class(SYS.Mirror).JoinMirrorAsAsyncMember(MirrorSetName,SystemName  ,InstanceName,AgentAddress,,AsyncMemberType,.LocalInfo)
write $system.Mirror.GetMemberType()
// (出力) Disaster Recovery
write $system.Mirror.GetStatus()
// (出力) CONNECTED、TRANSITIONの場合は少し待って再度実行


4. ミラーデータベースの準備

非同期の副サーバ:MACHINEC に、正サーバ:MACHINEA のバックアップファイルをリストアします。

【補足】
データベースファイル(IRIS.DAT)のコピーによるバックアップの場合は(=正サーバで Backup.Generalクラスの ExternalFreeze()/ExternalThaw() を利用してバックアップを取っている場合)、非同期データベースをディスマンとした状態でデータベースファイル(IRIS.DAT)を置換します。

※ローカルデータベースの作成手順は、正サーバ:MACHINEAと同じです。
  (4の「ローカルデータベースの作成」、ミラー属性の追加 以外を行います)

※外部/オンラインバックアップ・リストアについては、以下の記事で詳細手順を説明していますので、参考になさってください。
外部バックアップについて
オンラインバックアップについて


5. ミラーモニターでのジャーナルの有効化、キャッチアップ     ※IRISターミナルで実行

zn "%SYS"
set Directory="c:\intersystems\iris\mgr\mirrordb\"
set status=##class(SYS.Mirror).ActivateMirroredDatabase(Directory)  // 有効化
set db=##class(SYS.Database).%OpenId(Directory)
set sfn= db.SFN  // sfn system file number データベーステーブル(内部情報)内の番号
kill db
set status=##class(SYS.Mirror).CatchupDB($lb(sfn))  // キャッチアップ
write status     // 1 でキャッチアップ成功。それ以外の場合は write $SYSTEM.Status.DisplayError(status) でエラーの内容を確認


6. 管理ポータルで、キャッチアップしたことを確認(こちらで構成は終了です)
 *[システムオペレーション] > [ミラーモニタ]

 
 

各種設定の詳細は以下のドキュメントをご覧ください。
Security.Services
SYS.Mirror
$SYSTEM.Mirror


enlightened【ご参考】
Cache Mirroring 101:簡単なガイドとよくある質問  
ミラーリングの機能について
ミラージャーナルファイルの削除のタイミングと要件
IRISでシャドウイングの代わりにミラーリングを構成する方法

Comentarios (0)0
Inicie sesión o regístrese para continuar
Artículo
· 9 jul, 2024 Lectura de 2 min

WriteDaemon Alertが出力される原因について

これは InterSystems FAQ サイトの記事です。

メッセージログ(messages.log)/コンソールログ(cconsole.log) に以下のようなメッセージが表示される場合があります。

03/22/18-14:27:34:624 (1851) 2 [SYSTEM MONITOR] WriteDaemon Alert: Write Daemon still on pass 320186

 

このメッセージ出力は、ライトデーモンのデータベースファイルへの書き込み処理の遅延を示しています。
その原因としては、ディスクI/O負荷が高く、そのI/O要求量に対してディスク処理性能が不足していることが考えられます。

ディスクI/O負荷の原因としては以下が考えられます。

  • アプリケーションによるデータへの更新や参照処理が集中した
  • アンチウイルスソフトのスキャンやデータベースバックアップソフト等によるディスクへのI/O負荷

もしアンチウイルスソフトがインストールされている場合は、「アンチウイルスソフト(セキュリティソフト)のスキャンから除外してほしいリスト」に記述している情報を参考に、InterSystems製品の対象ファイルをスキャンの対象外に設定変更してください。

このメッセージは、InterSystems製品のシステムモニタによりライトデーモンの動作状況が監視され、ドキュメント「システム・モニタのステータスおよびリソース・メトリック」の "システム・モニタのステータスおよびリソース通知" の表のライト・デーモンのメトリックの通知ルールの条件によりアラートと判断されると出力されます。

通知ルールの条件は、ライトデーモンによりデータベースキャッシュ中の更新されたバッファのデータベースファイルへの書き込み処理が設定された閾値(80秒)より長くなった場合です。

以下メッセージの出力以降は、アラートの状態から回復したことを示しています。

03/22/18-14:39:18:541 (1851) 0 [SYSTEM MONITOR] WriteDaemon Alert: Write Daemon completed a pass
Comentarios (0)1
Inicie sesión o regístrese para continuar
Pregunta
· 9 jul, 2024

Enregistrement des composants(bs,bp,bo)

 

  1. Lors de l'enregistrement des composants : j'ai utilisé cette commande :
  2. "Utils.migrate("/external/src/CoreModel/Python/settings.py")" ;
  3. L'erreur apparaît : "Une erreur s'est produite : iris.cls: error finding class",
  4. J'ai changé avec ces deux lignes :
  5. résultat = sous-processus.run(["iop", "-m", "/external/src/CoreModel/Python/settings.py"], stdout=sous-processus.PIPE, stderr=sous-processus.PIPE, check=True)
  6. subprocess.run(["iop", "-m", "/external/src/CoreModel/Python/settings.py"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True)
  7. il y a aussi une erreur : "Une erreur s'est produite : Command '['iop', '-m', '/external/src/CoreModel/Python/settings.py']' returned non-zero exit status 1."
Comentarios (0)1
Inicie sesión o regístrese para continuar
InterSystems Official
· 9 jul, 2024

InterSystems Reports version 24.1 Release Announcement

InterSystems Reports version 24.1 is now available from the InterSystems Software Distribution site in the Components section.  The software is labeled InterSystems Reports Designer and InterSystems Reports Server and is available for Mac OSX, Windows and Linux operating systems.  

This new release brings along some great enhancements from our partner, insightsoftware.  InterSystems Reports 24.1 is powered by Logi Report Version 24.1SP2 and includes:

  • Add external files as attachments to the labels and fields (including DBFields, formula fields, parameter fields, summary fields, and special fields) to your report.  For more information, go to this link.
  • Support for common HTML tags when rendering reports in Design mode.
  • Additional capabilities in Page Report Studio to allow for more flexibility when editing reports on the Reports Server

For more information about these features and others, see the release notes available from insightsoftware.

Note that the InterSystems Reports 24.1 installation requires JDK version 11 or 17 for the installation to execute.  Please upgrade if you are using JDK 8 prior to the InterSystems Reports installation.

For more information about InterSystems Reports, see the InterSystems documentation and learning services  content.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Pregunta
· 9 jul, 2024

%DynamicObject (JSON) Response into Class Structure

Using the FHIR DEMO, I have pieced together how to make a FHIR Request using OAuth against an External FHIR Repository. When I execute the Patient search (HS.FHIRServer.Interop.Request), I get a HS.FHIRServer.Interop.Response that has a Quick Stream ID, which I then use to convert the Quick Stream to a JSON Dynamic Object. if I do a trace on the Raw JSON Object, I am able to pull out single elements, however I want to pull the raw JSON into a defined Class Structure. 

I tried using fromDao(dao As %DynamicAbstractObject) As <HS.FHIRModel.R4 subclass> outlined within Working with FHIR Data

in my DTL when I would try...

Set cls = $CLASSMETHOD("HS.FHIR.DTL.vR4.Model.Resource.Patient","fromDao",dao)

I would get...

ERROR <Ens>ErrBPTerminated: Terminating BP TEST_FHIR_PATIENT_SEARCH # due to error: ERROR #5002: ObjectScript error: <METHOD DOES NOT EXIST>Transform+18^osuwmc.FHIR.PatientResposneToFHIRObject.1 *fromDao,HS.FHIR.DTL.vR4.Model.Resource.Patient> ERROR #5002: ObjectScript error: <METHOD DOES NOT EXIST>Transform+18^osuwmc.FHIR.PatientResposneToFHIRObject.1 *fromDao,HS.FHIR.DTL.vR4.Model.Resource.Patient

When I would try to transform the tRawJSON to HS.FHIR.DTL.vR4.Model.Resource.Patient using fromDao.

What could I possibly doing wrong? I want to put the JSON into a Class Structure that could be passed back to an HL7 message if needed in the case we need more information that is available via FHIR but not through the standard HL7 interface.

2 comentarios
Comentarios (2)1
Inicie sesión o regístrese para continuar