(8.0.28)
https://mita2db.hateblo.jp/entry/2020/08/30/193650
https://github.com/Percona-Lab/query-playback
Percona Playback
ソースDB: mmm066
ターゲットDB: mmm128
-- 1. Percona Playbackインストール[mmm128で実行]
git clone https://github.com/Percona-Lab/query-playback.git
yum -y install tbb tbb-devel cmake boost boost-devel gcc gcc-c++ doxygen mysql-community-devel mysql-community-libs-compat
cd query-playback
mkdir build_dir
cd build_dir
cmake -DMYSQL_LIB=/usr/lib64/mysql/libmysqlclient.so -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make
make test
make install
-- 2. ワークロード記録[mmm066で実行]
vim /etc/my.cnf
general_log=1
general_log_file="/var/lib/mysql/general.log"
systemctl restart mysqld
show variables like '%log%';
-- 3. ワークロード実行[mmm066で実行]
select concat('delete from ',table_name,';') from information_schema.tables where table_schema=database();
-- 4. ワークロードが記録された一般クエリログをコピー
scp /var/lib/mysql/general.log mmm128:/var/lib/mysql
-- 5. ワークロード再実行[mmm128で実行]
/usr/local/bin/percona-playback \
--input-plugin general-log \
--general-log-file /var/lib/mysql/general.log \
--mysql-host localhost \
--mysql-user root \
--mysql-password 'password' \
--mysql-schema test \
--mysql-max-retries=0
(19c)
https://docs.oracle.com/cd/F19136_01/ratug/database-replay.html#GUID-C5CAF3E6-0F1C-4BD6-BC03-F71744AD600E
https://qiita.com/ts_carp/items/da4d4a4488568231a63f
データベース・ワークロードのリプレイ
ソースDB: mmm065
リプレイクライアント: mmm127
ターゲットDB: mmm128
-- 1.ワークロードの取得[mmm065での作業]
-- 作業ディレクトリ作成(OS)
mkdir /home/oracle/cap_dir
-- 作業ディレクトリ作成
-- CDBに接続
conn / as sysdba
create or replace directory cap_dir as '/home/oracle/cap_dir';
-- フィルター作成
BEGIN
DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
fname => 'FILTER01',
fattribute => 'USER',
fvalue => 'TEST');
END;
/
select * from DBA_WORKLOAD_FILTERS;
-- キャプチャ開始
BEGIN
DBMS_WORKLOAD_CAPTURE.START_CAPTURE (
NAME => 'CAPTURE01',
DIR => 'CAP_DIR',
DEFAULT_ACTION => 'EXCLUDE',
PLSQL_MODE => 'EXTENDED');
END;
/
select * from DBA_WORKLOAD_CAPTURES;
select id,AWR_BEGIN_SNAP,AWR_END_SNAP from dba_workload_captures;
-- ワークロード実行
-- PDBに接続
conn test/test@pdb1
select 'delete from ' || table_name || ';' from user_tables;
-- キャプチャ停止
-- CDBに接続
conn / as sysdba
BEGIN
DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE();
END;
/
-- 2. ワークロードの事前処理[mmm128での作業]
-- ソースDBからターゲットDBへcap_dirをコピー
cd
tar cvzf cap_dir.tgz cap_dir
scp cap_dir.tgz mmm128:/home/oracle
cd
tar xvzf cap_dir.tgz
-- 作業ディレクトリ作成
-- CDBに接続
conn / as sysdba
create or replace directory cap_dir as '/home/oracle/cap_dir';
-- ワークロードの前処理
begin
DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE(capture_dir => 'CAP_DIR');
END;
/
wrc mode=calibrate replaydir=/home/oracle/cap_dir
-- 3. ワークロードのリプレイ[ほぼmmm128での作業]
-- ターゲットDBからクライアントへcap_dirをコピー
cd
tar cvzf cap_dir.tgz cap_dir
scp cap_dir.tgz mmm127:/home/oracle
cd
tar xvzf cap_dir.tgz
-- リプレイ初期化
-- CDBに接続
conn / as sysdba
BEGIN
DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY (replay_name => 'REPLAY01', replay_dir => 'CAP_DIR');
END;
/
-- 接続の再マッピング
select * from dba_workload_connection_map;
BEGIN
DBMS_WORKLOAD_REPLAY.REMAP_CONNECTION(connection_id => 1,
replay_connection => 'mmm128:1521/pdb1.example.com' );
END;
/
select * from dba_workload_connection_map;
-- リプレイ準備
BEGIN
DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY (synchronization => TRUE,
connect_time_scale => 100,
think_time_scale => 100,
think_time_auto_correct => TRUE,
capture_sts => FALSE);
END;
/
select * from dba_workload_replays;
-- リプレイクライアントの起動[mmm127での作業]
-- CDBに接続
wrc system/oracle@mmm128:1521/orcl.example.com mode=replay replaydir=/home/oracle/cap_dir
-- リプレイ開始
-- CDBに接続
conn / as sysdba
BEGIN
DBMS_WORKLOAD_REPLAY.START_REPLAY();
END;
/
select * from dba_workload_replays;
-- 結果確認
-- PDBに接続
conn test/test@pdb1
select count(*) from tab1;
select count(*) from tab100;
--4. 分析およびレポート[mmm128での作業]
-- CDBに接続
conn / as sysdba
select * from dba_workload_replays;
set long 400000
set longchunksize 400000
select dbms_workload_replay.report( 1, 'TEXT') report from dual;
(14)
https://qiita.com/oyamata/items/915a391268c5600bbe24
https://github.com/laurenz/pgreplay
pgreplay
ソースDB: mmm070
ターゲットDB: mmm172
-- 1. pgreplay インストール[mmm172で実行]
su - postgres
git clone https://github.com/laurenz/pgreplay.git
cd pgreplay
./configure --with-postgres=/usr/pgsql-14/bin
make PG_CONFIG=/usr/pgsql-14/bin/pg_config
sudo make PG_CONFIG=/usr/pgsql-14/bin/pg_config install
/usr/pgsql-14/bin/pgreplay -v
-- 2. ワークロード記録[mmm070で実行]
su - postgres
mkdir -p /var/lib/pgsql/pgreplay_log
vim $PGDATA/postgresql.conf
log_directory = '/var/lib/pgsql/pgreplay_log'
log_min_messages = error
log_min_error_statement = log
log_connections = on
log_disconnections = on
log_line_prefix = '%m|%u|%d|%c|'
log_statement = 'all'
log_destination = 'csvlog'
sudo systemctl restart postgresql-14
-- 3. ワークロード実行[mmm070で実行]
psql test
\pset pager 0
select 'delete from ' || tablename || ' ;' from pg_tables where schemaname = 'public';
-- 4. ワークロードが記録されたPostgreSQLログファイルをコピー
cd
tar cvzf pgreplay_log.tgz pgreplay_log
scp pgreplay_log.tgz mmm172:/var/lib/pgsql
cd
tar xvzf pgreplay_log.tgz
-- 5. ワークロード再実行[mmm172で実行]
/usr/pgsql-14/bin/pgreplay \
-c \
-j \
-b "2022-03-25 22:33:00.000 JST" \
-e "2022-03-25 22:35:00.000 JST" \
-D test \
/var/lib/pgsql/pgreplay_log/postgresql-Fri.csv
(2014)
https://docs.microsoft.com/ja-jp/sql/tools/distributed-replay/sql-server-distributed-replay?view=sql-server-ver15
https://blog.engineer-memo.com/2011/11/04/sql-server-2012-ctp3-%E3%81%AE-distributed-replay-%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F/
https://stackoverflow.com/questions/61892063/cannot-find-dreplay-exe-for-sql-server-2019
https://www.sqlshack.com/how-to-install-configure-and-use-sql-server-distributed-replay/
2019の場合、[機能の選択] ページに[管理ツール - 基本] がなく、下記がインストール不可の模様。CLIでも不可
DReplay.exe
DReplay.exe.preprocess.config
DReplay.exe.replay.config
2017や2016も同様
ADドメイン名: contoso.com
mmm191: 分散再生コントローラ、ドメインコントローラ、トレース取得サーバ
mmm192: 分散再生クライアント
mmm193: ターゲットサーバ
1. ActiveDirecotryのインストール[mmm191]
サーバの役割の追加から「ActiveDirecotryドメインサービス」を追加
「このサーバーをドメインコントローラーに昇格する」で、ドメインコントローラーに昇格
2. ドメインへの参加[mmm192,mmm193]
mmm192,mmm193のDNSとしてADマシンのIPを指定
システムのプロパティからドメインに参加
3. SQL Server実行ユーザーの作成[mmm191]
ActiveDirectoryユーザーとコンピューターから、ユーザー(sqlservice)を追加
データベースエンジンや分散再生のサービスアカウントとして使用する
所属するグループ:Administrators,Domain Users
4. SQLサーバのインストール[mmm191,mmm192,mmm193]
mmm191 →
機能: データベースエンジンサービス、分散再生コントローラー、管理ツール
認証モード: Windows 認証モード
SQL Server管理者: Administrator
分散再生コントローラーの権限を持つユーザ: sqlservice
mmm192 →
機能: 分散再生クライアント、管理ツール
分散再生クライアント:
コントローラー名: mmm191
作業ディレクトリ: C:\Program Files (x86)\Microsoft SQL Server\DReplayClient\WorkingDir\
結果ディレクトリ: C:\Program Files (x86)\Microsoft SQL Server\DReplayClient\ResultDir\
mmm193 →
機能: データベースエンジンサービス、管理ツール
認証モード: Windows 認証モード
SQL Server管理者: Administrator
5. ターゲットサーバDBのログインにsqlserviceアカウント追加[mmm193]
After you install the SQL Server Distributed Replay client service on a set of computers,
the security principal used for those service accounts must be granted the sysadmin server role
on the instance of SQL Server that you intend to replay the trace workload against.
This step is not performed automatically during Distributed Replay Setup.
ログインとしてsqlserviceを追加し、sysadminサーバーロールを追加する
USE [master]
GO
CREATE LOGIN [CONTOSO\sqlservice] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
ALTER SERVER ROLE [sysadmin] ADD MEMBER [CONTOSO\sqlservice]
GO
6. DCOM 権限の設定[mmm191]
dcomcnfg.exe
コンポーネントサービス→コンピューター→マイコンピューター→DCOMの構成
DReplayControllerのプロパティ→セキュリティタブ
sqlserviceアカウントとAdministratorアカウントに対して下記を許可する
起動とアクティブ化のアクセス許可
ローカルからの起動
リモートからの起動
ローカルからのアクティブ化
リモートからのアクティブ化
アクセス許可
ローカルアクセス
リモートアクセス
7. 分散再生コントローラの設定[mmm191]
SQL Server Distributed Replay Controllerサービスを起動。
MSSQLSERVERサービスを起動。(自動で起動できない。ドメインコントローラの影響か)
notepad "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\DReplayController\DReplayController.config"
デフォルトから変更なし
<?xml version="1.0" encoding="utf-8"?>
<Options>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
notepad "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\DReplay.Exe.Preprocess.config"
デフォルトから変更なし
<?xml version="1.0" encoding="utf-8"?>
<Options>
<PreprocessModifiers>
<IncSystemSession>No</IncSystemSession>
<MaxIdleTime>-1</MaxIdleTime>
</PreprocessModifiers>
</Options>
cd "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn"
Dreplay.exe status -m mmm191.contoso.com
8. 分散再生クライアントの設定[mmm192]
SQL Server Distributed Replay Clientサービスを起動。
notepad "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\DReplayClient\DReplayClient.config"
デフォルトから変更なし
<?xml version="1.0" encoding="utf-8"?>
<Options>
<Controller>mmm191.contoso.com</Controller>
<WorkingDirectory>C:\Program Files (x86)\Microsoft SQL Server\120\Tools\DReplayClient\WorkingDir\</WorkingDirectory>
<ResultDirectory>C:\Program Files (x86)\Microsoft SQL Server\120\Tools\DReplayClient\ResultDir\</ResultDirectory>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
notepad "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\DReplay.Exe.Replay.config"
Serverパラメータを修正
<?xml version="1.0" encoding="utf-8"?>
<Options>
<ReplayOptions>
<Server>mmm193</Server>
<SequencingMode>stress</SequencingMode>
<ConnectTimeScale>100</ConnectTimeScale>
<ThinkTimeScale>100</ThinkTimeScale>
<HealthmonInterval>60</HealthmonInterval>
<QueryTimeout>3600</QueryTimeout>
<ThreadsPerClient>255</ThreadsPerClient>
<EnableConnectionPooling>No</EnableConnectionPooling>
<StressScaleGranularity>SPID</StressScaleGranularity>
</ReplayOptions>
<OutputOptions>
<ResultTrace>
<RecordRowCount>Yes</RecordRowCount>
<RecordResultSet>No</RecordResultSet>
</ResultTrace>
</OutputOptions>
</Options>
cd "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn"
Dreplay.exe status -m mmm191.contoso.com
9. DBの設定
トレース取得サーバで
テスト用のデータベース、テーブル、データを作成し、DBバックアップを取得
create database test;
backup database test
to disk = 'C:\backup\bk01.bak'
with format,
medianame = 'bk01',
name = 'bk01';
ターゲットサーバでリストア
restore database test
from disk = 'C:\backup\bk01.bak'
with recovery;
10. トレースの取得[mmm191]
負荷をかけながら
TSQL_Replayテンプレートを使用してSQL Server Profilerでトレースを取得
※TSQLのイベントを追加する
11. トレースの変換[mmm191]
mkdir C:\temp
cd "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn"
Dreplay.exe preprocess -m mmm191.contoso.com -i C:\temp\test.trc -d C:\temp
下記ファイルが作成される
TraceStats.xml
ReplayEvents.irf
12. トレースの再生[mmm191]
cd "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn"
Dreplay.exe replay -m mmm191.contoso.com -d C:\temp -o -w "MMM192" -s "MMM193"