内容


在 SaaS 环境中管理 Vertica 集群,第 1 部分

跨集群复制 Vertica 数据库

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 在 SaaS 环境中管理 Vertica 集群,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:在 SaaS 环境中管理 Vertica 集群,第 1 部分

敬请期待该系列的后续内容。

简介

NIOD 是企业营销管理 (EMM) 部门的一个 IBM® Unica® 产品,服务于使用 Hewlett-Packard® Vertica 集群的 SaaS 环境中客户。设置 Vertica 数据库的第一步是将 Vertica 安装在目标集群上。每个来源和目标集群都有 3 个节点。需要验证所需的包,还需要满足跨集群复制该数据库的前提条件。在目标集群中创建一个空数据库。然后将该数据库从来源复制到目标集群。

登录到来源和目标 Vertica 集群节点

确保针对 dbadmin 用户的无密码 SSH 可在每个来源和目标节点之间和跨这些节点而运行。dbadmin 用户必须能够不使用密码登录到所有来源和目标节点。另外,此用户必须能够反向登录,也就是说,能够从所有目标集群节点登录到所有来源集群节点。

为了简便起见,假设来源和目标 Vertica 集群和节点如下所示:

表 1. 来源和目标 Vertica 集群详细信息
集群类型集群节点名称IPDB_Name用户
来源source01.niod.unica.net10.10.10.1unicl01dbadmin
source02.niod.unica.net10.10.10.2unicl01dbadmin
source03.niod.unica.net10.10.10.3unicl01dbadmin
目标target01.niod.unica.net10.10.10.4dbadmin
target02.niod.unica.net10.10.10.5dbadmin
target03.niod.unica.net10.10.10.6dbadmin

将 Vertica 安装程序复制到目标集群节点

假设来源集群上拥有 Vertica 二进制文件 vertica-5.0.12-0.x86_64.RHEL5.rpm,而且可以将它复制到目标集群。

将该二进制文件从来源集群复制到目标集群的第一个节点 target01.niod.unica.net (10.10.10.4)

例如:

[ambarsag@source01 Vertica-binaries]$ scp vertica-5.0.12-0.x86_64.RHEL5.rpm ambarsag@10.10.10.4:/local/Vertica-binaries

备注:确认该二进制文件已复制到该目标集群节点,并提供了完整权限,以便 dbadmin 用户可以运行它。
[ambarsag@target01 Vertica-binaries]$ chmod -R 777 vertica-5.0.12-0.x86_64.RHEL5.rpm

验证目标集群上的包

确认目标集群的每个节点上都有所需的包和文件。

验证 sudo 和 Python

确认所有目标集群上主机上都有 sudo 和 Python。在 shell 提示符上运行以下命令,确认您拥有在这些主机上运行这些工具的特权:

[root@target01 dbadmin]# which sudo
/usr/bin/sudo
[root@target01 /]# which python
/usr/bin/python

[root@target02 ~]# which sudo 
/usr/bin/sudo 
[root@target02 /]# which python
/usr/bin/python

[root@target03 ~]# which sudo
/usr/bin/sudo
[root@target03 /]# which python
/usr/bin/python

验证 rsync 和版本

确认所有集群主机上都安装了 rsync 3.0.5 或更高版本。

[root@target01 /]# which rsync
/usr/bin/rsync
[root@target01 /]# rsync --version
rsync  version 3.0.6  protocol version 30

备注:确认两个节点 target02target03 上的信息相同。

验证 su 文件

确认 su 文件存在于所有集群节点上的 /etc/pam.d 中。

[root@target01 pam.d]# pwd
/etc/pam.d

备注:确认两个节点 target02target03 上的信息相同。

验证 NTP 守护进程

确认所有目标集群节点上都运行着 NTP 守护进程。

备注:如果安装了 NTP 守护进程,输出类似于:

The output indicates the run levels where the demon runs. Verify that the current run level of the system 
(usually 3 or 5) has the NTP demon set to ON.

[root@target01 pam.d]# chkconfig --list ntpd 
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off 

[root@target01 /]# runlevel 
N 3

备注:确认两个节点 target02target03 上的信息相同。

定义环回地址

确保 /etc/hosts 文件存在。确保该文件包含环回地址 127.0.0.1 以及完全限定和未限定格式的名称 localhost

例如:

127.0.0.1 localhost.localdomain localhost

备注:确认两个节点 target02target03 上的信息相同。

设置主机文件

设置集群的每个节点上的 /etc/hosts 文件

确保 /etc/hosts 文件包含该集群中的所有主机。

[root@target01 /]# vi /etc/hosts

将以下信息输入到 hosts 文件中:

#Vertica HB
10.10.10.4     target01.niod.unica.net
10.10.10.5     target02.niod.unica.net
10.10.10.6     target03.niod.unica.net

备注:确认两个节点 target02target03 上的信息相同。

确保端口 5433 未被使用

[root@target01 /]# netstat -atup
[root@target01 /]# vi /etc/services

如果该端口号被 /etc/services 中定义的一个服务识别,此命令不会列出它。一些可能使用端口 5433 的常见服务包括 pyrrhonibblerpostgresql

备注:确认两个节点 target02target03 上的信息相同。

确保 /dev/pts 已挂载

[root@target01 /]# cd /dev/pts
[root@target02 /]# cd /dev/pts
[root@target03 /]# cd /dev/pts

将 Vertica 安装在目标集群上

选择一个集群主机作为管理主机,用于安装 Vertica 和使用 Vertica 管理工具。在这里,将使用节点 target01.niod.unica.net 来安装它们。

运行 RPM 包安装程序

备注:因为使用了 sudo 来登录到根用户帐户:sudo su - ,所以还必须使用 sudo 来运行 RPM 包安装程序。

[root@target01 Vertica-binaries]# sudo rpm -Uvh /local/Vertica-binaries/vertica-5.0.12-0.x86_64.RHEL5.rpm

Preparing...                ########################################### [100%]
   1:vertica                ########################################### [100%]

Vertica Analytic Database V5.0.12-0 successfully installed on host target01.niod.unica.net

备注:如果您不是根用户,那么请使用以下命令:

# rpm -Uvh pathname

备注:此命令创建一个文件夹 /opt/vertica

[root@target01 vertica]# pwd
/opt/vertica				
[root@target01 vertica]# ls	
bin  config  examples  include  java  lib  lib64  log  oss  packages  sbin  scripts  sdk  share  spread
运行安装脚本

要开始安装,从 /opt/vertica/sbin 位置运行安装脚本。

备注:如果运行 Vertica 安装脚本时不使用参数,该脚本会在 localhost 上执行单节点安装。

如果您是根用户:

# /opt/vertica/sbin/install_vertica -s host_list -r rpm_package -u dba_username

如果您使用 sudo:

$ sudo /opt/vertica/sbin/install_vertica -s host_list -r rpm_package -u dba_username

备注:单节点安装需要 -r-s 参数。

示例:

[ambarsag@target01 sbin]$
sudo /opt/vertica/sbin/install_vertica -s 10.10.10.4,10.10.10.5,10.10.10.6 -r /local/Vertica-binaries/vertica-5.0.12-0.x86_64.RHEL5.rpm -u dbadmin -p xxxx -g dbadmin

其中:

  • -shost_list
  • -rrpm_package
  • -udbadmin 用户
  • -pdbadmin 用户的密码
  • -gdbadmin 用户的组

成功完成安装后,您会获得以下消息:

Verifying spread configuration on whole cluster 
Creating node node0001 definition for host 10.10.10.4 
... Done
Creating node node0002 definition for host 10.10.10.5
... Done
Creating node node0003 definition for host 10.10.10.6 
... Done 
Error Monitor  0 errors  0 warnings 
Installation complete.

将数据库从来源复制到目标集群的前提条件

要将来源数据库 unicl01 复制到目标集群节点,必须遵循以下指南。

拥有与来源集群相同的节点数

确保来源和目标 Vertica 集群拥有相同数量的节点。

能够从来源集群访问

您可能需要将每个目标集群节点的主机名添加到来源集群的主机文件中。因此这次数据库复制是从一个来源集群节点发起的,所以所有来源节点主机文件都必须包含目标主机名称。

在来源集群的第一个节点 source01.niod.unica.net 中,以根用户身份进行登录。

[root@source01 /]# vi /etc/hosts

#Vertica SOURCE
10.10.10.1      source01.niod.unica.net
10.10.10.2      source02.niod.unica.net
10.10.10.3      source03.niod.unica.net

#Vertica TARGET
10.10.10.4     target01.niod.unica.net
10.10.10.5     target02.niod.unica.net
10.10.10.6     target03.niod.unica.net

备注:确认两个节点 source02source03 上的信息相同。

将许可文件从来源集群复制到目标

许可文件 license.key 必须复制到所有目标集群节点。假设该许可文件位于来源上的 /opt/vertica/config/share 中。在此示例中,许可文件复制到每个目标集群节点上的 /opt/vertica/config/share 位置。

示例:

source01:/opt/vertica/config/share $ ls -la
-rw-rw-rw- 1 dbadmin verticadba  547 Nov 16  2011 license.key

source01:/home/dbadmin $ scp license.key dbadmin@10.10.10.4:/opt/vertica/config/share

备注:类似地,将许可文件复制到目标集群的另两个节点 10.10.10.5 和 10.10.10.6。

在目标集群上创建一个空数据库

现在,在目标集群上使用与来源集群相同的名称 unicl01 创建一个空数据库。拥有一个与所复制的数据库同名的数据库。此数据库可以是空的。

在目标集群上创建一个空数据库的步骤:

  • dbadmin 用户身份登录到 target01.niod.unica.net
  • 使用如下命令运行 Vertica Admintools:
    [dbadmin@target01 bin]$ /opt/vertica/bin/admintools
  • 这将打开 “Main Menu” 窗口。
  • 选择 “Configuration Menu”。
图 1. Configuration Menu
Main Menu,Configuration Menu 是其中的第 6 项。
Main Menu,Configuration Menu 是其中的第 6 项。
  • 单击 OK。
  • 在 “Configuration Menu” 窗口中,单击 “Create Database”。
图 2. Create Database
Configuration Menu,Create Database 是其中的第一项。
Configuration Menu,Create Database 是其中的第一项。
  • 单击 OK。
  • 输入数据库的名称和可选的说明。
    dbname: unicl01
    comment: Copy db from source to target vertica cluster.
  • 单击 OK。
  • 输入新数据库的密码。
  • 单击 OK。
  • 重新输入相同的密码并单击 OK。
  • 选择您想要创建相同数据库的目标集群节点列表。
    [X] 10.10.10.4 
    [X] 10.10.10.5 
    [X] 10.10.10.6
  • 目录路径名称:/home/dbadmin
  • 数据路径名称:/home/dbadmin
  • 单击 OK。
  • 在 “Current Database Definition” 窗口中,检查细节并单击 “Yes”。

备注:数据库 unicl01 已在目标集群的所有 3 个节点上创建。您可以从 Vertica Admintools 查看该数据库,可以连接、启动和停止该数据库。

将 Vertica 数据库从来源复制到目标集群

在所有 3 个目标集群节点上创建备份目录。然后,创建一个配置文件来与 copycluster 命令一起运行。

在目标节点上创建备份目录

在目标集群的所有 3 个节点上创建备份目录:/home/dbadmin/backups。然后,将所有者更改为 dbadmin

[root@target01 /]# mkdir /home/dbadmin/backups
[root@target01 /]# chown -R dbadmin:dbadmin /home/dbadmin/backups

备注:在此集群的另外两个节点 target02target03 上创建类似的目录。

识别数据库节点名称。

运行 copycluster 命令,识别要在配置文件中使用的来源集群上的数据库节点名称。例如:

source01:/opt/vertica/config $ /opt/vertica/bin/admintools -t node_map -d unicl01
DATABASE   | NODENAME               | HOSTNAME 
--------------------------------------------------------
unicl01  | v_unicl01_node0001   | 10.10.10.1 
unicl01  | v_unicl01_node0002   | 10.10.10.2 
unicl01  | v_unicl01_node0003   | 10.10.10.3

备注:在这里,-d 标志后的名称是数据库名称。

创建一个配置文件

您需要在来源节点 source01.niod.unica.net 上创建一个配置文件 CopyCluster.ini。例如:

File name: CopyCluster.ini
Location:  /opt/vertica/config/CopyCluster.ini
CopyCluster.ini 的内容示例
[Misc]
snapshotName = CopySourceDB
tempDir = /tmp
verticaConfig = False 
retryCount = 5
retryDelay = 1

[Database] 
dbName = unicl01
dbUser = dbadmin
dbPassword = xxxx
dbPromptForPassword = False
[Transmission]
encrypt = False
checksum = False
port_rsync = 50000
bwlimit = 0 
hardLinkLocal = False

[Mapping0]
dbNode = v_unicl01_node0001 
backupHost = 10.10.10.4
backupDir = /home/dbadmin/backups

[Mapping1]
dbNode = v_unicl01_node0002 
backupHost = 10.10.10.5 
backupDir = /home/dbadmin/backups 

[Mapping2]
dbNode = v_unicl01_node0003 
backupHost = 10.10.10.6
backupDir = /home/dbadmin/backups

备注:

  • dbNode:每个来源集群的 Node_Name
  • backupHost:目标集群节点名称。
  • backupDir:目标集群节点上的备份目录。
  • dbName:来源数据库的名称 unicl01
  • dbUser:管理员用户,在来源和目标集群上相同。
  • dbPassword:来源数据库的密码。
运行 copycluster 命令

要复制该集群,需要从来源数据库中的一个节点运行 vbr.py。使用数据库管理员帐户,将 --task copycluster 命令传递给它。如果您专门创建了一个配置文件来复制该数据库,可以使用 --config-file 参数来告诉备份实用程序它在何处。

dbadmin 用户身份从 source01.niod.unica.net 运行下面这条命令。浏览到 /opt/vertica/config/CopyCluster.ini

source01:/home/dbadmin $ cd /opt/vertica/config
source01:/opt/vertica/config $ vbr.py --config-file CopyCluster.ini --task copycluster

备注:在这里,您可能获得以下错误:

Node v_unicl01_node0001 of target cluster is not DOWN; cannot copycluster.
copycluster failed!

您需要使用 Vertica Admintools 停止 source01.niod.unica.net 上的数据库 unicl01。此操作还会停止其他两个节点上的数据库。停止数据库后,再次运行 CopyCluster 命令。

source01:/opt/vertica/config $ vbr.py --config-file CopyCluster.ini --task copycluster

根据来源数据库的大小,您可能获得以下消息:

Copying...
151093501882 out of 151093501882, 100%

成功完成数据库从来源向目标集群的复制后,可以启动该数据库。使用 Vertica Admintools,从目标集群的任何节点启动该数据库。

结束语

本文介绍了安装 Vertica 所需的各种 Vertica 包的重要性。本文还有助于理解执行该安装所需的各种配置和设置。复制 IBM NIOD 客户在 SaaS 环境中的 Vertica 数据库的分步方法包括创建一个空数据库,设置配置文件,以及使用 vbr.py 运行 copycluster 命令。

致谢

非常感谢 Marjana Ivkovic (mivkovic@us.ibm.com)(团队领导、EMM SaaS Ops 应用程序架构师)为完成本文提供不懈支持和宝贵的技术指导。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Information Management
ArticleID=1018113
ArticleTitle=在 SaaS 环境中管理 Vertica 集群,第 1 部分: 跨集群复制 Vertica 数据库
publish-date=10212015