Veeam Backup & Replication 安装配置


 

Veeam Backup & Replication是一款虚拟环境下数据保护和灾难恢复的工具,可以支持VMware的vSphere环境和MS的hyper-V。该软件为商业软件,在它的网站上(http://www.veeam.com/)可以申请下载评估版本,试用期为30天。

 

为了测试Veeam B & R我准备了一个特定的测试环境,准备先体验下它的部署,配置和基本功能。Veeam B&R包括了Veeam backup server,Backup proxy,Backup repository,Virtual infrastructure server四个组件。本次测试的版本为8.0。

 

Veeam backup server本身可以同时作为backup proxy和backup repo来使用,所以在其最简单的安装中,只需要安装Veeam backup server就可以实现其所有功能。当需要备份的虚拟机较多时,为了分担Veeam backup server的负载,可以将backup proxy和backup repo分开装在不同的机器上。在一个备份环境中,这两个组件均可以装多台,以实现备份负载的均衡。在本次测试中,安装了一个backup proxy和一个backup repo。

 

测试环境中虚拟机参数如下 :

计算机名

角色

操作系统

IP

Veeam-server

Veeam backup server

Windows 2008r2

192.168.225.18

Veeam-proxy

Veeam backup proxy

Windows 2008r2

192.168.225.19

Veeam-backup-repo

Veeam backup repo

Windows 2008r2

192.168.225.183

Vc.itianjing.com

Vshpere vCenter Server

Windows 2008r2

192.168.224.40

 

Veeam backup server依赖SQL SERVER,可以使用单独安装的SQL SERVER或者使用Veeam Backup Server自带的SQL Express,但SQL Express能够支持的虚拟机数量较少,建议在生产环境中使用SQL server数据库。

 

安装过程中,Veeam Backup Server会检查系统依赖关系,如有缺失的组件会自动下载安装,因此,这台机器需要能够访问internet,这样会大大降低安装的难度。

 

  1. 安装SQL Server数据库,并创建一个用于Veeam Backup的账号和Database。
  2. 安装Veeam backup server
    1. 双击Setup开始安装, 在出现的安装提示中选择第一项

此时,安装程序会检查是否安装了.net framework 4.0, 如果没有安装,安装程序会自动安装(前提是这台服务器连接到internet)。

 

  1. 导入license,也可以装好以后再导入。
  1. 检查系统配置,如有有faied状态的选项,选择install选择来安装缺失的组件。
  1. 配置SQL SERVER数据库

    可以选择新建一个数据库实例或使用已有的数据库实例

 

 

(4)其他选项可以选择默认设置,然后选择finish开始安装

 

(5)安装完成。点击Veeam Backup & Replication的图标,会打开该软件:

 

  1. 添加Virtual infrastructure Servers

    Veeam B&R可以直接连接ESX或ESXi主机,也可以连接VC步骤:

    1. 打开backup infrastructure选项卡
    2. 右键点击Managed servers,选择Add Server
    1. 选择VMware vSphere 类型

     

    (4)指定VC的域名或者IP地址,如果填的是域名,需要在所有服务器上对这个域名做dns解析,简单起见我都使用了IP地址

    1. 输入用户名密码

    1. 剩下的都选择默认设置,直到完成连接
    2. 添加完成后可以在Managed servers的工作区中看到添加的vc

 

  1. 添加Backup proxy主机,Backup proxy必须是Windows主机。
    1. 选择backup infrastructure 选项卡,右键点击Managed servers,选择Add Server
    2. 选择添加Windows主机

    1. 输入Backup proxy的域名或IP地址:

    1. 输入服务器用户名密码,然后下面都选择默认选项,直到添加完成。
    2. 右键点击Backup proxy选项,选择Add VMware Proxy

    1. Choose server选择刚刚添加的192.168.225.19

      Transport mode选择自动选择

      Connected datastores选择自动选择

      Max concurrent tasks: 一般建议,backup proxy 每个core handle一个任务,例如:4core cpu选择最大4个任务,8core cpu选择8个任务

  1. 其他选择默认参数,直到安装完成
  2. 添加完以后可以在Backup proxy的工作区中找到新加的主机

 

  1. 添加Backup repo主机。

    Backup repo可以选择如下:

    1. Windows, 本地目录
    2. Linux,本地目录,或者挂载的nfs目录,需要ssh协议以及scp命令可用
    3. Shared CIFS(SMB)共享
    4. Storage application
      1. 在managed servers中添加192.168.225.183,步骤和添加Backup proxy时相同。
      2. 右键点击Backup repository,选择Add Backup Repository

    1. 输入Backup repo的名称,这个名称是给repo起的名字,不是主机的域名或IP

    1. 选择repo类型为windows

    (5) 选择192.168.225.183作为Backup repo

(6) 指定D:\backup作为备份目录,点击populate可以查看可用的存储空间,另外还可以对该存储可以接受的最大任务数和备份速度进行限制

(7) vPower NFS:vPower NFS可以直接在备份文件中运行虚拟机,选择enable vPower NFS以后会在repo server上安装vPower NFS SERVICE。 需要注意,如果选择enable vPower NFS,则repo server不能启用windows nfs服务,否则windows nfs和vpower nfs都会启动失败。

(8)其他参数选择默认设置

(9)安装完成后可以在Backup repository的工作区看到新加的repo主机

 

 

至此,Veeam Backup & Replication安装配置完成。

 

 

 

Veeam Backup & Replication的三种备份策略:

  1. Reverse Incremental Backup: 一个全备vbk文件,加若干个回滚vrb文件:

 

配置备份作业时,选择第一项:Reverse incremental

 

 

 

备份结果如下图所示:

 

  1. Forward Incremental Backup:

 

备份作业配置: 选择Incremental,然后勾选Create synthetic full backups或者Active Full backup。

 

Create synthetic full backup:选择这个选项,Veeam Backup会在你选定的时间合成一个full backup,这个full backup是从前面的备份文件中合成的,并不是从源虚拟机中读取,这样的好处是可以减轻网络流量的压力以及避免对源虚拟机产生过多的影响。

 

Transform previous backup chains into rollbacks: 这个选项可以把最近一个周期(最近一个full backup到上一个full backup)的增量备份转化为reverse Incremental backup。

 

Active Full backup: 选择这个选项,Veeam Backup可以在你指定时间进行全备,这个全备份是从源主机读取数据,可能对网络带宽和源虚拟机影响较大。

除在设置备份JOB时指定定期的active full backup以外,还可以通过JOB tools中的active full backup选项随时手动启动全备。

 

Create synthetic full backup和Active full backup在备份数据的完整性上没有任何区别,从减轻源主机负载的角度,建议选择Create synthetic full backup。

 

备份结果如下图所示:

 

 

  1. Forever Forward Incremental Backup

 

配置备份作业:勾选incremental backup,不选择Create synthetic full backup和Active full backup。

 

备份结果如下所示:

Introduction of Teradata Database System (3)

本篇介绍一下Teradata系统中的Secondary Index(SI)。在Teradata系统中SI是通过Sub-Table 实现的,其建立了一个或者一组列到ROW ID的Mapping,和PI类似SI也有两种:Unique SI (USI) 和Non-Unique SI (NUSI)。下图是SI的访问原理:SI

 

USI的访问是2 AMP操作,NUSI的访问是ALL AMP操作。

另外前面也已经提到其实SI是Sub-table,也就是说SI其实也是一个表,只是在系统中不能单独访问而已。既然是表在分布式系统中就会牵扯到数据分布。那么SI在Teradata系统中的数据分布是如何实现的呢?这里其实也要分USI和NUSI,这两种SI的实现是不同的。先说USI,既然是USI说明所在列的值是唯一,那么最简单的实现方法就是USI所在的列作为它自身这个Sub-table的PI,即可保证数据均匀。而NUSI就不同了,不能简单以SI所在的列作为PI来分布数据,这样很可能会造成数据倾斜。那么应该如何实现呢?其实也很简单,我们知道其实NUSI所在的表已经根据PI做了数据分布,那么NUSI这个Sub-table就依照这个数据分布来。如下图所示:

SI_2

 

可以看出SI对应的值同样是Adams,6381在AMP0,对应的SI的行也在AMP0;4711和7172,以及其对于的SI的行都在AMP1上。

和其他关系数据库类似,SI主要是加速数据访问速度,但同时增加了存储和更新的代价。在使用的时候要根据具体的业务情况,权衡使用。

VDP 最佳实践

1. 选择合适规格的VDP appliance,0.5TB、1TB or2TB。一般情况下1TB容量可以支持25台虚拟机,一个vCenter可以连接最多10个VDP appliance。

2. 在共享VMFS5或以上的版本上部署VDP,避免数据块大小限制,即要确保VDP使用的VMFS的block size大于等于所有要备份的虚拟机使用的VMFS的block size。

3. VDP需要能够访问要备份的虚拟机的数据存储

4. VDP所在的VMFS卷显示容量要大于要备份的虚拟机中的最大虚拟磁盘容量,free的容量可以小于。

5. 需要备份的虚拟机不能使用IDE接口,可以使用SCSI接口

6. 要备份的虚拟机没有配置FT,VDP不支持FT

7. 确保VDP appliance和要备份的虚拟机在同一个数据中心、

8. 确保一个vCenter下的没有同名的虚拟机或者同名的虚拟磁盘

9. 所有虚拟机运行硬件版本7或以上,以支持CBT

10. 在对虚拟机进行备份前删掉虚拟机快照,如果备份时保留快照,恢复的以后启动虚拟机时应该选i copy it, 否则会有问题

11.在VDP将执行备份的每个虚拟机上安装VMwaretools

12. 要支持hotAdd,必须在ESXi主机上部署VDP应用装置,不能使用物理机或者部署在其他的虚拟化平台上。该主机具有容纳待备份虚拟磁盘的存储路径。

13. 如果使用ESXi 4.1或5.0,确保ESXi主机获得使用Hotadd的许可,ESXi5.1包含了此功能,4.1的企业加强版包含了此功能。hotadd应该是通过license许可的,在licence features中显式为:hot-pluggable virtual HW,能够在虚拟机不离线的情况下添加新的硬件设备。

14. 需要备份的虚拟机不能有独立磁盘格式的虚拟磁盘。VDP在备份虚拟机的时候使用了虚拟机快照功能,而快照不支持独立磁盘格式(对独立磁盘格式的虚拟机做快照也不会报错,但用这个快照回滚时无法恢复数据),所以不能用VDP来备份有独立磁盘格式的虚拟机。如果使用VDP备份含独立磁盘格式的虚拟机,会有以下几种情况:

1)如果系统盘是独立磁盘格式,可以备份,但恢复时报错E222297,ssh登录到VDP看,可以发现VMFiles目录是空的,只备份了vmx配置文件。

2)如果系统盘不是独立磁盘格式,数据盘是独立磁盘格式,可以备份,也可以恢复。但恢复以后独立磁盘格式的盘是一个没有初始化的裸盘,磁盘中所有数据都会丢失。如果虚拟机是Linux的OS,因为存在fstab里面有一个没有格式化的裸盘,会导致虚拟机启动失败。

15. VDP容量规划

在执行初始备份后,应用装置在后续备份过程中会备份较少的唯一数据。完成初始备份并经过最长保留期后,可以开始评估系统容量:每天存储的新数据量与在维护窗口释放的空间量相当。这一状态称为达到稳态容量利用率。理想的稳态容量应为80%

一旦超过80%容量,应该遵循以下指导原则来进行容量管理:

1. 停止将新虚拟机添加为备份客户端

2. 删除不必要的备份作业

3. 重新评估保留策略,了解是否可以减少保留策略

4. 考虑添加额外的vDP装置,并在多个装置之间平衡备份作业。

VMware vSphere 5.1 VDP备份管理

一、vSphere Data Protection简介

        VMware vSphere5.1的新一代备份与恢复解决方案。 VMware vSphere Data Protection解决方案基于行业领先的EMC Avamar重复数据删除备份软件技术,并作为VMware vSphere 5.1的一部分推出。VMware vSphere 数据保护取代了vSphere 之前拥有的vSphere Data Recovery, 为VMware环境提供成本更低、更可信且更易于使用的备份恢复解决方案。

二、安装和配置 vSphere Data Protection

        vSphere Data Protection 5.1 需要VMware vCenter Server 5.1,Linux版本或 Windows版。Microsoft Internet Explorer 7 和 8 支持 vSphere Web Client (在 IE 8 上运行 vSphere Web Client 时存在一些问题),必须在 Web 浏览器中启用 Adobe Flash Player 11.3 或更高版本,才能访问 vSphere Web Client 或vSphere Data Protection 功能。VMware ESX/ESXi支持4.0、4.0i、4.1i、5.0i、5.1版本。

        vSphere Data Protection Appliance有三种选项可用:0.5 TB VDP,1 TB VDP,2 TB VDP,分别表示可用的磁盘空间为500G,1TB和2TB,超出应用装置可用容量的额外磁盘空间用于创建和管理检查点。

        vSphere Data Protection 在部署之后将无法更改大小,一般情况下,每TB可以支持25台虚拟机。每个vCenter可以支持最多10个VDP Appliance。

        VDP的高级版VDPA有四种配置:2TB、4TB、6TB及8TB,且VDPA在部署之后可以增加大小

clip_image002

在安装 vSphere Data Protection 之前,需要配置 DNS,NTP,权限。

需要向 DNS 服务器添加一个条目,对应于VDP Appliance的 IP 地址和完全限定的域名。此 DNS 服务器必须支持正向查找和反向查找。如果 DNS 设置不正确,可能导致出现许多运行时问题或配置问题。

        vSphere Data Protection 使用网络时间协议 (NTP)。在安装 VDP 之前,必须在将要安装VDP 和 vCenter Server 的 ESXi 主机上配置 NTP,并设置虚拟机和ESXi主机时间同步,VDP和VC时间不同步会导致VC无法连接到VDP appliance。但要注意VDP appliance本身不要设置ntp同步,否则也可能会出现某些问题。

需要在VC的根路径下添加一个管理员账号(可以是VC的账号,SSO admin的账号或者域账号),用于VDP连接VC时使用,这个账号如果使用域账号时,必须为domainname\username格式,如果用户名是按照“admin@system-domain”格式输入的,则与备份作业相关的任务可能不会在“最近运行的任务”中显式;这个账号必须经过显式的授权,通过组策略继承的权限不可以。

配置完成后,通过OVF模板部署VDP Appliance,部署的过程中需要输入初始的网络设置、时区、密码等。

三、注册vSphere Data Protection

当通过OVF安装包安装好VDP后,我们需要将VDP注册在VC上,在安装 VDP 的过程中,第一次运行配置应用工具时,它将以“安装”模式运行。在此模式下,您可以输入初始网络设置、时区、Appliance密码和 vCenter 凭据。在初始安装后, VDP-configure 应用工具以“维护”模式运行,并且显示和“安装模式”不同的用户界面。

1. 访问VDP的web网址https:// 192.168.224.235:8543/vdp-configure/,默认的用户名为root,密码为:changeme

2. 按照页面提示完成配置以后,需要返回 vSphere Web Client 并重新启动该应用装置。在 vSphere Web Client 中,右键单击应用装置,然后选择“重新启动来宾操作系统”。在“确认重新启动”消息中,单击“是”。重新启动最长需要 30 分钟。不要采用直接断电的方式,否则可能会导致VDP文件损坏。

四、使用Web Client管理vSphere Data Protection。

通过web登录到vSphere Data Protection,可以对VDP进行简单管理。在“状态”选项卡,可以通过单击“启动”来启动已停止的服务,也可以通过单击“停止”来停止运行的服务。但是,通常您必须在技术支持的指导下才能停止运行的服务。如果看到某个服务停止,可以通过单击“启动”尝试重新启动它,但在一些情况下,必须执行一些额外的故障排除步骤才能使服务正常工作。在初始安装的24~48小时内,维护服务一般是禁用的,这样可以给数据备份留出足够的时间完成第一次完整数据备份。

VDP应用中各项服务的描述如下所示:

clip_image014

如果所有服务都已停止,需要按照如下顺序启动:

1. 核心服务

2. 管理服务

3. 备份计划程序

4. 维护服务

5. 文件系统服务

6. 文件级恢复服务

日志收集器:使用日志文件器可以方便地将 vSphere Data Protection 应用装置的日志发送给支持人员。通过单击“收集日志”,可以从 vSphere Data Protection 服务将所有日志作为一个“捆绑的日志”下载。此时将显示“另存为”对话框,允许您将日志包下载到运行 Web 浏览器的计算机的文件系统。日志包的名称为 LogBundle.zip。

clip_image016

使用“配置”选项卡可以查看和编辑 vSphere Data Protection 配置。

clip_image018

使用“回滚”选项卡可以把VDP应用装置回滚到任意一个检查点。通常情况下,VDP会保留2个检查点,它的第一个还原点在VDP安装时创建,后续的还原点由维护服务创建,默认情况下,VDP每天都会在维护窗口期创建一项完整性检查。我们也可以手动创建检查点,检查点的状态通常有“验证”和“未验证”两种状态,强烈建议只回滚到处于验证状态的检查点。

在VDP非正常关机的情况下,系统会回滚到上一个检查点,在该还原点于回滚时间之间对VDP做的任何配置及通过VDP做的任何备份都会丢失。需要的话可以在VDP备份完成以后把备份出来的数据传一份到带库,以防止回滚后数据丢失。非正常关机包括VDP appliance死机,在VC中关闭虚拟机电源等,所以关闭VDP appliance时必须选择关闭客户机操作系统,而不是关闭电源。VDP appliance的重启大约需要30分钟。

clip_image020

使用“升级”选项卡可以把VDP appliance升级到最新版本。升级的步骤:

1. 升级不能选择在维护窗口和中断窗口,应选择在备份窗口时间且没有备份任务在执行的时候。

2. 升级前为确保升级失败可以回滚,需要先对VDP做快照。因为VDP磁盘为独立-持久模式,为支持快照,需要更改为相关模式。

3. 挂载升级包,注意:升级包一定要做MD5验证,防止下载的升级包不完整导致升级失败。

4. 升级

5. 删除快照,修改磁盘为独立-持久模式

clip_image022

五. 通过vSphere Web Client连接VDP

      VDP只能通过vSphere web Client进行管理,而不能通过vSphere Client进行管理。从 Web 浏览器访问 vSphere Web Client。在“凭据”页中,输入 vCenter 用户名和密码,然后单击“登录”。在 vSphere Web Client 中,选择“vSphere Data Protection”

clip_image024

         vSphere Data Protection”页中,选择 vSphere Data Protection 应用装置,然后单击“连接”。成功连接到vSphere Data Protection。每个 vCenter Server 最多支持 10 个 vSphere Data Protection 应用装置。通过在“切换应用装置”标签右侧的下拉列表中选择应用装置,可以切换应用装置。

clip_image026

六、使用vSphere Data Protection进行备份

连接后就可以创建备份作业,其中包含要备份哪些虚拟机、进行备份的频率以及存储备份的保留期。vSphere DataProtection 使用备份窗口来创建新备份和保留策略,也可删除特定的旧备份。

备份可以指定虚拟机的集合,例如数据中心内的所有虚拟机,或者选择单个虚拟机。如果选择了整个资源池、主机、数据中心或文件夹,则接下来的备份将包含该容器中的所有新虚拟机。如果选中了某个虚拟机,则备份中将包含添加到该虚拟机的所有磁盘。如果某个虚拟机从选中的容器移动到其他未选中的容器,则备份中不再包含该虚拟机。可以手动选择要备份的虚拟机,这可以确保即使该虚拟机已移动仍会进行备份。

1、单击“备份”选项卡,然后单击“新建”以启动备份作业向导。在“虚拟机”页中,选择各个虚拟机或包含要备份虚拟机的容器,然后单击“下一步”。VDP备份时选中的虚拟机包括了该虚拟机所有的磁盘,不能选择某个磁盘进行备份。

clip_image028

2、在“计划”页中,选择该作业的备份计划,然后单击“下一步”。

clip_image030
3、在“保留策略”页中,接受默认保留策略或指定其他保留策略,然后单击“下一步”。

clip_image032

4、在“名称”页中,输入备份作业名称,然后单击“下一步”。

clip_image034

5、在“即将完成”页中,复查备份作业的摘要信息,然后单击“完成”。

clip_image036

6、此时将显示一个信息对话框,确认已成功创建备份作业。单击“确定”。

clip_image037

7、创建备份之后,可以通过“立即备份”图标手动启动备份作业。使用“立即备份”选项之前,必须已安装和配置 vSphere Data Protection,并且至少应有一个备份作业。

clip_image039

8、“备份所有源”指定应备份所有作业。“只备份过时源”指定上次备份尝试失败的备份作业。

clip_image040

9、为 vSphere Data Protection 数据存储区选择精简或密集资源调配的磁盘都有优势和不足。精简资源调配使用虚拟化技术,允许显示比实际或许可用的磁盘资源更多的磁盘资源。如果管理员正在主动监视磁盘空间,并且能够在精简磁盘增长时分配额外的物理磁盘空间,则可以使用此技术。如果未对此功能进行管理,并且 vSphere Data Protection 数据存储区位于无法分配空间的精简资源调配的磁盘上,则 vSphere DataProtection 应用装置将会失败。如果发生这种情况,可以回滚到经验证的检查点。在该检查点后执行的任何备份都将丢失。密集资源调配将在创建磁盘时分配所需的全部存储。vSphere Data Protection 数据存储区的最佳做法是在部署vSphere Data Protection 应用装置时创建精简资源调配的磁盘(这样可以实现快速部署),然后在部署后,将磁盘从精简资源调配转换为密集资源调配。

10. 所有运行的任务都可以在recent task选项卡下查到,针对一个计划备份任务,VDP会记录如下任务条目:

1) 创建虚拟机快照(vCenter对要备份的虚拟机执行操作)

2) VDP:计划的备份作业(vSphere Data Protection启动备份作业)

3) 重新配置虚拟机(vSphere Data protection向vCenter请求服务)

4) 删除快照(vCenter对已经完成备份的虚拟机执行操作)

11.  配置备份窗口时间,VDP把每天的24小时分为3个运行窗口时间:备份窗口,维护窗口,中断窗口,各个窗口时间可以进行调整。

clip_image042

备份窗口:每天为执行正常的计划备份保留的时间段。

维护窗口:每天为执行VDP日常维护活动(如完整性检查)保留的时间段。当VDP处于维护模式时,请勿计划备份或执行立即备份。否则的话,备份作业虽然将会运行,但会占用VDP执行维护任务时所需的资源。在维护窗口开始时已处于运行状态或者在维护窗口期间运行的作业将继续运行。

中断窗口:每天为执行需要不受限制的访问VDP应用装置的服务器维护活动保留的时间段(如评估备份保留期)。这些活动将被授予最高优先级,他们将取消所有正在进行的备份。此外,在运行这些高优先级流程时,不允许启动任何备份作业。不过,一旦这些高优先级流程完成工作,即使为中断窗口分配的时间未用完,也允许运行备份作业。中断窗口开始时已经处于运行状态或者在中断窗口期间运行的作业可以继续运行,不过,中断窗口中的某些维护流程可能会取消这种作业。

12 . 备份数据的存储位置。ssh登录到VDP appliance,所有的数据备份在/mnt/axion/<vCenter IP address>/VirtualMachines下、

clip_image043

七. 使用vSphere Data Protection还原虚拟机

1. 在Restore选项卡中点击Restore按钮,选择要还原的虚拟机,点击next

clip_image045

2. 可以选择恢复到原始位置,或在新位置恢复。在新位置恢复时,可以选择恢复完成后是否开机,是否连接网络,点击next。VDP在虚拟机还原的时候不需要源VM文件,即使该VM已经损坏,或者已经被删除,都可以进行恢复。 另外,有时候在Web Client中提交了恢复任务,当前任务列表中并没有任何显示,而且恢复操作启动很慢,大概过了5分钟才在任务列表中看到有新建虚拟机的操作,这个恢复过程没有任何的进度提示。当你在虚拟机列表中已经看到恢复的VM时,并无法启动该VM,因为该VM并没有完成恢复,但是没有任何进度提示显示。

clip_image047

3. 检查恢复信息,无误后点击finish

clip_image049

4. VDP在中断窗口对备份数据的保留期限进行评估,超过保留期限的备份数据将会被删除,如果不希望删除某个已经超过保留期限的数据,可以选择将这个数据lock掉,被locked的数据在VM图标左下角会有锁的标志,它们在超过保留期限时也不会被删除。

clip_image051

5. 当vCenter(vSphere Web client)故障时如何做VM的恢复

1)可以从VDP中把虚拟机文件拷贝出来,然后用这些文件恢复虚拟机。

2)部署一个vCenter appliance,把VDP重新注册在这个vCenter appliance中,通过新的vCenter进行VM的恢复

Introduction of Teradata Database System(2)

前一篇介绍了Teradata的系统架构。本篇主要介绍一下Primary Index(PI)。在Teradata数据库系统中,PI是非常重要的一个概念。PI不同于Primary Key(PK),PK是一个逻辑概念,PI是一个物理概念。除此之外,PI的特点还有,它是访问数据最有效的路径,它的值可以为空,也可以不唯一。同时它还决定了数据分布。Teradata系统中的数据分布不同于HDFS这样的分布式文件系统,它是根据PI的哈希值,然后按照预先定义好的Hash Map来分布数据,如下图所示。一个PI值经过Hash得到一个32位的Hash值称为Row Hash,然后取其前20或者前16位作为Hash Bucket Number(HSN)。最后根据HSN和Hash Map来确定数据应该存储在哪个AMP上。所以在Teradata系统中,PI的选择和设计是非常重要的。如果选择不合理会造成数据分布不均匀。而且由于每个AMP单独管理自己的数据,数据倾斜会严重影响系统性能。

hashmap

另外为啥说它访问数据最有效的路径呢?下面介绍一下如何通过PI来读取数据。PI可以是唯一的称为Unique Primary Index(UPI),也可以是非唯一的称为Non-Unique Primary Index(NUPI)。举个例子,有这样一个查询: select * from t1 where t1.col_x = 25,其中col_x是NUPI。如下图所示:PI

PE根据col_x的值算出Hash值,根据Hash Map确定数据存储在哪个AMP上。然后将计划发给对应的AMP,读取相应的值。整个过程是单AMP操作,所以说PI是数据访问最有效的路径。

Teradata的这种数据分布方式要求数据仓库的设计者要对数据以及业务有足够的了解。PI的选择不仅关系到数据分布也关系到查询处理的性能。例如两个表在PI上做等值连接,那么所有的AMP只要读取自己本地的数据做JOIN就可以了。但是如果不是在PI上做连接,也就是说做连接的两个列不都是,或者都不是PI,那么就会有数据重分布的问题。也就是说要根据做等值连接的列的Hash值,重新分布数据,然后再做连接。因为数据要重分布,性能也会差很多。因此PI的选择不能仅仅考虑数据的分布,也要考虑到业务上的需求,比如通常在那些列上做连接等等。关于PI的选择,后面有时间单独介绍。最近也在看HDFS相关代码,后面有时间也会写篇关于这两种数据分布方式的对比。下一篇会介绍一下Secondary Index。