Oracle Dataguard在阿裏雲ecs上的測試
1、資源準備
ecs:8c32g 兩台,後麵會升級成16c64g;4c8g 一台,做為swingbench壓測機
ssd雲盤:4*200g
2、環境部署
2.1 oracle 軟件環境快捷部署
使用袋鼠雲oacle11g鏡像初始化兩台ecs資源
swingbench壓測機隻要上傳swingbench軟件安裝即可。
2.2 存儲環境部署
為提高存儲性能,首先使用1塊ssd做為redo存儲,2塊ssd做為data存儲,1塊做為archivelog的存儲。使用lvm,實現方法如下:
創建vg
vgcreate redovg /dev/vdb
vgcreate datavg /dev/vdc /dev/vdd
vgcreate arcvg /dev/vde
創建lv
lvcreate -n redolv1 -L10G redovg
lvcreate -n arclv1 -L50G arcvg
lvcreate -L 100G -n datalv1 -i 2 -I 8 datavg
格式化
mkfs.ext4 /dev/redovg/redolv1
mkfs.ext4 /dev/arcvg /arclv1
mkfs.ext4 /dev/datavg/datalv1
掛載
mount /dev/mapper/redovg-redolv1 /redo
mount /dev/mapper/datavg-datalv1 /data
mount /dev/mapper/arcvg-arclv1 /arc
/data讀寫測試,95MB/s

time dd if=/dev/mapper/datavg-datalv1 of=/dev/null bs=8k

/arc讀寫測試,48.4MB/s

為提高存儲性能,刪除上述vg,改為4盤並條帶,redo、data、archivelog均存放在上麵。
創建vg
vgcreate datavg /dev/vdb /dev/vdc /dev/vdd /dev/vde
創建lv
lvcreate -L 100G -n datalv1 -i 4 -I 8 datavg
lvcreate -L 10G -n redolv1 -i 4 -I 8 datavg
lvcreate -L 50G -n arclv1 -i 4 -I 8 datavg
格式化
mkfs.ext4 /dev/datavg/redolv1
mkfs.ext4 /dev/datavg/arclv1
mkfs.ext4 /dev/datavg/datalv1
掛載
mount /dev/mapper/datavg-redolv1 /redo
mount /dev/mapper/datavg-datalv1 /data
mount /dev/mapper/datavg-arclv1 /arc
dd測試169MB/S
time dd if=/dev/mapper/datavg-datalv2 of=test.sdf bs=8k

隻讀380MB/S
time dd if=/dev/mapper/datavg-datalv2 of=/dev/null bs=8k

隻寫300MB/S
time dd if= of=/dev/zero /dev/mapper/datavg-datalv2 bs=8k

總結:
如果用文件係統管理,4塊盤lvm做條帶,讀寫性能不錯,吞吐率可以達到169MB/s
--
mkdir redo
mkdir data1
mkdir arc
mount /dev/datavg/redolv1 /redo
mount /dev/datavg/datalv1 /data1
mount /dev/datavg/arclv1 /arc
chown -R oracle:oinstall /redo
chown -R oracle:oinstall /data1
chown -R oracle:oinstall /arc
3. DG搭建
搭建備庫的步驟不再這裏詳細描述,這裏直接通過拷貝的方式進行
主庫
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclstd)' scope=both;
alter system set LOG_ARCHIVE_DEST_1='LOCATION=/arc/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl';
alter system set log_archive_dest_2='service=orclstd lgwr async valid_for=(online_logfile,primary_role) db_unique_name=orclstd' scope=both;
alter system set fal_client='orclstd' scope=both sid='*';
alter system set fal_server='orcl' scope=both sid='*';
alter system set log_archive_dest_state_2='DEFER' scope=both sid='*';
alter system set memory_max_target=0 scope=spfile;
alter system set memory_target=0 scope=spfile;
alter system set sga_max_size=20G scope=spfile;
alter system set sga_target=20G scope=spfile;
alter system set pga_aggregate_target=2G scope=spfile;
alter system set processes=2000 scope=spfile;
備庫
*.control_files='/data1/stdcotrl1.ctl', '/dat1/stdcotrl2.ctl'
*.db_name=orcl
*.db_unique_name=orclstd
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orclstd)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/arc VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orclstd'
*.log_archive_dest_2='service=orcl lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcl'
*.fal_client='orclstd'
*.fal_server='orcl'
alter database create standby controlfile as '/home/oracle/control_std.bak';
ALTER DATABASE ADD STANDBY LOGFILE GROUP 1 ('/redo/standby_redo_1_01.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 2 ('/redo/standby_redo_1_02.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 3 ('/redo/standby_redo_1_03.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 14 ('/redo/standby_redo_1_04.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 15 ('/redo/standby_redo_1_05.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 16 ('/redo/standby_redo_1_06.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 17 ('/redo/standby_redo_1_07.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 18 ('/redo/standby_redo_1_08.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 9 ('/redo/standby_redo_1_09.log') SIZE 256M ;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/redo/standby_redo_1_10.log') SIZE 256M ;
dg開啟命令
alter database recover managed standby database cancel;
alter database recover managed standby database disconnect from session;
alter database recover managed standby database parallel 16 disconnect from session;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile disconnect from session;
4. 使用swingbench進行壓測
4.1 灌入數據

alter system set LOG_ARCHIVE_DEST_1='LOCATION=/arc' scope=both;
alter database rename file '/u01/app/oracle/oradata/ORCL/system01.dbf' to '/data1/system01.dbf';
alter database rename file '/u01/app/oracle/oradata/ORCL/sysaux01.dbf' to '/data1/sysaux01.dbf‘;
alter database rename file '/u01/app/oracle/oradata/ORCL/undotbs01.dbf' to 'undotbs01.dbf';
alter database rename file '/u01/app/oracle/oradata/ORCL/users01.dbf' to 'users01.dbf’;
4.2 基準測試
吞吐率247MB/s

4.3 同步測試
8c32g
並發 | log模式 | 磁盤模式 | tps | rt | 帶寬占用 |
100 | lgwr+sync | redo*1、data*2、arc*1 | 1054 | 23 | 34Mb/s |
200 | lgwr+sync | redo*1、data*2、arc*1 | 2456 | 30 | 65Mb/s |
300 | lgwr+sync | redo*1、data*2、arc*1 | 2400 | 46 | 80Mb/s |
400 | lgwr+sync | redo*1、data*2、arc*1 | 2500 | 51 | 110Mb/s |
400 | lgwr+async | redo*4、data*4、arc*4 | 3000 | 51 | 111Mb/s |
500 | lgwr+async | redo*4、data*4、arc*4 | 3400 | 62 | 130Mb/s |
16c64g
並發 | log模式 | 磁盤模式 | tps | rt | 帶寬占用 |
400 | lgwr+async | redo*4、data*4、arc*4 | 3800 | 8 | 111Mb/s |
500 | lgwr+async | redo*4、data*4、arc*4 | 5300 | 26 | 130Mb/s |
700 | lgwr+async | redo*4、data*4、arc*4 | 6280 | 51 | 180Mb/s |
5. 總結
8c32g可以支持3400的tps,500的並發,16c64g可以支持6000以上的tps,700以上的並發,ecsvpc環境內網帶寬可達200Mb/s,同步歸檔時網絡不是瓶頸。
在400並發的時候,數據庫等待嚴重,日誌切換形成較大壓力,達到平均11萬ms,此時采取的措施是加redolog組,並把原來分盤存儲的redo、arch、data都改為4塊盤的條帶化;lgwr+sync模式改為lgwr+async模式,log file switch切換等待在top10 中消失。此時可以繼續進行500並發的測試。在沒有特殊要求的情況下,不要求最大保護模式,建議Dataguard使用最大性能模式。
LGWR還分為LGWR ASYNC(異步)和LGWR SYNC(同步)兩種。
最大保護 | 最大可用 | 最大性能 | |
進程 | LGWR | LGWR | LGWR或ARCH |
網絡傳輸模式 | SYNC | SYNC | LGWR時設置ASYNC |
磁盤寫操作 | AFFIRM | AFFIRM | NOAFFIRM |
備用日誌 | YES | 物理備用需要 | LGWR和物理備用時需要 |
備用庫類型 | 物理Standby | 物理或邏輯 | 物理或邏輯 |
最後更新:2017-07-06 17:32:19