详细描述使用多路径搭建两个节点的Oracle RAC集群的方法。
2. 适用范围数据库管理员和系统管理员。
3. 环境规划 3.1 硬件环境在此环境中,使用了3台服务器。服务器的配置如表1所示:
服务器CPU内存硬盘 racdb1.dhc.com 4核 4G 100G racdb2.dhc.com 4核 4G 100G storages.dhc.com 4核 2G 100G表1 RAC安装硬件环境
3.2 软件环境此环境使用的软件及其版本如表2所示:
软件类型软件名称版本 操作系统 Red Hat Enterprise Linux 6.4 存储系统 scsi-target-utils 0.4.9 数据库 Oracle Database, Oracle Infrastructure 11.2.0.4表2 RAC安装软件环境
3.3 网络环境此环境使用的网络IP如表3所示:
racdb1.dhc.comracdb2.dhc.com 公共网络 10.128.20.101 10.128.20.102 专用网络 192.168.1.101 192.168.1.102 存储网络 192.168.136.101 192.168.136.102 网关 10.128.20.103 10.128.20.103 DNS 10.128.20.103 10.128.20.103 SCAN IP 10.128.20.110 10.128.20.110 SCAN IP 10.128.20.111 10.128.20.111 SCAN IP 10.128.20.112 10.128.20.112表3 RAC安装网络环境
3.4 存储规划存储服务器这里使用多种存储,这里使用的是scsi-target-utils来搭建一个简单存储。存储的规划可以参考表4。
卷名称磁盘組大小 data1 DATA 10G data2 DATA 10G data3 DATA 10G data4 DATA 10G fra1 FRA 10G fra2 FRA 10G quorum1 QUORUM 1G quorum2 QUORUM 1G quorum3 QUORUM 1G表4 RAC安装存储规划
4. 搭建数据库服务器为每台数据库服务器配置最少三个网卡。将操作系统的安装盘放到服务器的光驱里,然后启动服务器,根据环境规划来安装操作系统。
操作系统安装完成,需要配置YUM源。
新建/var/yum目录,存储安装文件
# mkdir /var/yum
将系统安装盘中的文件复制到/var/yum中
编辑/etc/yum.repos.d/rhel.repo,加入下面的内容
[base] name=local source baseurl=file:///var/yum enable=1
导入yum安装密钥
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RedHat-release
搭建好YUN源之后,我们就可以用YUM来安装所需要的软件。
关闭selinux
修改/etc/selinux/config文件,将SELINUX设置为disabled
SELINUX=disabled
关闭防火墙
service iptables stop chkconfig iptables off5. 配置共享存储
参照存储的使用手册,在存储服务器上根据存储的规划,划分出9个盘。使用网线或者是光纤卡,将存储和数据库服务器连接起来。
6. 配置数据库服务器在安装ORACLE RAC之前,需要对数据库服务器做一些配置。下面的配置需要在两台数据库服务器上面分别进行操作。
6.1 安装软件包安装Oracle RAC需要安装一些额外的软件包,下面列出了必须的RPM包。
binutils-2.20.51.0.2-5.11.el6 (x86_64) compat-libcap1-1.10-1 (x86_64) compat-libstdc++-33-3.2.3-69.el6 (x86_64) compat-libstdc++-33-3.2.3-69.el6.i686 gcc-4.4.4-13.el6 (x86_64) gcc-c++-4.4.4-13.el6 (x86_64) glibc-2.12-1.7.el6 (i686) glibc-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6 (x86_64) glibc-devel-2.12-1.7.el6.i686 ksh libgcc-4.4.4-13.el6 (i686) libgcc-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6 (x86_64) libstdc++-4.4.4-13.el6.i686 libstdc++-devel-4.4.4-13.el6 (x86_64) libstdc++-devel-4.4.4-13.el6.i686 libaio-0.3.107-10.el6 (x86_64) libaio-0.3.107-10.el6.i686 libaio-devel-0.3.107-10.el6 (x86_64) libaio-devel-0.3.107-10.el6.i686 make-3.81-19.el6 sysstat-9.0.4-11.el6 (x86_64)
通过一下的命令来检测上面列出的包是否安装成功
rpm -q binutils elfutils compat-libstdc++-33 gcc glibc libaio libgcc libstdc++ make sysstat unixODBC compat-libcap1 elfutils-libelf-devel glibc-devel ksh libaio-devel sysstat gcc-c++
如果上面的包没有安装,可以用yum来进行安装。
yum install libaio-devel
6.2 配置hosts文件
编辑/etc/hosts文件,加入以下内容。
10.128.20.101 racdb1.dhc.com racdb1 10.128.20.102 racdb2.dhc.com racdb2 192.168.1.101 racdb1-priv.dhc.com racdb1-priv 192.168.1.102 racdb2-priv.dhc.com racdb2-priv 10.128.20.201 racdb1-vip.dhc.com racdb1-vip 10.128.20.202 racdb2-vip.dhc.com racdb2-vip 192.168.136.103 storage1.dhc.com storage16.3 配置域名解析服务
本环境配置DNS来解析SCAN名字。在DNS服务器里加入dhc.com域和10.128.20.0网段的反向解析域即可。
/etc/named.conf
zone "dhc.com" IN { type master; file "/var/named/dhc.com.zone"; }; zone "20.128.10.in-addr.arpa" IN { type master; file "/var/named/20.128.10.in-addr.arpa.zone"; };
/var/named/dhc.com.zone
$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 racdb-cluster-scan A 10.128.20.110 racdb-cluster-scan A 10.128.20.111 racdb-cluster-scan A 10.128.20.112
/var/named/20.128.10.in-addr.arpa.zone
$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 110 PTR racdb-cluster-scan.dhc.com. 111 PTR racdb-cluster-scan.dhc.com. 112 PTR racdb-cluster-scan.dhc.com. 103 PTR storage1.dhc.com.
将数据库服务器的DNS配置成该服务器的地址,在数据库服务器上做测试。
[root@racdb1 ~]# host racdb-cluster-scan.dhc.com racdb-cluster-scan.dhc.com has address 10.128.20.111 racdb-cluster-scan.dhc.com has address 10.128.20.112 racdb-cluster-scan.dhc.com has address 10.128.20.1106.4 内核参数调整
由于现在oracle新版本提供一个script来修改内核参数,这一步现在可以省略。
6.5 创建用户用root用户执行下面的命令,添加以下用户组
groupadd -g 1000 oinstall groupadd -g 1200 asmadmin groupadd -g 1201 asmdba groupadd -g 1202 asmoper groupadd -g 1300 dba groupadd -g 1301 oper
用root用户添加grid和oracle用户
useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash grid useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -g /home/oracle -s /bin/bash oracle
修改grid和oracle用户的密码。
[root@racdb1 ~]# passwd grid 更改用户 grid 的密码 。 新的 密码: 无效的密码: 它基于字典单词 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。6.6 配置登录安全验证选项
编辑/etc/security/limits.conf,加入以下内容。
grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
编辑/etc/pam.d/login,加入以下内容
session required pam_limits.so
6.7 创建挂载点
用root用户执行下面的命令创建挂载点
mkdir -p /u01/app/11.2.0.4/grid mkdir -p /u01/app/grid chown -R grid:oinstall /u01 mkdir -p /u01/app/oracle/product/11.2.0.4/dbhome_1 chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u016.8 配置用户的环境变量
切换到grid用户,编辑.bash_profile文件,加入以下内容
export ORACLE_SID=+ASM1 export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/11.2.0.4/grid export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin export TEMP=/tmp export TMP=/tmp export TMPDIR=/tmp export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" export NLS_DATE_FORMAT="YYYY-MM-DD" umask 022
注意在另外一个节点ORACLE_SID要改为+ASM2。
2. 配置oracle的环境变量
切换到oracle用户,编辑.bash_profile文件,加入以下内容
export ORACLE_SID=PROD_1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1 export ORACLE_TERM=xterm export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" export PATH=$ORACLE_HOME/bin:$PATH:/usr/bin:/bin:usr/bin/X11:/usr/local/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export TEMP=/tmp export TMPDIR=/tmp umask 022
注意在另外一个节点ORACLE_SID为PROD_2
为了使新的环境变量生效,重启服务器或者执行下面的命令:
. .bash_profile
编辑/etc/profile,加入以下内容
if [ $USER = "oracle" ] || [ $USER = "grid" ] ; then if [ $SHELL = "/bin/ksh" ] ; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi6.9 配置共享存储
安装iscsi和多路径包
yum install iscsi-initiator-utils device-mapper-multipath
配置iscsi和多路径自动启动
chkconfig iscsi on chkconfig iscsid on chkconfig multipathd on
发现target
[root@racdb1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.136.103 --discover 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data1 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data2 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data3 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:data4 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:fra1 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:fra2 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum1 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum2 192.168.136.103:3260,1 iqn.2014-09.com.dhc.storage1:quorum3
挂载存储
iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:quorum1 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:quorum2 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:quorum3 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:data1 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:data2 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:data3 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:data4 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:fra1 -p 192.168.136.103:3260 -l iscsiadm -m node -T iqn.2014-09.com.dhc.storage1:fra2 -p 192.168.136.103:3260 -l
注意,这里要按照顺序挂载存储,方便后面配置多路径。
磁盘挂在好之后,使用fdisk -l 可以看到多了几个磁盘,但是重启之后这些磁盘的挂载点会改变,因此需要用多路径软件来固定共享磁盘的挂载点。
要使用多路径,首先要获得磁盘的scsi id。
在存储节点运行 tgt-admin –show可以看到
[root@storage1 named]# tgt-admin –show Target 1: iqn.2014-09.com.dhc.storage1:data1 。。。。。。 LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 10737 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: rdwr Backing store path: /target/data1.img Backing store flags: Account information: ACL information: ALL
这里scsi id就是我们需要的,记下每个target的scsi id。
在数据库服务器上生成多路径的配置文件
从文档里拷贝一个配置文件到/etc目录中。
cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc
编辑/etc/multipath.conf
defaults { udev_dir /dev polling_interval 10 path_selector "round-robin 0" path_grouping_policy multibus getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" path_checker readsector0 rr_min_io 100 max_fds 8192 rr_weight priorities failback immediate no_path_retry fail user_friendly_names yes } blacklist { devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" devnode "^vd[a-z][0-2]" } multipaths { multipath { wwid "1IET 00070001" alias quorum1 } multipath { wwid "1IET 00080001" alias quorum2 } multipath { wwid "1IET 00090001" alias quorum3 } multipath { wwid "1IET 00010001" alias data1 } multipath { wwid "1IET 00020001" alias data2 } multipath { wwid "1IET 00030001" alias data3 } multipath { wwid "1IET 00040001" alias data4 } multipath { wwid "1IET 00050001" alias fra1 } multipath { wwid "1IET 00060001" alias fra2 } } devices { device { vendor "IET" product "VIRTUAL-DISK" path_grouping_policy group_by_prio getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" path_selector "round-robin 0" path_checker tur hardware_handler "0" failback immediate rr_weight uniform rr_min_io 128 rr_min_io_rq 1 flush_on_last_del yes fast_io_fail_tmo 5 dev_loss_tmo infinity } }
启动多路径
modprobe dm_multipath modprobe dm_mod /etc/init.d/multipathd start
查看多路径multipath -ll
[root@racdb2 ~]# multipath -ll quorum3 (1IET 00090001) dm-7 IET,VIRTUAL-DISK size=1.0G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 8:0:0:1 sdh 8:112 active ready running quorum2 (1IET 00080001) dm-2 IET,VIRTUAL-DISK size=1.0G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 4:0:0:1 sdb 8:16 active ready running quorum1 (1IET 00070001) dm-10 IET,VIRTUAL-DISK size=1.0G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 9:0:0:1 sdf 8:80 active ready running fra2 (1IET 00060001) dm-9 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 5:0:0:1 sdc 8:32 active ready running fra1 (1IET 00050001) dm-4 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 6:0:0:1 sde 8:64 active ready running data4 (1IET 00040001) dm-5 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 10:0:0:1 sdi 8:128 active ready running data3 (1IET 00030001) dm-8 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 3:0:0:1 sdd 8:48 active ready running data2 (1IET 00020001) dm-6 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 7:0:0:1 sdg 8:96 active ready running data1 (1IET 00010001) dm-3 IET,VIRTUAL-DISK size=10G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active `- 2:0:0:1 sda 8:0 active ready running
如果绑定成功,会在/dev/mapper目录下面看到新生成的磁盘
[root@racdb1 mapper]# ll crw-rw---- 1 root root 10, 58 9月 28 02:33 control lrwxrwxrwx 1 root root 7 9月 28 02:52 data1 -> ../dm-2 lrwxrwxrwx 1 root root 7 9月 28 02:52 data2 -> ../dm-8 lrwxrwxrwx 1 root root 7 9月 28 02:52 data3 -> ../dm-5 lrwxrwxrwx 1 root root 7 9月 28 02:52 data4 -> ../dm-6 lrwxrwxrwx 1 root root 7 9月 28 02:52 fra1 -> ../dm-9 lrwxrwxrwx 1 root root 7 9月 28 02:52 fra2 -> ../dm-4 lrwxrwxrwx 1 root root 8 9月 28 02:52 quorum1 -> ../dm-10 lrwxrwxrwx 1 root root 7 9月 28 02:52 quorum2 -> ../dm-3 lrwxrwxrwx 1 root root 7 9月 28 02:52 quorum3 -> ../dm-7 lrwxrwxrwx 1 root root 7 9月 28 02:34 vg_racdb-lv_root -> ../dm-0 lrwxrwxrwx 1 root root 7 9月 28 02:33 vg_racdb-lv_swap -> ../dm-1
将第一个节点的 multipathd.conf复制到第二个节点,然后在第二个节点启动多路径
修改共享存储的权限
chown grid:asmadmin data1 chmod 660 data1
使用同样的方法更改所有存储的权限。
最终的权限如下面所示:
[root@racdb1 mapper]# ls -lL 总用量 0 brw-rw---- 1 root disk 253, 5 9月 29 03:23 data1 brw-rw---- 1 root disk 253, 7 9月 29 03:23 data2 brw-rw---- 1 root disk 253, 3 9月 29 03:24 data3 brw-rw---- 1 root disk 253, 10 9月 29 03:24 data4 brw-rw---- 1 root disk 253, 2 9月 29 03:25 fra1 brw-rw---- 1 root disk 253, 8 9月 29 03:25 fra2 brw-rw---- 1 root disk 253, 4 9月 29 03:20 quorum1 brw-rw---- 1 root disk 253, 6 9月 29 03:22 quorum2 brw-rw---- 1 root disk 253, 9 9月 29 03:22 quorum3
为了保证重启之后,虚拟磁盘的权限不变,在udev里加入规则文件。
[root@racdb1 mapper]# cd /etc/udev/rules.d/ [root@racdb1 rules.d]# vi 99-grid-permission.rules PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum1" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum2" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/quorum3" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data1" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data2" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data3" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/data4" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/fra1" PROGRAM="/bin/chown grid:asmadmin /dev/mapper/fra2" PROGRAM="/bin/chmod 660 /dev/mapper/quorum1" PROGRAM="/bin/chmod 660 /dev/mapper/quorum2" PROGRAM="/bin/chmod 660 /dev/mapper/quorum3" PROGRAM="/bin/chmod 660 /dev/mapper/data1" PROGRAM="/bin/chmod 660 /dev/mapper/data2" PROGRAM="/bin/chmod 660 /dev/mapper/data3" PROGRAM="/bin/chmod 660 /dev/mapper/data4" PROGRAM="/bin/chmod 660 /dev/mapper/fra1" PROGRAM="/bin/chmod 660 /dev/mapper/fra2"
将99-grid-permission.rules文件复制到节点2同样的目录下
这样如果服务器重启之后,共享存储的权限也不会改变。
集群都要求在集群各节点之间保持时间一致。时间同步服务可以采用NTP,从11gR2之后,集群时间同步推荐使用oracle自带的工具CTSS。
下面配置禁用NTP,从而在安装Oracle RAC的时候启用CTSS。
在两个节点停止分别禁用NTP。
service stpd stop
禁止NTP自动启动
chkcong ntpd off
把ntp的配置文件改名
mv /etc/ntp.conf /etc/npt.conf.bk7. 部署Oracle RAC 1. 安装 Grid Infrastructure
加载grid的安装介质,执行runInstaller,然后会弹出Grid安装界面
[grid@racdb1 ~]$ /media/grid_11204_linux64/runInstaller 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 120 MB。 实际为 77481 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 8191 MB 通过 检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2014-09-29_03-53-36AM. 请稍候... [grid@racdb1 ~]$
跳过软件更新,如果有MOS账号,可以尝试更新
选择为集群安装和配置Oracle Grid Infrastructure
更多详情见请继续阅读下一页的精彩内容: