フィジカルスタンバイ/最大パフォーマンス
フィジカルスタンバイ/最大保護
ロジカルスタンバイ/最大パフォーマンス
ロジカルスタンバイ/最大保護
最大保護と最大パフォーマンスの中間に最大可用性がある
(1)フィジカルスタンバイ/最大パフォーマンス
レプリケーション設定の項参照
(2)フィジカルスタンバイ/最大保護
前提:フィジカルスタンバイ/最大パフォーマンス構築済
--最大パフォーマンス→最大保護にする場合
SELECT PROTECTION_MODE FROM V$DATABASE;
--1.プライマリ側
alter system set log_archive_dest_2 ='SERVICE=stb SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stb';
shutdown immediate;
--2.スタンバイ側
alter system set log_archive_dest_2 ='SERVICE=orcl SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl';
shutdown immediate;
--3.プライマリ側
startup mount;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
--4.スタンバイ側
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
--5.プライマリ側
alter database open;
--最大保護→最大パフォーマンスにする場合
SELECT PROTECTION_MODE FROM V$DATABASE;
--1.プライマリ側
alter system set log_archive_dest_2 ='SERVICE=stb ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stb' scope=spfile;
shutdown immediate;
--2.スタンバイ側
alter system set log_archive_dest_2 ='SERVICE=orcl ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=spfile;
shutdown immediate;
--3.プライマリ側
startup mount;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
alter database open;
--4.スタンバイ側
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
(3)ロジカルスタンバイ/最大パフォーマンス
前提:フィジカルスタンバイ/最大パフォーマンス構築済。リスナー起動済
--1.ロジカル・スタンバイ・データベースの作成要件(node1)
SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE
WHERE (OWNER, TABLE_NAME) NOT IN
(SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)
AND BAD_COLUMN = 'Y';
--2.フィジカル・スタンバイ・データベースでのREDO Applyの停止(node2)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--3.ロールの推移のためのプライマリ・データベースの準備(node1)
mkdir -p /u01/app/oracle/oradata/orcl/arc2
alter system set log_archive_dest_1 ='LOCATION=/u01/app/oracle/oradata/orcl/arc VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=both;
alter system set log_archive_dest_3 ='LOCATION=/u01/app/oracle/oradata/orcl/arc2 VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=orcl' scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both;
--4.REDOデータでのディクショナリの構築(node1)
EXECUTE DBMS_LOGSTDBY.BUILD;
--5.ロジカル・スタンバイ・データベースへの変換(node2)
ALTER DATABASE RECOVER TO LOGICAL STANDBY stb;
--6.ロジカル・スタンバイ・データベース用の初期化パラメータの調整(node2)
SHUTDOWN;
STARTUP MOUNT;
mkdir -p /u01/app/oracle/oradata/orcl/arc2
alter system set log_archive_dest_1 ='LOCATION=/u01/app/oracle/oradata/orcl/arc VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=stb' scope=both;
alter system set log_archive_dest_3 ='LOCATION=/u01/app/oracle/oradata/orcl/arc2 VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=stb' scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both;
--7.ロジカル・スタンバイ・データベースのオープン(node2)
ALTER DATABASE OPEN RESETLOGS;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
--8.ロジカル・スタンバイ・データベースが正しく実行されているかどうかの確認(node2)
SELECT SESSION_ID, STATE FROM V$LOGSTDBY_STATE;
(4)ロジカルスタンバイ/最大保護
前提:ロジカルスタンバイ/最大パフォーマンス構築済。リスナー起動済
--最大パフォーマンス→最大保護にする場合
SELECT PROTECTION_MODE FROM V$DATABASE;
--1.プライマリ側
alter system set log_archive_dest_2 ='SERVICE=stb SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stb';
shutdown immediate;
--2.スタンバイ側
alter system set log_archive_dest_2 ='SERVICE=orcl SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl';
shutdown immediate;
--3.プライマリ側
startup mount;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
--4.スタンバイ側
STARTUP;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
--5.プライマリ側
alter database open;
--最大保護→最大パフォーマンスにする場合
SELECT PROTECTION_MODE FROM V$DATABASE;
--1.プライマリ側
alter system set log_archive_dest_2 ='SERVICE=stb ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stb' scope=spfile;
shutdown immediate;
--2.スタンバイ側
alter system set log_archive_dest_2 ='SERVICE=orcl ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl' scope=spfile;
shutdown immediate;
--3.プライマリ側
startup mount;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
alter database open;
--4.スタンバイ側
STARTUP;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
行ベース/非同期
行ベース/準同期
ステートメントベース/非同期
ステートメントベース/準同期
行ベースとステートメントベースの中間に混合ベースがある
(1)非同期→準同期とする場合
--プラグインのインストール[マスターで実施]
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
--プラグインのインストール[スレーブで実施]
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
--準同期レプリケーションを有効化[マスターで実施]
SET GLOBAL rpl_semi_sync_master_enabled = 1;
--準同期レプリケーションを有効化[スレーブで実施]
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
--稼働中のスレーブのI/Oスレッドを再起動[スレーブで実施]
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
--準同期の確認[マスターで実施]
SHOW STATUS LIKE 'Rpl_semi_sync%';
--設定永続化[マスターで実施]
vim /etc/my.cnf
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=20000 # 20 second
--設定永続化[スレーブで実施]
vim /etc/my.cnf
[mysqld]
rpl_semi_sync_slave_enabled=1
--確認[マスターで実施]
show status like 'rpl_semi_sync_master_status';
--確認[スレーブで実施]
show status like 'rpl_semi_sync_slave_status';
(2)行ベース→ステートメントベースにする場合
vim /etc/my.cnf
[mysqld]
#binlog_format=ROW
binlog_format=STATEMENT
ストリーミングレプリケーション/非同期
ストリーミングレプリケーション/同期
ロジカルレプリケーション/非同期
ロジカルレプリケーション/同期
ストリーミングレプリケーションについては「レプリケーション設定」の項参照
ロジカルレプリケーションは(10)から
※ロジカルデコーディングは9.4以降で使用可能。レプリケーションツール名:pglogical
※9.4より前で論理レプリケーション相当の機能が必要の場合Slony-Iを使用する
https://www.sraoss.co.jp/tech-blog/pgsql/slony-i/
(1)ロジカルレプリケーション/非同期
mmm121: パブリッシャ
mmm122: サブスクライバ
前提:mmm121,mmm122にPostgreSQL10をインストール。testデータベース作成。リモート接続許可。
--1.パブリッシャの設定
vim postgresql.conf
wal_level = 'logical'
max_replication_slots = 2
max_wal_senders = 2
vim pg_hba.conf
host test postgres 192.168.137.122/32 trust
psql test -c "create table tab1(col1 int)"
psql test -c "create publication pub1 for table tab1"
--2.サブスクライバの設定
vim postgresql.conf
max_replication_slots = 1
max_sync_workers_per_subscription = 1
max_logical_replication_workers = 2
max_worker_processes = 3
psql test -c "create table tab1(col1 int)"
psql test -c "create subscription sub1 connection 'dbname=test host=192.168.137.121' publication pub1"
--3.動作確認
select * from pg_stat_replication;
select * from pg_stat_subscription;
ps -ef | grep postgres
select * from pg_replication_slots;
(2)ロジカルレプリケーション/同期
mmm121: パブリッシャ
mmm122: サブスクライバ
前提:ロジカルレプリケーション/非同期の設定済
--1.パブリッシャの設定
vim postgresql.conf
synchronous_standby_names = 'sub1'
alwayson 可用性グループ/非同期
alwayson 可用性グループ/同期
レプリケーション/プッシュ
レプリケーション/プル
(1)alwayson 可用性グループ/非同期
レプリケーション設定の項参照
(2)alwayson 可用性グループ/同期
レプリケーション設定の手順の
14.可用性グループの作成において、可用性モードとして「同期コミット」を選択する
非同期→同期とする場合
alter availability group ag1
modify replica on N'mmm192' with (availability_mode = synchronous_commit);
go
alter availability group ag1
modify replica on N'mmm193' with (availability_mode = synchronous_commit);
go
(3)レプリケーション/プッシュ
参考サイト : https://www.ipentec.com/document/sql-server-setup-transaction-replication
mmm141:ディストリビューター、パブリッシャー
mmm142:サブスクライバー
レプリケーショントポロジー:トランザクションレプリケーション
パブリッシャーとサブスクライバーでSQL Server エージェントの自動起動設定およびサービス起動しておく
1.ディストリビューターの設定
[レプリケーション]ノードを選択し[ディストリビューションの構成]をクリック
2.パブリケーションの設定
[レプリケーション]ノード内の[ローカル パブリケーション]ノードを選択します。[新しいパブリケーション]をクリック
3.サブスクリプションの設定
[レプリケーション]ノードの[ローカルサブスクリプション]ノードをクリックして選択
(4)レプリケーション/プル
参考サイト : https://www.ipentec.com/document/sql-server-setup-transaction-replication
mmm141:パブリッシャー
mmm142:ディストリビューター、サブスクライバー
レプリケーショントポロジー:トランザクションレプリケーション
パブリッシャーとサブスクライバーでSQL Server エージェントの自動起動設定およびサービス起動しておく
1.ディストリビューターの設定
[レプリケーション]ノードを選択し[ディストリビューションの構成]をクリック
2.パブリケーションの設定
[レプリケーション]ノード内の[ローカル パブリケーション]ノードを選択します。[新しいパブリケーション]をクリック
3.サブスクリプションの設定
[レプリケーション]ノードの[ローカルサブスクリプション]ノードをクリックして選択