dataguard是一種資料庫級別的ha方案,最主要功能是冗災、資料保護、故障恢復等。
在生產資料庫的"事務一致性"時,使用生產庫的物理全備份(或物理copy)建立備庫,備庫會通過生產庫傳輸過來的歸檔日誌(或重做條目)自動維護備用資料庫。將重做資料應用到備用庫。本文介紹使用rman備份建立備庫(dataguard).
一:.環境
1.軟體環境
作業系統red linux enterprise as 5
資料庫版本oracle 10g release 2
2.primary databae
ip:192.168.18.1
oracle_sid=db1
db_unique_name=db1
3.standby database
ip:192.168.18.2
oracle_sid=standby
db_unique_name=standby
二,主資料庫(db1)做準備
1.設定主資料庫為force logging
sql> alter database force logging;
2.建立密碼檔案
cd $oracle_home/dbs/
orapwd file=orapwdb1 password=123456 force=y
3.修改主庫的初始化引數
alter system set log_archive_config='dg_config=(db1,standby)' scope=both;
alter system set log_archive_dest_1='location=/u01/db1/arch' scope=both;
alter system set db_unique_name='db1' scope=both;
5.生成資料庫備份
rman> connect target sys/123456
rman> backup database format='/oracle/rmanback/%d_%s.dbf' plus archivelog;
[oracle@oracle rmanback]$ ls
db1_1.dbf db1_2.dbf
6.生成備庫的control file
sql>alter database create standby controlfile as '/oracle/rmanback/ctontrl01.ctl
7.配置listener.ora 和tnsnames.ora檔案
啟動lintener.ora,
[oracle@oracle dbs]$ lsnrctl status
lsnrctl for linux: version 10.2.0.4.0 - production on 14-jun-2009 02:54:29
service "db1" has 1 instance(s).
instance "db1", status ready, has 1 handler(s) for this service...
service "db1_xpt" has 1 instance(s).
instance "db1", status ready, has 1 handler(s) for this service...
the command completed successfully
配置rnsnames.ora
vi $oracle_home/network/admin/tnsnames.ora
db1 =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.18.1)(port = 1521))
)
(connect_data =
(service_name = db1)
standby =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.18.2)(port = 1521))
)
(connect_data =
(service_name = standby)
)
)
三.建立standby database
1.設定環境變數並安裝oracle軟體
#環境變數設成與主庫一樣
#只安裝軟體不安裝庫
./runinstaller –silent –responsefile /tmp/installoracle.rsp
2.建立相關的目錄
mkdir –p $oracle_base/admin/
cd $oracle_base/admin/oracle_sid
mkdir adump bdump cdump dpdump udump
3.建立密碼檔案
cd $oracle_home/dbs/
orapwd file=orapwsid password=123456 force=y
# 注要密碼要與主庫的一樣
, 否則會歸檔失敗
3.建立引數檔案(pfile)
db_name = standby
shared_pool_size = 120m
undo_management = auto
undo_tablespace = undotbs
sga_max_size = 200m
sga_target = 160m
db_2k_cache_size = 4m
standby_file_management=auto
fal_server='db1'
fal_client='standby'
log_archive_dest_2='service=db1 reopen=300'
log_archive_dest_state_1='enable'
log_archive_dest_state_2='enable'
4.cp主資料庫rman備份及控制檔案到備庫
注意:備份存放位置要與primary database rman備份檔案的位置相同. 控制檔案存放位置要與生成standby database controlfile的位置相同
scp /oracle/rmanback/*.dbf [email protected]:/oracle/rmanback/
scp /oracle/rmanback/*.ctl [email protected]:/oracle/oracle/oradata/standby/
5.利用備用的控制檔案,把備用資料庫啟到mount
sql>connect / as sysdba
connnpcted to an idle instance.
sql>startup nomount pfile=$oracle_home/dbs/initstandby.ora
sql>alter database mount standby database;
6. 配置listener.ora 和tnsnames.ora檔案.
與主庫相同啟動listener,tnsnames.ora也與主庫配置的一樣,
當主備庫的監聽都啟動後,進行測試,以例下面能順利進行
tnsping db1
tnsping standby
sql> sqlplus sys/123456@db1
sql> sqlplus sys/123456@standby
7.轉儲資料庫
rman>connect target /
connected to target database:test(dbid=788075692)
rman> restore database
8.
恢復資料庫。
sql>recover managed standby database disconnect from session;
#如果有需要
應用的日誌並想手工
應用,可以執行如下命令
sql>recover automatic standby database;
9.檢查standby database是否建立成功
1.在primary database 上切換日誌
sql> alter system switch logfile
2.在primary database上執行下面的語句
sql> select max(sequence#) from v$archived_log;
max(sequence#)
--------------
17
3. 在standby database上執行下面的語句
--------------------- ---
15 yes
16 yes
17 yes
10. 以spfile啟動並設為唯讀
sql> create spfile from pfile;
sql> shutdown immedaite
sql> startup mount
sql> alter database recover managed standby database disconnect from session;
sql> alter database open read only;
高可用之 降級
降級的最終目的是保證核心服務可用,即使是有損的。有些伺服器無法降級 加入購物車 結算等 降級也需要根據系統的吞吐量 響應時間 可用率等條件進行手工降級或自動降級。降級按照是否自動化可分為 自動開關降級和人工開關降級。降級按照功能可分為 讀服務降級和寫服務降級。降級按照處於的系統層次可分為 多級降級。...
keepalived高可用之nginx實戰
以nginx為例 安裝兩台nginx及keepalived配置高可用 兩台安裝nginx,我這邊以原始碼安裝為例 yum安裝nginx 原始碼安裝nginx 安裝完成後啟動,關閉防火牆及selinux 兩台安裝keepalived yum install y keepalived修改配置檔案 刪除所...
MHA高可用之VIP漂移
1.vip漂移的兩種方式1.keeplaived的方式 2.mha自帶的指令碼進行vip漂移2.配置mha讀取vip漂移指令碼 編輯配置檔案 在 server default 標籤下新增 server default 使用mha自帶指令碼 master ip failover script serv...