基於Docker部署Oracle、MySQL等資料庫的資料檔案持久化
-- docker:如何檢視容器的掛載目錄 docker inspect container_name | grep Mounts -A 8 docker inspect container_id | grep Mounts -A 8 --檢視環境設定 docker inspect -f "{{.Config.Env}}" oracle19clhr The commit operation will not include any data contained in volumes mounted inside the container. commit操作並不會包含容器內掛載資料卷中的資料變化。
總結:透過命令“docker inspect oracle19clhr | grep Destination”查出來的路徑裡邊的檔案不會被commit到新的映象裡邊,所以必須將該路徑下的內容複製到其它地方才行。
參考:
------------------ Docker 安裝19.3企業版 cd / git clone https://github.com/oracle/docker-images.git cd /docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/ wget wget cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/ vi Dockerfile #FROM oraclelinux:7-slim as base FROM centos:7.6.1810 as base .... # Copy files needed during both installation and runtime # ------------- COPY $SETUP_LINUX_FILE $CHECK_SPACE_FILE $INSTALL_DIR/ COPY oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm $INSTALL_DIR/ COPY rlwrap-0.42-1.el6.x86_64.rpm $INSTALL_DIR/ COPY $RUN_FILE $START_FILE $CREATE_DB_FILE $CONFIG_RSP $PWD_FILE $CHECK_DB_FILE $USER_SCRIPTS_FILE $ORACLE_BASE/ .... ## 修改檔案 vi setupLinuxEnv.sh mkdir -p $ORACLE_BASE/scripts/setup && \ mkdir -p $ORACLE_BASE/scripts/startup && \ mkdir -p $ORACLE_BASE/oradata && \ mkdir -p $ORACLE_HOME && \ ln -s $ORACLE_BASE/scripts /docker-entrypoint-initdb.d && \ chmod ug+x $ORACLE_BASE/*.sh && \ yum -y install oracle-database-preinstall-19c openssl && \ yum -y localinstall /opt/install/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm && \ yum -y localinstall /opt/install/rlwrap-0.42-1.el6.x86_64.rpm && \ yum -y install openssl && \ yum -y install openssl-devel && \ yum -y install lsof && \ yum -y install iproute && \ yum -y install net-tools && \ yum -y install rsyslog && \ yum -y install bash-completion && \ yum -y install tmux && \ yum -y install lrzsz && \ yum -y install telnet && \ rm -rf /var/cache/yum && \ ln -s $ORACLE_BASE/$PWD_FILE /home/oracle/ && \ echo oracle:lhr | chpasswd && \ echo root:lhr | chpasswd && \ chown -R oracle:dba $ORACLE_BASE vi installDBBinaries.sh … # Temp location #rm -rf /tmp/* && \ … ./buildDockerImage.sh -v 19.3.0 -e groupadd -g 1300 dba groupadd -g 1301 oper groupadd -g 1302 oinstall useradd -u 54321 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash -c "Oracle Software Owner" oracle echo "lhr" | passwd --stdin oracle mkdir -p /oracle/oradata chown oracle:oinstall /oracle/oradata docker run -e TZ="Asia/Shanghai" -itd -h oracle19clhr --name oracle19clhr \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=DCLHR \ -e ORACLE_PDB=LHRPDB1 \ -e ORACLE_PWD=lhr \ -e ORACLE_CHARACTERSET=AL32UTF8 \ -v /oracle/oradata:/opt/oracle/oradata \ oracle/database:19.3.0-ee docker logs -f oracle19clhr --修改密碼 docker exec <container name> ./setPassword.sh <your password> docker exec -it oracle19clhr /bin/bash export ORACLE_SID=DCLHR sqlplus / as sysdba sqlplus sys/lhr@121.36.78.6/DCLHR AS sysdba sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba sqlplus system/<your password>@//localhost:1521/<your SID> sqlplus pdbadmin/<your password>@//localhost:1521/<Your PDB name> vi ~/.bash_profile export ORACLE_SID=DCLHR export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin export EDITOR=vi stty erase ^H alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' alias sas='sqlplus / as sysdba' source ~/.bash_profile vi /etc/pam.d/su 註釋:#session include system-auth vi $ORACLE_HOME/sqlplus/admin/glogin.sql set linesize 1000 pagesize 1000 set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> " vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = DCLHR) (SID_NAME = DCLHR) (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) ) ) lsnrctl reload ---------- 修改資料庫資料檔案路徑,便於打包傳播 # docker inspect oracle19clhr | grep Destination [root@ecs-rac1 ~]# docker inspect oracle19clhr | grep Mounts -A 8 "Mounts": [ { "Type": "bind", "Source": "/oracle/oradata", "Destination": "/opt/oracle/oradata", "Mode": "", "RW": true, "Propagation": "rprivate" } 所有在目錄“/opt/oracle/oradata”下的檔案都需要移動到容器內的其他地方,否則匯出匯入容器這些檔案不會移動。 關閉資料庫後進行操作 mkdir -p /oracle/oradata19c chown oracle.oinstall /oracle/oradata19c chown -R oracle.oinstall /oracle/oradata19c cp -R * /oracle/oradata19c/ 複製listener.ora、sqlnet.ora、tnsnames.ora、orapwDCLHR、spfileDCLHR.ora至相應位置,取消原有的硬連線。 startup nomount alter system set control_files='/oracle/oradata19c/DCLHR/control01.ctl' scope=spfile; startup force mount select 'alter database rename file '''||name||''' to ''' || name || ''';' from v$datafile; alter database rename file '/opt/oracle/oradata/DCLHR/redo01.log' to '/oracle/oradata19c/DCLHR/redo01.log'; alter database rename file '/opt/oracle/oradata/DCLHR/redo02.log' to '/oracle/oradata19c/DCLHR/redo02.log'; alter database rename file '/opt/oracle/oradata/DCLHR/redo03.log' to '/oracle/oradata19c/DCLHR/redo03.log'; alter database rename file '/opt/oracle/oradata/DCLHR/system01.dbf' to '/oracle/oradata19c/DCLHR/system01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/sysaux01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/undotbs01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/system01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/system01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/sysaux01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/users01.dbf' to '/oracle/oradata19c/DCLHR/users01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/pdbseed/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/pdbseed/undotbs01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/system01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/system01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/sysaux01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/sysaux01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/undotbs01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/undotbs01.dbf'; alter database rename file '/opt/oracle/oradata/DCLHR/LHRPDB1/users01.dbf' to '/oracle/oradata19c/DCLHR/LHRPDB1/users01.dbf'; ALTER datatabase open; ---保證資料庫正常 -- 還可以自己在容器內新建資料庫 su - root mkdir -p /u01/app/oracle/oradata mkdir -p /u01/app/oracle/flash_recovery_area chown oracle.dba /u01/app/oracle/oradata chown oracle.dba /u01/app/oracle/flash_recovery_area su - oracle dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \ -gdbname lhrdb -sid lhrdb \ -createAsContainerDatabase false \ -sysPassword lhr -systemPassword lhr \ -datafileDestination '/u01/app/oracle/oradata' -recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \ -storageType FS \ -redoLogFileSize 50 \ -characterset AL32UTF8 -nationalCharacterSet AL16UTF16 \ -sampleSchema true \ -memoryPercentage 30 \ -databaseType OLTP \ -emConfiguration NONE -- 將容器打包成映象,執行docker commit docker container stop oracle19clhr docker commit oracle19clhr oracle19clhr_db docker save oracle19clhr_db > oracle19clhr_db.tar docker load < oracle19clhr_db.tar --匯出容器 docker export oracle19clhr > oracle19clhr_db.tar --複製新映象到其他環境後 scp oracle19clhr_db.tar root@192.168.6.161:/root/ -- 然後匯入tar包(匯入後是映象) docker import oracle19clhr_db.tar oracle19clhr_db:19.3.0-ee -- 建立新的容器 docker run -itd -h oracle19c --name oracle19c -p 1521:1521 -p 5500:5500 oracle19clhr_db:19.3.0-ee /bin/bash docker logs -f oracle19c docker exec -it oracle19c /bin/bash su - oracle lsnrctl start sqlplus / as sysdba startup docker volume create ora19clhr docker inspect ora19clhr docker volume ls docker volume rm ora19clhr -- 上傳到docker hub docker commit 6c1870bee3a5 lhrbest/oracle19c-ee docker login docker push lhrbest/oracle19c-ee:latest
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( DB寶)上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ),註明新增緣由 ● 於 2020-04-01 06:00 ~ 2020-04-30 24:00 在西安完成 ● 最新修改時間:2020-04-01 06:00 ~ 2020-04-30 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁: https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2684114/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker資料持久化Docker持久化
- Docker之 資料持久化Docker持久化
- oracle資料庫的配置檔案Oracle資料庫
- 聊聊基於docker部署的mysql如何進行資料恢復DockerMySql資料恢復
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- Docker --volume-資料持久化Docker持久化
- MySQL8.0.18資料庫新增資料檔案MySql資料庫
- Oracle和MySQL資料庫CTAS等操作對比OracleMySql資料庫
- Docker系列教程14-Docker資料持久化Docker持久化
- oracle uncatalog資料庫備份檔案Oracle資料庫
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- oracle dg庫資料檔案空間不足Oracle
- MySQL等資料庫和大資料誰快?MySql資料庫大資料
- 1.05 docker的持久化儲存和資料共享Docker持久化
- Docker的持久化儲存和資料共享(四)Docker持久化
- Oracle 資料檔案回收Oracle
- 資料庫系列——基於Canal實現MySQL增量資料同步資料庫MySql
- rabbitmq 如何在 docker 下做資料持久化?MQDocker持久化
- CentOS中實現基於Docker部署BI資料分析CentOSDocker
- MySQL資料庫部署及初始化相關MySql資料庫
- Redis的資料持久化Redis持久化
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- 基於mysql資料庫 關於sql優化的一些問題MySql資料庫優化
- 用於Electron/Nodejs的資料持久快取庫NodeJS快取
- oracle Mysql PostgreSQL 資料庫的對比OracleMySql資料庫
- 基於等保3.0的MySQL資料庫審計日誌外掛實踐MySql資料庫
- docker部署nginx並且掛載資料夾和檔案DockerNginx
- 2.5.10.2 關於資料庫時區檔案資料庫
- Redis 資料持久化Redis持久化
- fabric資料持久化持久化
- 大資料元件-Hive部署基於MySQL作為後設資料儲存大資料元件HiveMySql
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 初涉MySQL資料庫部署解析MySql資料庫
- MySQL資料庫優化MySql資料庫優化
- Docker容器啟動時初始化Mysql資料庫DockerMySql資料庫