您好,登錄后才能下訂單哦!
oracle dataguard redo 網絡最佳實踐(簡譯)
oracle dataguard好處:
1 對系統性能影響最小
這里有兩個最高可用架構(MAA)場景配置,在有足夠帶寬的情況下,得出如下結論:
1 DG在紐約和蒙特利爾(300英里的距離,10MS的往返延遲),使用實時模式,在redo 4MB/s生成速率下,可以做到對生產系統5%的性能影響和零數據丟失;
2 在波士頓和倫敦之間(3300英里,100MS往返延遲),使用異步模式,在20MB/s的日志生成速率下,可以做到對系統5%以下的影響;
2 最高級別數據保護模式:
1 同步模式,0數據丟失,兩者的距離建議在百公里左右;
2 異步傳輸模式,適用遠距離,高延遲的環境,例如:從香港到新加坡,超過1600英里,有50MS的延遲,2MB/s的日志生成速率,可以接受3s內的數據失失環境。
3 增強的歸檔日志傳輸:在發生網絡或standby系統故障時,需要重同步時可以被加速。例如:1GB的日志文件需要用歸檔進程傳輸,可以減少至55%的傳輸時間,在快速重同步的過程中,關鍵數據是處于一種保護模式的;
3 快速的switchover/failover,秒級切換
REDO傳送最佳實踐
DG提供了三種傳輸方式:arch,lgwr async,lgwr sync,下面描述這幾種方式對網絡需求和最佳配置。
1 帶寬選擇
根據awr reports:3MB/s的在高峰期,需要3*8*1024*1024/1000/1000=25.2Mbps,通常來說53KM增加1ms的延遲,同時還得考慮網絡中繼器,系統性能,網絡自有的包流量。為了測試RTT的延遲,可以用traceroute跟蹤一下;
2 DATAGuard的保護模式設置
如果用LGWR SYNC同步模式,如果網絡不足以處理redo的生成量,將會影響生產機的性能;相反,用LGWR ASYNC模式,還是使用online redolog傳輸,在redo生成高峰期超過了網絡流量卻不會對生產系統造成影響。使用ARCH傳輸本地歸檔文件,也不會對生產系統產生影響(但是和lgwr async比,丟失數據的風險的可能性將大大增加)所以一旦網絡間的傳輸方式確定,自行選擇下面的最佳實踐方式:
2.1 ARCH傳輸模式
增加ARCN的進程數量,初始數量為2;log_archive_max_processes控制最大歸檔進程數;在oracle 10.2以后的版本中,這個值最大為30,以前的版本最大為10;ARCn進程可以加快處理archive gap。當主機端設置了MAX_CONNECTIONS參數,大量的ARCn進程可以加快并行處理,
注意:
a) log_archive_max_Processes會和其它程序爭奪相同的網絡資源,建議根據實際網絡和ARCHIVE GAP場景設置最優的log_archive_max_processes;
b)
源端max_connections設置大于等于2,這樣可以減少archive log的傳輸時間,此值最大為5;
2.2 lgwr async傳輸模式;
從oracle 10.2開始,生產庫需保證有足夠的I/O帶寬用于LNS處理在線事務日志。在性能測試中測出額外的讀取量;
2.3 LGWR SYNC Redo傳輸
設置NET_TIMEOUT屬性(生產庫的網絡服務對LGWR請求的響應時間等待多少秒,以減少網絡丟包對生產庫的影響;
在oracle 10.2里NET_TIMEOUT值為180秒;官方推薦此值的最低值為10秒,當然你可以設成最小值1秒,但是如果網絡不穩定延遲會導致數據保護模式的不停切換;
使用lgwr sync方式,事務提交時會確認本地和遠端的數據庫;針對兩種提交方式:commit wait&commit nowait :commit nowait方式可以只返回給應用程序結果而不用去確認redo是否寫到磁盤了;因此commit nowait和默認的wait值相比可以改善應用或事務的響應時間。
除此之外還注意:
1 配置單次1MB 的I/O寫滿寫入請求,詳細在見Best practices for creating a low Cost Storage Grid for oracle Databases;
2 standby redlog在快速磁盤上;
3 不要一組多個standby redolog,如果多個的話,會增加額外的寫請求;
網絡最佳實踐
說明:以下所有設置針對Linux,其他平臺設置自行參考
1 主備之間的帶寬一定要足夠
2 配置RECV_BUF_SIZE,SEND_BUF_SIZE等于3倍的BDP(bandwidth delay product,傳播時延*網絡帶寬),這個可以增加網絡的帶寬流量;
譯者注:
RECV_BUF_SIZE:在TCP/IP/SSL協議里,以字節方式指定會話的接受緩沖區
配置:sqlnet.ora
net_service_name= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521) (RECV_BUF_SIZE=11784)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521) (RECV_BUF_SIZE=11784)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))
SEND_BUF_SIZE類似;
參考:http://docs.oracle.com/cd/E11882_01/network.112/e10835/tnsnames.htm#NETRF274
3 配置SDU(Session data unit)=32767
4 增加網絡設備的隊列大小。如linux增加TXQUEUELENGTH,NET_DEV_MAX_BACKLOG
TXQUEUELENGTH在linux用ifconfig配置網卡時可配:ifconfig eth2 TXQUEUELENGTH 5000,
啟動時就設置
vi /etc/rc.local /sbin/ifconfig eth0 txqueuelen 5000
NET_DEV_MAX_BACKLOG屬于內核參數,
vi /etc/sysctl.conf net.core.netdev_max_backlog = 32768
5 配置orcle Net TCP_NODELAY=yes
oracle SDU(session data unit)大小說明
通過網絡傳送數據時,oracle的網絡組件會緩沖SDU。當大量的或者連續的數據需要傳送時,增加SDU緩沖區可以提高網絡的利用率。
SDU的配置
vi sqlnet.ora default_sdu_size=32767 在配置tnsnames.ora也可以: sales.us.acme.com= (DESCRIPTION= (SDU=32767) (ADDRESS=(PROTOCOL=tcp) (HOST=sales-server) (PORT=1521)) (CONNECT_DATA= (SID=sales.us.acme.com)) )
配置listener.ora
SID_LIST_listener_name= (SID_LIST= (SID_DESC= (SDU=32767) (GLOBAL_DBNAME=sales.us.acme.com) (SID_NAME=sales) (ORACLE_HOME=/usr/oracle)))
TCP套接字緩沖區大小
TCP套接字區緩沖區控制網絡帶寬的可用量,其并不考慮網絡中可使用的實際帶寬。當網絡延遲比較高時,較大的套接字緩沖區可更有效的利用網絡帶寬;
BDP大小測算:
BDP= 1,000 Mbps * 25msec (.025 sec)
1,000,000,000 * .025
25,000,000 Megabits / 8 = 3,125,000 bytes
套接字區緩沖區=3*BDP
socket buffer size = 3 * bandwidth * delay
= 3,125,000 * 3
= 9,375,000 bytes
套接字區緩沖區由應用程序控制,這里是oracle 的網絡服務控制;編輯sqlnet.ora
RECV_BUF_SIZE=9375000
SEND_BUF_SIZE=9375000
或者配置服務名:
vi tnsnames.ora standby = (DESCRIPTION= (SEND_BUF_SIZE=9375000) (RECV_BUF_SIZE=9375000) (ADDRESS=(PROTOCOL=tcp) (HOST=hr1-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=standby)))
配置監聽文件listener.ora
LISTENER= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp) (HOST=sales-server)(PORT=1521 (SEND_BUF_SIZE=9375000) (RECV_BUF_SIZE=9375000)))
未完......
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。