数据库读写分离解决方案DG实施方案.docx
- 文档编号:7439381
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:59.86KB
数据库读写分离解决方案DG实施方案.docx
《数据库读写分离解决方案DG实施方案.docx》由会员分享,可在线阅读,更多相关《数据库读写分离解决方案DG实施方案.docx(23页珍藏版)》请在冰豆网上搜索。
数据库读写分离解决方案DG实施方案
数据库读写分离解决方案
----oracle11GADG实施方案
1.项目背景介绍
1.1目的
通过DG实现主库与备库同步,主库作为业务应用库,备库作为查询库,应用根据不同需求配置对应数据库;
1.2测试环境
在2台RedHat5.4上使用ORACLE的DataGuard组件实现容灾。
设备配置(VMWare虚拟机环境)清单如下:
主机型号
数据实例
配置
数据库版本
RedHat5.4(32位)
ORCL
CPU:
1
MEM:
2G
Oracle11gR211.2.0.1
RedHat5.4(32位)
ORCL
CPU:
1
MEM:
2G
Oracle11gR211.2.0.1
2.OracleDataGuard介绍
备用数据库(standbydatabase)是ORACLE推出的一种高可用性(HIGHAVAILABLE)数据库方案,在主节点与备用节点间通过日志同步来保证数据的同步,备用节点作为主节点的备份,可以实现快速切换与灾难性恢复。
●STANDBYDATABASE的类型:
有两种类型的STANDBY:
物理STANDBY和逻辑STANDBY
两种类型的工作原理可通过如下图来说明:
physicalstandby提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。
它是可以直接应用REDO实现同步的。
logicalstandby则不是这样,在logicalstandby中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。
逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表,但其数据库用户相关对象均需要有主键。
✧本次实施将选择物理STANDBY(physicalstandby)方式
●对主库的保护模式可以有以下三种模式:
–Maximumprotection(最高保护)
–Maximumavailability(最高可用性)
–Maximumperformance(最高性能)
三种保护模式区别如下:
保护模式
数据丢失保护
重做传输
最高保护
零数据丢失
双重故障保护
LGWRSYNC—将重做同步传输至两个站点,网络中断会导致主Database宕机
最高可用性
零数据丢失
单重故障保护
LGWRSYNC—重做同步传输
最高性能
最少的数据丢失
LGWRASYNC或ARCH—重做异步传输
✧基于项目应用的特征及需求,本项目比较适合采用Maximumavailability(最高可用性)模式实施。
3.Dataguard实施前提条件和注意事项:
●灾备环境中的所有节点必须安装相同的操作系统,尽可能令详细补丁也保持相同。
●灾备环境中的所有节点必须安装完全相同版本的Oracle数据库软件,包括版本号和发布号,比如必须都是Oracle11.2.0.1
●主库必须处于归档(ARCHIVELOG)模式。
●灾备环境中所有节点的硬件和操作系统架构必须相同
●主库可以是单实例,也可以是RAC。
●主节点和备用节点之间的硬件配置可以不同,比如CPU数量,内存数量,存储的配置等等。
●配置灾备环境的数据库用户必须具有SYSDBA权限。
4.Oracle软件安装
1.要实施DataGurad的前,需要在主机RedHat-Primary和备机RedHat-Standby上进行ORACLE软件的基础安装。
2.备机基础软件的安装有两种方式供选择:
1)源始安装介质安装
采用ORACLE数据库安装介质进行软件安装。
2)“克隆”主站源数据库
分别对主站源数据库进行tar压缩并FTP/rcp至备机上,然后展开压缩文件。
✧通常出于便捷的原因,备机的Oracle初始建立可采用上述的第二种方式。
测试环境中直接对虚拟机进行了拷贝,因此相当于采用了第二种方式。
现场环境下,如果主节点不是RAC环境,也可以采用第二种方式。
4.1环境配置
RedHat5-Primary(primary,IP192.168.204.131)以下简称主库
SingleInstancePrimary
说明
IP
192.168.204.131
Oracle
单实例
Instance
ORCL
Data,ControlFile,RedoFile
$ORACLE_BASE/oradata
RedHat5-Standby(standby,IP192.168.204.132),以下简称从库。
SingleInstanceStandby
说明
IP
192.168.204.132
Oracle
单实例
Instance
ORCL
Data,ControlFile,RedoFile
$ORACLE_BASE/oradata
4.2系统硬件环境检查
4.2.1检查内存相关项
检查服务器的内存,可以通过下列命令:
[root@localhost~]#grepMemTotal/proc/meminfo
另外与内存相关的swap交换分区的设置也很重要,通常有下列的规则:
实际内存建议swap交换空间大小
-------------------------------------------
1G-2G1.5倍于内存
2G-16G与内存相同
超过16G设置为16G即可
查看当前服务器swap交换分区大小,可以通过下列命令:
[root@localhost~]#grepSwapTotal/proc/meminfo
查看系统当前共享内存,可以通过df命令,例如:
[root@localhost~]#df-h/dev/shm
4.2.2查看系统架构
本步用来查看处理器的架构类型,需要确认ORACLE安装包与处理器架构相符,不然安装时必然报错。
查看当前系统的处理器架构可以通过下列命令:
[root@localhost~]#uname–m
i686
4.2.3检查磁盘空闲空间
首先/tmp至少要有1g的空闲空间,查看/tmp的磁盘空间,也可以通过df命令查看,例如:
[root@localhost~]#df-h/tmp
在执行安装之前,建议执行df-h命令,查看当前是否有充裕的空闲空间来安装和创建数据库。
[root@jssnode1~]#df–h
4.3安装操作系统软件包
●(32位RedHat5.4)
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
查看软件包是否已经安装:
[root@localhost~]#rpm-aqbinutilscompat-libstdc++-33
[root@localhost~]#rpm-aq|grepelfutils-libelf
[root@localhost~]#rpm-aq|grepgcc
[root@localhost~]#rpm-aq|grepglibc
[root@localhost~]#rpm-aq|grepksh
[root@localhost~]#rpm-aq|greplibaio
[root@localhost~]#rpm-aq|greplibgcc
[root@localhost~]#rpm-aq|greplibgomp
[root@localhost~]#rpm-aq|greplibstdc++
[root@localhost~]#rpm-aq|grepmake-3
[root@localhost~]#rpm-aq|grepsysstat
[root@localhost~]#rpm-aq|grepunixODBC
通过以上命令来查看是否有未安装的软件包,可将未安装的软件包放到~/rpm下,因有些包会相互依赖,最简单的方式是将rpm包下的软件包一起安装:
[root@localhost~]#cdrpm
[root@localhostrpm]#pwd
/root/rpm
[root@localhostrpm]#ls
compat-libstdc++-33-3.2.3-61.i386.rpm
elfutils-libelf-devel-0.137-3.el5.i386.rpm
elfutils-libelf-devel-static-0.137-3.el5.i386.rpm
gcc-4.1.2-46.el5.i386.rpm
gcc-c++-4.1.2-46.el5.i386.rpm
glibc-devel-2.5-42.i386.rpm
glibc-headers-2.5-42.i386.rpm
kernel-headers-2.6.18-164.el5.i386.rpm
libaio-devel-0.3.106-3.2.i386.rpm
libgomp-4.4.0-6.el5.i386.rpm
libstdc++-devel-4.1.2-46.el5.i386.rpm
sysstat-7.0.2-3.el5.i386.rpm
unixODBC-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm
[root@localhostrpm]#rpm–Uvh*
●64位需安装的操作系统软件包
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3(32bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24(32bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5(32bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106(32bit)
libaio-devel-0.3.106
libaio-devel-0.3.106(32bit)
libgcc-4.1.2
libgcc-4.1.2(32bit)
libstdc++-4.1.2
libstdc++-4.1.2(32bit)
libstdc++-devel4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11(32bit)
unixODBC-devel-2.2.11
unixODBC-devel-2.2.11(32bit)
4.4修改内核参数
下列将要进行配置的核心参数均拥有默认值(或者说最小值),需要对其进行配置的原因,是为了获得更好了性能,因此对于产品服务器来说,务必根据实际情况进行配置,不适当的值反倒可能适得其反。
使用vi命令编辑/etc/sysctl.conf文件,例如:
[root@localhost~]#vi/etc/sysctl.conf
将下列内容加入该文件:
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.sem=25032000100128
net.ipv4.ip_local_port_range=900065500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
注意,某些参数可能已经存在于该文件,注意修改参数值即可。
这里各参数所指定的值仅供参考,请根据实际情况进行修改,一般来说只需要对kernel.shmmax这个参数的参数值进行修改即可,该参数建议修改为物理内存的一半(以字节为单位)。
编辑完之后存盘退出,然后运行下列命令重新加载并验证参数是否正确:
[root@jssnode1~]#sysctl-p
4.5修改系统时间
修改主机与备机的系统时间一致
4.6创建用户和组及安装目录并配置环境变量
创建用户和组:
[root@localhost~]#groupaddoinstall
[root@localhost~]#groupadddba
[root@localhost~]#useradd-goinstall-Gdbaoracle
[root@localhost~]#passwdoracle
验证nobody用户:
[root@localhost~]#idnobody
创建Oracle的安装目录:
注:
(因虚拟机环境安装Linux时没有手动分区,导致挂载点”/”空间不足,所以将oracle安装到了/home/db下,现场环境下Oracle应安装到/opt或单独分区)
[root@localhost~]#cd/home
[root@localhosthome]#mkdirdb
改变文件系统/home/db的所有者为oracle,以便将Oracle安装到此目录
[root@localhosthome]#chownoracle:
oinstalldb
切换到oracle用户,修改.bash_profile
[oracle@localhost~]$vi.bash_profile
#.bash_profile
#Getthealiasesandfunctions
if[-f~/.bashrc];then
.~/.bashrc
fi
#Userspecificenvironmentandstartupprograms
ORACLE_SID=orcl
ORACLE_BASE=/home/db/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
exportORACLE_SIDORACLE_BASEORACLE_HOME
exportLD_ASSUME_KERNEL=2.6.18
exportNLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
umask022
PATH=$PATH:
/$ORACLE_HOME/bin:
$HOME/bin
exportPATH
4.7安装Oracle数据库
本节略
5.配置DataGuard过程
5.1备注
“SQL>”:
表示在sqlplus环境下执行,通常是以sysdba身份登录来执行命令
“$”或”[oracle@localhost~]$”:
表示在命令行中执行的命令
5.2判断DataGuard是否安装
SQL>select*fromv$optionwhereparameter='OracleDataGuard’;
5.3网络配置
192.168.204.131(orcl)------------------------------------192.168.204.132(orcldg)
5.4监听配置
●主库
[oracle@localhost~]$cd$ORACLE_HOME/network/admin
[oracle@localhostadmin]$vilistener.ora
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.131)(PORT=1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(SID_NAME=orcl)
(ORACLE_HOME=/home/db/oracle/product/11.2.0/db_1)
)
)
注意:
SID_LIST_LISTENER配置的是静态注册,如果没有该参数,而且DataGuard启动顺序又不正确,那么在主库可能会报PING[ARC1]:
Heartbeatfailedtoconnecttostandby'orcl_st'.Erroris12514.错误,导致归档无法完成。
[oracle@localhostadmin]$vitnsnames.ora
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.131)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=orcl)
)
)
ORCLDG=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.132)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=orcldg)
)
)
●备库
[oracle@localhostadmin]$vilistener.ora
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.132)(PORT=1521))
)
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcldg)
(SID_NAME=orcl)
(ORACLE_HOME=/home/db/oracle/product/11.2.0/db_1)
)
)
[oracle@localhostadmin]$vitnsnames.ora
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.131)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=orcl)
)
)
ORCLDG=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.132)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=orcldg)
)
)
5.5主库前期准备
设置强制写日志
SQL>selectFORCE_LOGGINGfromv$database;
NO
SQL>alterdatabaseforcelogging;
SQL>selectFORCE_LOGGINGfromv$database;
YES
5.6创建口令文件并将文件传输到备库
在主库上创建密码文件,并将文件传到备库的相关位置
[oracle@localhostdbs]$pwd
/home/db/oracle/product/11.2.0/db_1/dbs
[oracle@localhostbin]$orapwdfile=$ORACLE_HOME/dbs/orapworclpassword=oracle
[oracle@localhostbin]$cd$ORACLE_HOME/dbs/
[oracle@localhostdbs]$ls
缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感)
传送文件:
[oracle@localhostdbs]$scp-cporapworcloracle@192.168.204.132:
//home/db/oracle/product/11.2.0/db_1/dbs
orapworcl100%15361.5KB/s00:
00
[oracle@localhostdbs]$
5.7创建备份库需要的控制文件并传输到备库
创建控制文件
SQL>shutdownimmediate
SQL>startupmount;
SQL>alterdatabasecreatestandbycontrolfileas'/tmp/stdby_control01.ctl';
SQL>alterdatabaseopen;
$scp-rp/tmp/stdby_control01.ctloracle@192.168.204.132:
//home/db/oracle/oradata/ORCL/controlfile/
$scp-rp/tmp/stdby_control01.ctloracle@192.168.204.132:
//home/db/oracle/flash_recovery_area/ORCL/controlfile/
-----------------------------------------------------------
手工复制几份(未执行)
$cd/tmp/
$cpsdtby_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 读写 分离 解决方案 DG 实施方案
![提示](https://static.bdocx.com/images/bang_tan.gif)