voltDB官方文档第三章翻译

序:本文章是自己再网上查看VoltDB相关资料的时候没有找到太好的学习资料,就前去官方网站上翻译了一部分,约束于个人英语能力有限。实际记录下来的翻译只有第三章。

注:文章翻译自voltDB官方提供的学习资料的第三章。-- 2018-08-28时的版本

 

章节 3:启动数据库

这章描述了voltDB数据库程序的启动,关闭和数据的细节配置。章包含以下部分:

       部分3.1:初始化和启动一个数据库

       部分3.2:在集群中初始化和启动一个数据库

       部分3.3:停止一个数据库

       部分3.4:保存数据

       部分3.5:重启一个数据库

       部分3.6:更新集群中的节点

       部分3.7:明确集群配置

 

3.1 初始化和启动数据库

在你启动数据库之前,你必须初始化根目录来存放VoltDB数据库配置数据,日志和其他的基于磁盘的信息。一旦初始化根目录,你就能启动数据库。举个栗子,你能使用(accept:接收,我倾向于使用)默认的“voltdb init”和“voltdb start” 去初始化并启动一个新的,单一的适合数据库开发和测试的数据库及其应用。

 

例:

       $ voltdb init

       $ voltdb start

这样会创建一个VoltDB的根目录作为当前工作目录的子文件夹并且启动一个使用全部默认选项的数据。你只需要初始化根目录一次就能随你意愿的启动和停止数据库。

 

例:

       $ voltadmin shutdown

       $ voltdb start

如果你使用了命令行日志,在企业版中是默认启动的(万恶的企业版),VoltDB自发保存和恢复数据库当发生任何方式的停止(没测试过,保持疑问)和重启时。如果你没有使用命令行日志,你想要在停止之前保存快照。一种简单的方式是在shutdown的命令行上添加“--save“参数。

当数据库重启时快照自动回滚

       $ voltadmin shutdown –save

       $ voltdb start

 

如果你想创建一个新的数据库,你可以重新初始化根目录。然而,当这个数据库已经被使用过时你必须使用--force” 标志;VoltDB 不能清除根目录除非你指定(explicitly:明确)“强制”去做。(其实就是添加了 --froce 强制操作后,可以强制初始化当前目录。 )

例:

       $ voltdb init –froce

       $ voltdb start

 

你也能使用 --dir或 -D 标识来指定一个替换路径给根目录。当然,你也必须使用相同的根目录在使用初始化和启动数据库的时候。你不能在一个没有初始化的目录中启动数据库。

例:

       $ voltdb init --dir=~/mydb

       $ voltdb start --dir=~/mydb

 

在大多数情况下,你将想要使用附加参数的方式配置服务和数据库参数,但是前面提供的命令足够你在测试环境中启动。本章的其余部分将说明如何使用其他参数以及如何在使用群集时启动、停止和恢复数据库。

 

最后,当使用VoltDB企业版的时候,你必须提供一个许可文件当启动数据库的时候。VoltDB按照以下顺序在三个可能的位置查找许可证名为LIXESE.XML的文件:

  1. 当前工作目录
  2. 目录在VoltDB图像文件安装(通常在/ VoltDB对 安装目录的子文件夹)
  3. 当前用户的根目录

如果许可证文件不在这些位置,你必须明确地识别它,当你运行“voltdb start”命令的使用 --license””-l”标志例如:

       $ voltdb start -l /usr/share/voltdb-license.xml\

 

3.2 初始化和开始一个数据库在一个集群里

       你初始化和开始一个集群和你启动一个单一节点是一样的:使用 “voltdb init” 和“voltdb start”命令行。唯一的区别是,在启动集群时,必须告诉集群节点集群有多大,以及哪些节点用作启动的潜在主机。

       在每个服务器上使用“voltdb init”命令初始化根目录。您可以接受默认配置 如前一节。然而,当建立一个集群你经常想做一些 配置调整(例如,使k-safety(PS:这个是个啥?。?))。因此,进入指定 配置文件的习惯是一个好主意。(其实就是让你把配置信息放到文件中,防止忘记。)

       当你初始化数据库的时候可以通过 “--config”或”-C”标识来调用你指定的配置文件。所有的节点必须使用相同的配置文件。例如:

$ voltdb init –D ~/mydb –config=myconfig.xml

(-D用于指定初始化路径,上节提到过。)

 

所有节点都被初始化后,你开启集群通过发行“voltdb start”命令行并在所有的节点上指定以下信息:

  • 集群中的节点数:当你开始集群,你指定多少 服务器组成集群使用“--count”标识
  • 服务器名:你在集群中指定一个或多个主机名或ip地址从哪些有潜在潜力成为“host”的节点来形成集群。(有点晕,这句话翻译的不准)。你指定主机列表使用“--host”或 “-H”标识。你必须指定一个节点作为主机。

对于集群中的每一个节点,开始工作和开启服务器进程使用相同的“voltdb start”命令行。例如,下面的例子启动一个五节点数据库集群指定“voltstr1” 作为主机节点。必然的节点的数量符合命令行中再“--count”参数上指定的数量。

例:

       $ voltdb start –count=5 –host=voltstr1

或者你也可以使用参数标记的缩写形式:

       $ voltdb start -C 5 -H voltstr1

 

虽然你只需要指定一个潜在的主节点,但指定多宿主是一个好主义。这种方式,你能使用问安全相同的命令行在一个高可用的集群上启动和重新启动节点。即使重启的节点在主机列表外,运行的节点能被方便加入(有点晕?。?)

进一步简化,你用指定所有的节点到”--host”参数上。如果你这样做了的话,你能跳过“--count“参数。如果”--count“是缺省的,VoltDB假设在“--host”中的服务器数量是完整的并且设置服务器数量和它相等。例如,以下命令 “--issued” 发布全部的三台服务器“--start”启动一个三节点集群:

$ voltdb start –host=svrA,svrB,svrC

      

       当在一个集群上开启一个VoltDB数据库,VoltDB执行一下一系列操作:

  1. 如果正在启动得数据库被选作为主节点,它将等待其他节点得初始化信息。主节点是从命令行上的主机列表和管理集群的形成过程中起着特殊的作用。这是很重要的,集群中的所有节点都可以解决主机名或您指定的主机节点的IP地址。
  2. 如果正在启动一个非主节点的数据库,它发送一个初始化信息给主服务器提示已经准备好了。数据库将不进行任何操作直到正确数量的数据库(在命令行上指定的ps:应该就是”--count”)链接上。
  3. 直到所有节点都发出初始化信息,主节点送出一个信息通知其他节点集群完成。直到启动程序完成,主节点角色结束并且它将变成一个同等于在集群中的其他节点。他不进行进一步的特殊功能。

手动登录到集群中的每个节点当每次你想要启动数据库的时候是乏味的。反而,你能使用ssh去远程执行shell命令行。通过创建一个ssh脚本(给予适当的权限)你能复制文件并或在每个节点上通过单一的脚本启动数据库。或者你能使用VoltDB环境管理去启动集群从一个单一正规的接口。查看“部署集群与VoltDB部署管理器(第五章)”章节的“VoltDB管理员指南”部分来获取更多信息

 

3.3 停止一个VoltDB数据库

一旦VoltDB数据库是启动并且运行着,你就能通过停止集群中的每个节点上的VoltDB服务进程来关闭它。然而,有一个通过单一命令的就能停掉数据库的命令。你要做到这个通过“voltadmin shutdown”命令,它能暂停数据库活动,完成所有当前事务,并且清空任何队列数据(像是导出或数据库复制)在实际关闭之前。举个栗子,输入以下命令在没有指定任何服务器的时候将会有序的关闭数据库集群上当前系统的那部分。

例:

       $ voltadmin shutadmin

如果你没有启用命令行日志,又想要保存所有的数据,你需要去添加一个“--save”参数,去保证保存一个快照在关闭之前:

例:

       $ voltadmin shutdown --save

 

在其他system上关闭一个非本机的数据库使用“--host”参数访问远程数据库的参数。举个栗子,输入线面的命令,关闭zeus服务器上的VoltDB数据库。

例:

       $voltadmin shutdown --host=zeus

 

你能暂停数据库使用“voltadmin pause”命令去限制客户端访问它在你在管理模式执行改变的时候。你能恢复这个数据库通过“voltadmin resume”命令。查看“VoltDB管理员指南”了解更多操作模式。

 

3.4 数据保存

因为VoltDB是一个内存型数据库,一旦数据库服务器进程停止,数据库计划和数据会被从内存中移除。然而,VoltDB能保存这些信息到磁盘上通过命令行日志和快照,所有使用这些特性是强烈推荐的。

       命令行日志提供VoltDB大部分完整的数据的耐久性并且它是默认选项在VoltDB企业版。命令行日志在保存的每一笔事务的时候自动工作。如果数据库由于任何原因停止,则可以重放这些日志。

       快照,在另一方面,省略了每时每刻复制数据库数据到磁盘上的操作。你能手动通过“voltadmin save”来创建快照,你能启动周期性(也称自动)快照,或者你能保存一个最终的快照当你使用“voltadmin shutdown --save”来关闭数据库的时候,当数据库重启的时候快照被回滚,但是仅能返回到数据库快照最后一次被保存时候的状态。

 

学习更多关于命令行日志请看 章节14 “命令行日志和恢复”。去学习更多关于保存和回滚数据库快照请看 章节 13 “保存&回滚一个VoltDB数据库”。

 

3.5 重启VoltDB数据库

一旦一个数据库停止,你能重启它通过和启动一样的“voltdb start”命令行。一旦数据库启动,所有的命令行日志或快照将被回滚。在VoltDB企业版,命令行日志自动恢复数据库最后的状态。如果没有命令行日志但是存在快照,数据库将会恢复到快照生成时候的状态。举个栗子,下面的命令行重启一个单一节点数据库。

例:

       $ voltdb start

 

重启一个集群中的数据库,问题相同“voltdb start“用于启动群集命令, 包括服务器主机和数列表。举个例子:

例:

       $ voltdb start --count=5 --host=voltsvr1

 

3.6 更新集群中的节点

一个集群就是一个可能发生停止或故意停止或不能预料情况的动态系统。或是为了提高性能而在数据库中扩展集群节点。“voltdb start“命令行提供了以下的附加功能,描述在这本书之后,对于重新加入和新增节点到一个运行中的VoltDB数据库。

       部分 10.3“系统故障恢复“—使用”voltdb start“命令行提启动集群或重新加入失败过的节点。

       部分 9.2.1“弹性缩放增加节点“—使用“voltdb start”与“--add”标识向一个运行中的数据库中插入一个新的节点。

 

3.7 定义集群配置(重点重点来了)

一个VoltDB数据库有两个重要的方面。一方面是运行数据库的集群的物理设计,另一方面是你选择的使用的数据库特性。你定义的物理集群设计使用“voltdb start”命令行和“--count”和“--host”标识说明。你能启用或禁用特殊的数据库特定在配置文件中。当你初始化的时候在“voltdb init”上添加“--config”来指定。

配置文件的格式是一个xml文件,在你初始化根目录的时候指定了配置文件。对配置文件的基本语法如下:

       <?xml version="1.0"?>

<deployment>

   <cluster kfactor="n" />

 

   <feature option... >

   </feature>

 

   ...

 

</deployment>

<cluster>标签的属性决定了数据库分区的设计。<cluster>标签的属性:

       siteperhost—指定数字分区在集群中的每一台服务器上创建。“sitesperhost” 标志值乘以服务器的数量,从而给出集群中分区的总数。见 部分 3.7.1“确定每个主机有多少个位置(Sites没找到太形象的理解)”对于分区数量的解释。

Kfacter —决定副本机(K-safety)制中N的值保证耐久性当创建数据库的时候(通俗讲就是VoltDB在操作数据的时候创建N+1个副本来保证可用,当所有副本都不可用的时候就会停止服务)。这个K-safely的值控着数据库分区的复制。看章节10“可用性”获取更多关于K-safely的信息。

在最简单的情况下,在没有启用特殊选项的单个节点上运行时,你能跳过在“voltdb init”命令行上指定配置文件和在“voltdb start”上指定服务器数量和服务器。如果你没有指定配置文件,VoltDB默认八个指定设置给配置主机并且K-safely的值设定为0(就是留有一个副本)。

配置文件也能启动或配置许多其它的数据库运行时相关的参数。在着之后将会描述。举个栗子,配置文件能指定:

       ·是否启用安全性,用户和密码都需要验证客户端在运行时。看到章 12“安全”更多信息。

       ·保存数据库自动快照的时间表。参见第13.2部分,“调度自动快照”。

       ·从其它数据源导出导入数据的配置信息。见:“章节15:在线导入导出”

完整的配置文件语法见:“附录E:配置文件(deployment.xml)”。7.1

3.7.1 确定每个主机有多少个位置

分配更多位置比给数据库添加分区来使用带来的危害要小的多(除了增加内存)。因此,VoltDB每个host有八个站点去提供合理性能在大多数现代系统配置上。该默认值通常不需要改变。然而,对于拥有大量可用处理器的系统(16或更多)或是一些老机器处理器数量比8个少并且小的内存。你可能希望调谐“sitesperhost”参数。

因为没有设置规则,网站每节点的最优数量是最好的计算实际上 标杆看什么内核和网站结合应用能产生最好的结果。然而,它是要记住在群集的所有节点将使用相同数量的 重要网站。所以,实现最佳的性能, 采用集群的所有节点具有相同的物理结构(即核心)。

3.7.2 配置路径的运行特征。

一些运行特性的一个重要方面是,他们使用持久性存储在磁盘资源会话。举个栗子,自动快照需要一个存储数据库快照的路径。同样,导出使用当导出队列不能保持后写入溢出数据的磁盘存储器。(?。?)

你能指定个人的对于每一个特性的路径在配置文件中。如果没有,VoltDB 创建将在根目录下创建哪些被需要的特性的子文件夹,仅能使用在测试上。然而,在生产上,它直接决定高量使用的特性,例如命令行日志,去分离设备去避免磁盘 I/O 对数据库性能造成的影响。

你能识别特性的配置路径,在 <paths> 元素,像下面的特性:

       ·<commandlog>

       ·<commandlogsnapshot>

       ·<exportoverflow>

       ·<snapshots>

如果你命名了一个特别的特性目录并且他是不存在的(目录不存在),VoltDB尝试给你创建它。举个栗子,“<exportoverflow>”路径包含能被定期删除的临时数据。下面的引用来自一个配置文件 指定”/opt/overflow“作为溢流出口的目录:

<paths>

       <exportoverflow path=”/opt/overflow”/>

</paths>

3.7.3 验证您的硬件配置

配置文件和启动命令行参数能定义想要的数据库集群的配置。然而,有几个重要方面的物理硬件和操作系统的配置在你启动VoltDB之前应该知道:

       ·VoltDB能操作异构集群。然而,最好的性能标识是运行在类似硬件山的相同程序和相同内存的节点。

       ·所有的节点必须能够解决集群中的其他节点的IP地址和主机名。这意味着 必须有有效的DNS条目或有适当的条目在本地主机文件。

       ·必须运行网络时间协议(NTP)的所有群集节点同步,最好是对 同本地时间服务器。如果集群中的节点之间的时间差大于200毫秒,VoltDB不能 启动数据库。

       ·这是强烈建议您使用“-x“参数运行NTP。使用”ntpd -x“停止服务器调整时间向后但非常大的增量。

 

猜你喜欢

转载自blog.csdn.net/qq739984041/article/details/82733130