Oracle 伺服器遷移的一些經驗
前言
通過此文章來分享一下 Oracle 伺服器遷移過程中的一些經驗,希望對大家有些許幫助。
本文旨在幫助更多的同學,會提及一些基本命令或技巧,但不贅述,後續有機會再進一步分享各個細節。
背景
之前因機房遷移等原因,接手過一些 Oracle 伺服器,並將它們從機房 A 的機器上,遷移到機房 B 的機器上。
備份
經歷過大災大難的都深刻體會到其重要性。然而此處,不只備份資料庫的數據。
什麼? 你們已經通過 Ansible/Salt/腳本將所有配置文件管理及備份等全部自動化了?
英雄所見略同!在遷移過程中,資料庫方面已經逐漸通過 Salt 實現了配置管理自動化。
備份 Linux 系統文件及 Oracle 配置文件
因為配置文件是靜態的,可在遷移前備份一下。要知道,機房遷移完成後,再想看原來的配置,沒有備份,只能悔不當初了。
備份 Linux 系統文件
資料庫相關的 Linux 系統配置文件。
以下系統文件如果 Ops 已經通過 Ansible 或 Salt 等做了自動化管理,此步可略過。
/etc/hosts
/etc/sysctl.conf
/etc/security/limits.conf
其他可能有用的 Linux(CentOS) 系統文件
/etc/*release
/home/oracle/.bash_history
/root/.bash_history
/root/.bash_profile
/root/.bashrc
/etc/yum.repos.d/
/var/spool/cron/
/proc/version
/proc/meminfo
/proc/cpuinfo
/proc/vmstat
/proc/filesystems
/etc/issue
/etc/resolv.conf
/etc/ssh/sshd_config
/etc/ssh/ssh_config
/etc/passwd
/etc/hosts
/etc/sysctl.conf
/etc/pam.d/login
/etc/security/limits.conf
/etc/security/limits.d
/etc/selinux/config
/etc/sudoers
/etc/sudoers.d/
備份 Oracle 相關配置文件
有的系統中也用到了 Oracle Gateway,考慮它安裝配置較獨立且並不十分普遍,此處未列出 Oracle Gateway 相關配置文件。
/home/oracle/.bash_profile
/etc/oraInst.loc
/etc/oratab
$ORA_INVENTORY/orainstRoot.sh
$ORACLE_HOME/root.sh
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/dbs/init*.ora
$ORACLE_HOME/dbs/orapw*.ora
備份 Oracle 資料庫
通過以下各種方式備份,有備無患。此步是在遷移完成,最後停庫關機前的操作。因其也屬於備份,故將其提前至此。
- exp 備份
- expdp 備份
- RMAN 備份
- 導出各個 schema 備份
- 拷貝資料庫文物理件(停資料庫後)
歷史備份遷移
將各種歷史備份( exp,expdp,RMAN 備份等) 從原 rsync 伺服器遷移到新的 rsync 伺服器。
資料庫相關軟體備份
雖然 Oracle 官網有可下載,為避免不必要的麻煩,將安裝軟體也備份一下。況且以後想再找相同版本的軟體,並不一定容易。
如果是按拷貝物理文件的方式遷移,後面想再通過安裝的方式搭建生產或測試環境,就需要這些軟體了。
注: 目前已通過 Salt 實現了 Oracle 一鍵安裝及配置管理自動化,相關軟體也放在了統一的伺服器以實現配置管理自動化。
其他備份
如資料庫伺服器上各種腳本等。
Oracle 高可用
在資料庫遷移過程在有可能用到 Oracle 高可用架構,在此給出其大致結構圖供參考。
Oracle Data Guard
Oracle Fast-Start Failover
Switchover 也類似。
Oracle 資料庫遷移方式
方式一 Dataguard 主從切換
能夠做主從的話,此方式為最佳方式。切換時間短,對業務影響較小。
如受網路等因素影響,兩個機房無法做主從,此方式將不適用。
方式二 通過 RMAN 備份
RMAN 備份,即全量備份,是實例級的備份。如:控制文件,數據文件,archive log 等。
RMAN 是做備份恢復的常用方式。
它可以用於如下場景:
- 資料庫遷移
- 搭建測試環境,根據生產 RMAN 恢復出來
- 做基於時間點(PITR)的恢復
當然,RMAN 功能遠不止於此。
方式三 直接拷貝資料庫文件
前提:相同作業系統版本,相同資料庫版本等
優點:操作相對簡單,除安裝必要的依賴包外,只需複製文件即可
注意:額的資料庫版本在拷貝資料庫文件後有可能不需要額外處理,有的則可能需要作進一步處理,如執行 clone.pl
等命令。
配置文件
/home/oracle/.bash_profile
/etc/oratab
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/dbs/init*.ora
$ORACLE_HOME/dbs/orapw*.ora
控制文件
通過以下 SQL 查詢控制文件位置
SELECT name FROM v$controlfile;
數據目錄
${ORACLE_BASE}/oradata
${ORACLE_BASE}/fast_recovery_area
有的數據目錄放在了單獨的硬碟(如 SSD)上,可以通過 SQL查詢數據文件位置
SELECT name FROM v$datafile;
archive log
通過如下 SQL 查詢 archive log 位置
ARCHIVE LOG LIST;
SHOW PARAMETER arch;
方式四 通過 exp 或 expdp 備份
跨平台的可以考慮這種方式。如從 Windows 遷移到 Linux上。
此次遷移中,一些單機的資料庫採用了此種方式。
方式五 其他
如通過 Golden Gate 等。
Oracle Gateway
一些系統中用到了Oracle Gateway。
如果需要從 Oracle 訪問 其他類型資料庫(如 SQL Server),就需要安裝配置 Oracle Gateway 了。
定時任務
各個用戶下的各個定時任務及相關腳本也需要注意遷移到新的機器。
配置文件
由於遷移後機器名可能有變化,所有相關的配置也需要相應修改。
數據傳輸
機房 A 到機房 B 網路是通的,但機房 B 到機房 A 網路是不通的。另外,本地網路可以訪問機房 A 和機房 B 里的機器,但機房 A 里的機器不能通過 ssh 或 scp 訪問機房 B 里的機器。
對於動輒幾百G的數據,通過本地網路下載和上傳無疑是十分低效的。
根據不同情況可以採用如下兩種方法。
網路傳輸神器 – nc
相信很多大牛看到這個名字,已經露出會意的微笑。
nc 的一個優點就是,不需要用戶名密碼,簡單易用,只要網路通即可,並且傳輸效率也是不錯的。
以下是 nc 命令用法示例。
在接收端執行如下命令準備接收:
nc -l 54321| pv |tar -xvf -
在發送端發送文件:
tar -cvf - test.txt |nc test.corp.com 54321
文件同步神器 – rsync
相比 nc 命令,rsync 的以下優勢,也給本次數據遷移帶來了極大便利:
一,增量同步。如幾百G的文件,用 nc 的話,如果中途失敗,還得重頭再來
二,通過 exclude-from 參數可以過慮掉大量的日誌文件或目錄等
rsync 還經常用於備份等,當然,rsync 命令功能及用途遠不止於此。
以下是 rsync 命令用法示例。
rsync -aP /test/dir1 [email protected]::test/
rsync -aP /test/dir1 [email protected]::test/ --password-file=$PASSWORD_FILE --exclude-from="$EXCLUDE_FILE"
相信大家已經注意到上面示例中的遠端路徑 10.20.20.1::test。
是的,rsync 是需要在伺服器端配置的,10.20.20.1::test 就是配置好的路徑。
其配置也較簡單,在此略過。
配置管理自動化
通過上述內容,大家可以看到有大量的人工操作,而且並不一定面面俱到。
如果配置管理(如通過 Ansible 或 Salt 等)做的好的話,會簡單方便很多。
自動化做到極致情況下,Oracle 伺服器遷移所需要做的可能僅有如下這些:
註:目前配置管理自動化所涉及的所有腳本,配置文件等均已提交 git,所有軟體都放在統一的伺服器上。
-
準備工作
在新機器上,跑一下 fresh install 的配置管理自動化腳本,所有的軟體自動安裝,用戶自動創建並配置,作業系統文件等將自動配置好 -
數據遷移
通過以上任一合適的方式遷移資料庫 -
配置管理
在新機器上,跑一下配置管理自動化,所有需要修改的配置及腳本、定時任務等均自動部署
原文鏈接:
//www.cnblogs.com/dbadaily/p/oracle-migration.html
您瀏覽的網址與此鏈接不一致的話,則為未授權的轉載,為了更好的閱讀體驗,建議閱讀原文。
公眾號
關注 DBA Daily 公眾號,第一時間收到文章的更新。
通過一線 DBA 的日常工作,學習實用資料庫技術乾貨!
公眾號優質文章推薦
GitLab supports only PostgreSQL now