NuoDB
by NuoDB

Nuodb上的耐用性和冗余

你好TechBlog读者!今天我会谈论 耐久性, 这 D 在酸,在Nuodb的云澳门比分网址上。

那么Nuodb如何确保耐用性?让我们从Storage Manager进程(即数据层)开始。

Storage Manager,sm短,负责维护澳门比分网址的完整副本。原子,澳门比分网址元素,存储到本地磁盘,HDFS,Amazon S3或Amazon EBS。这些原子由称为存档的特定模块写入。但是,存档没有任何特殊机制来满足耐用性要求。不要FRET,NOODB有另一个名为杂志的模块,将救援。期刊在面对意想不到的过程终止方面有繁重的任务。例如,电源损失,机器熔化或误杀死过程的实习生。期刊将确保在网上返回时以一致的状态重建存档。它是如何工作的?在保留消息的顺序时,期刊将同步将每个传入消息写入磁盘。同步写入的实现细节是依赖的操作系统,但它基本上使用以下文件创建标志; o_sync在mac上&Linux上的Solaris,(O_Direct | O_Sync),以及Windows上的(file_flag_no_buffering | file_flag_write_through)。这可确保数据将立即写入磁盘设备,而不是存储在OS页面缓存中。

所以,如果我只是启用日记,那么澳门比分网址会耐用吗?不太快,先生。让我们来看看以下例子。

java -jar /opt/nuodb/jar/nuodbmanager.jar --broker localhost --password bird

nuodb [domain] > start process sm
Database: hockey
Host: localhost
Process command-line options: --journal enable --journal-dir /var/opt/nuodb/demo-journal
Archive directory: /var/opt/nuodb/demo-archives
Initialize archive: true 
Started: [SM] localhost/127.0.0.1:54943 [ pid = 19929 ] ACTIVE

nuodb [domain/hockey] > start process te
Host: localhost
Process command-line options: --dba-user dba --dba-password goalie
Started: [TE] localhost/127.0.0.1:54946 [ pid = 19930 ] ACTIVE

不幸的是,只需吉祥的日志启动的澳门比分网址不会像您想要的那样耐用。请记住,期刊仅重点侧重于将原子保持在存档中。但是,还有另一部分称为提交协议,其在串联中使用日记,以提供端到端的耐用性。在上面的命令中,提交协议使用默认的“本地提交”模式(即未指定),并且不提供交易的耐用性。在本地提交中,事务引擎,TE,异步向存储管理器广播提交消息,但在回复客户端之前,它不会等待存储管理器响应。这意味着可以在交易引擎中提交事务,但可能无法在存储管理器上致力于。更具体地说,事务及其相关的原子(表,记录,索引等)可能没有通过存储管理器内的库或存档写入磁盘。在澳门比分网址中所有存储管理器意外退出的本地提交情况下,事务及其关联数据将丢失。

提交协议

这将我们带到下一个主题, 提交协议 (“--commit”),这是对保证耐用性的一体化。 NOODB支持三种不同的提交设置;本地提交,远程提交无日记,并与日记中的远程提交。这使您可以调整澳门比分网址中的耐用性水平,并为您提供换速耐用性的能力。

本地提交('--comit local')
在事务引擎上本地提交,但不确保交易持久性。

没有日志的远程提交('--commit remote')
在至少一个存储管理器上远程提交,而无需等待原子要由存档写入。一旦事务在内存中,存储管理器将返回到事务引擎。默认情况下禁用日志(即,您不需要指定它),但如果您想将其设置为显式使用:“--journal禁用”

借助日志的远程提交('--comit remote --journal启用')
在至少一个存储管理器上远程提交,并要求在存储管理器发送ACK之前,在日志之前将事务提交消息和所有前述消息写入磁盘。

什么是GOTCHAS以及如何使用“--commit”设置?启动进程时,该设置在选项字段中指定。在此处提出额外的注意,因为这个设置必须一致地在每次TE上&澳门比分网址中的SM进程。这意味着必须为每个TE指定相同的设置&SM开始启动。请注意,此设置只能在进程启动时设置。在未来,我们将通过SQL命令在运行时进行这种可配置,但现在仅在开始时间。

java -jar /opt/nuodb/jar/nuodbmanager.jar --broker localhost --password bird

nuodb [domain] > start process sm
Database: hockey
Host: localhost
Process command-line options: --commit remote
Archive directory: /var/opt/nuodb/demo-archives
Initialize archive: true
Started: [SM] localhost/127.0.0.1:54955 [ pid = 19936 ] ACTIVE

nuodb [domain/hockey] > start process te
Host: localhost
Process command-line options: --commit remote --dba-user dba --dba-password goalie
Started: [TE] localhost/127.0.0.1:54959 [ pid = 19937 ] ACTIVE

以前的命令如何配置澳门比分网址?我会给你一个提示,“ - journal”设置被遗​​漏了。如果您用“没有日记的远程提交”回答,那么您是正确的!对不起博客没有奖品。目前,我不建议使用此设置运行,因为关闭时存在一些耐用性问题。我们正在努力清理该领域的代码,所以期待未来的帖子。

那么提供澳门比分网址的最安全和最耐用的方法是什么?双手“遥远的日记”是去的方式。以下是命令:

java -jar /opt/nuodb/jar/nuodbmanager.jar --broker localhost --password bird

nuodb [domain] > start process sm
Database: hockey
Host: localhost
Process command-line options: --commit remote --journal enable --journal-dir /var/opt/nuodb/demo-journal
Archive directory: /var/opt/nuodb/demo-archives
Initialize archive: true
Started: [SM] localhost/127.0.0.1:54971 [ pid = 19944 ] ACTIVE

nuodb [domain/hockey] > start process te
Host: localhost
Process command-line options: --commit remote --dba-user dba --dba-password goalie
Started: [TE] localhost/127.0.0.1:54974 [ pid = 19945 ] ACTIVE

最耐用的澳门比分网址以速度成本;更具体地进行事务吞吐量和延迟。即使通过启用日记,这里有一个提升性能的提示!将存档和日志放在单独的磁盘驱动器上并配置日记录目录位于固态驱动器(SSD)上。这是SM的命令:

java -jar /opt/nuodb/jar/nuodbmanager.jar --broker localhost --password bird

nuodb [domain] > start process sm
Database: hockey
Host: localhost
Process command-line options: --commit remote --journal enable --journal-dir /ssd/nuodb/demo-journal
Archive directory: /var/opt/nuodb/demo-archives
Initialize archive: true
Started: [SM] localhost/127.0.0.1:54984 [ pid = 19950 ] ACTIVE

硬件和经纪人冗余

上面的所有示例都是在单个计算机上。这不是运行NOODB澳门比分网址或域的现实方法。为了缓解风险,应将澳门比分网址配置为“Geaching Journaling”,并且应该有冗余硬件组件以及冗余经纪人。

以下示例演示了确保冗余域和耐用澳门比分网址的配置。

*两个代理进程和三个代理过程,每个都在单独的硬件上。

*启用时光的两个短信&远程提交单独的硬件。

* Three TEs with远程提交单独的硬件。

*设计网络和JDBC应用程序,以动态连接到备用代理。 (为读者练习)

*如果连接丢失到TE,请将客户端应用程序配置为通过代理重新发出请求。 (为读者练习)

 

图形拓扑

冗余多主机DB

提供经纪人和代理人

在主机A - 开始经纪人

# Use the default broker config
sudo service nuoagent start

在主机b,c,&d - 启动代理商

sudo vi /opt/nuodb/etc/default.properties
broker = false
peer = 
sudo service nuoagent start

在主机电子e - 启动冗余经纪人

sudo vi /opt/nuodb/etc/default.properties
peer = 
sudo service nuoagent start

配置澳门比分网址

export NUOMGR="java -jar /opt/nuodb/jar/nuodbmanager.jar --broker  --password bird --command"
# Start Storage Manager on Host A
$NUOMGR "start process sm host  database hockey archive '/var/opt/nuodb/demo-archives' initialize yes options '--commit remote --journal enable --journal-dir /var/opt/nuodb/demo-journal'"

# Start Storage Manager on Host E
$NUOMGR "start process sm host  database hockey archive '/var/opt/nuodb/demo-archives' initialize yes options '--commit remote --journal enable --journal-dir /var/opt/nuodb/demo-journal'"

# Start Transaction Engine on Host B
$NUOMGR "start process te host  database hockey options '--commit remote --dba-user dba --dba-password goalie'"

# Start Transaction Engine on Host C
$NUOMGR "start process te host  database hockey options '--commit remote --dba-user dba --dba-password goalie'"

# Start Transaction Engine on Host D
$NUOMGR "start process te host  database hockey options '--commit remote --dba-user dba --dba-password goalie'"

上述多主机配置提供了代理冗余,澳门比分网址耐用性,并通过缩放交易引擎来提高性能。这也是节点故障检测的最佳配置,因为它可以存活多个主机故障。想了解更多有关节点故障检测的吗?我将标记为丹,我尊敬的同事和节点失败大师。

想要了解有关Nuodb耐用性和冗余的更多信息吗?签出这些DOC页面: