パフォーマンスカウンタのネットワークのスケール

スケール調整の覚書

グラフ枠のプロパティ/グラフ/垂直スケール の最大値を100から1000に上げる

NetworkInterface/NIC名/Bytes Sent/sec
 ・・・ GigaNicを積んでいる場合、スケールは0.00001 でxxxMB/s
     ※グラフ赤線

NetworkInterface/NIC名/Packet Sent/sec
 ・・・ GigaNicを積んでいる場合、スケールは0.001 でxxxMbps
     ※グラフ黄緑線

perfmon_20160913

RDS for SQL Serverのフルバック機能を検証する

先日、AWSのRDS for SQLServerのフルバックアップがS3のバケット上に置けるようになったので、触ってみる。
現時点ではトランザクションログバックアップが出来ないが、S3を使うことによりオンプレ環境から取得したフルバックアップのリストアや、解析用にフルバックアップを別サーバーにリストアするなど、
利用用途が増える。

参考:
Amazon RDS for SQL Server – Amazon S3 でネイティブバックアップと復元をサポート
Importing and Exporting SQL Server Databases

事前準備:
リンク先に記載の通り、S3のバケット作成とIAMロールの作成を行う。
S3のバケット作成とIAMロールの作成は、RDSのオプショングループの作成画面からも行える。
ちなみに、default:sqlserver-xx グループには、オプションを追加することが出来ないので新規でオプショングループを準備する。

rds_s3_1

rds_s3_2

作成したオプショングループをインスタンスに割り当て、インスタンスの再起動を行うとRDS for SQLServerからS3へのアクセスが可能になる。

S3操作:
S3への操作は、AWSが準備したストアドプロシージャを実行する。

【フルバックアップ取得】
[sql]
exec msdb.dbo.rds_backup_database
@source_db_name=’DBスキーマ名’,
@s3_arn_to_backup_to=’arn:aws:s3:::S3バケット名/ファイル名.bk’,
@overwrite_S3_backup_file=1;
[/sql]

【DBリストア】
[sql]
exec msdb.dbo.rds_restore_database
@restore_db_name=’DBスキーマ名’,
@s3_arn_to_restore_from=’arn:aws:s3:::S3バケット名/ファイル名.bk’;
[/sql]

【タスク状態確認】
[sql]
exec msdb.dbo.rds_task_status @db_name=’DBスキーマ名’
[/sql]

RDS for SQLServerではメンテナンスプランが使えない為、以下のような処理をエージェントジョブで回すとフルバックアップ取得の代わりになる。
※保持期間を過ぎたバックアップファイルの削除を、lambdaなりAWSCLIなりで行う事。

[sql]
USE msdb

declare @Backet nvarchar(20)
declare @DATE nvarchar(10)
declare @DBNAME nvarchar(30)
declare @BackupFile nvarchar(50)

SET @Backet = ‘s3バケット名’
SET @DATE = (SELECT CONVERT(date, getdate()))

–データベース一覧を取得(master(ID=1),tempdb(ID=2),model(ID=3),msdb(ID=4) 以上)
DECLARE C1_DBNAME CURSOR FOR
SELECT NAME FROM SYS.DATABASES WHERE DATABASE_ID > ‘5’

OPEN C1_DBNAME

FETCH NEXT FROM C1_DBNAME INTO @DBNAME

WHILE (@@FETCH_STATUS = 0)

BEGIN

SET @BackupFile = N’arn:aws:s3:::’ + @Backet + ‘/’ + @DBNAME + ‘_’ + @DATE + ‘.bak’

IF @BackupFile IS NOT NULL
exec msdb.dbo.rds_backup_database
@source_db_name = @DBNAME,
@s3_arn_to_backup_to = @BackupFile,
@overwrite_S3_backup_file = 1;

FETCH NEXT FROM C1_DBNAME INTO @DBNAME
END

CLOSE C1_DBNAME
DEALLOCATE C1_DBNAME

GO
[/sql]

windows2012のQoSが効かない場合の注意点

新規にwindows2012サーバーを準備し、WindowsでポリシーベースのQOSを使ってS3へのアップロードスピードを帯域制御する方法をトレースしてみた。

QoSの設定はこの通りだが、「出力方向のスロットル率を指定する」には注意が必要。

検証では200MBbpsに設定を行ったが、物理1Gの回線環境で800MBps以上トラフィックが流れてしまう。
qos_1

qos_2

MSに問い合わせをして調査、検証を行った結果、

windows2012のインストール時点のQoSのバグっぽい事まで突き止める。
(Windowsアップデートしたら動きが改善されているので、どこかでパッチが当たった模様)

Windowsアップデート前: 制限の設定値の10倍が実際の制限値となる。
 ・ QoSを200MBps(204800 KBps)に制限 → トラフィックが200MBps以上
 ・ QoSを 20MBps(20480 KBps) に制限 → トラフィックは200MBps以下になる

Windowsアップデート後: 制限の設定値と同じ値が実際の制限値となる。
 ・ QoSを200MBps(204800 KBps)に制限 → トラフィックが200MBps以下になる

MSからKB番号の返答が来たら追記します。