有哪些分布式数据库,实现最终一致性的(分布式数据库与集中式数据库的区别)

有哪些分布式数据库,实现最终一致性的(分布式数据库与集中式数据库的区别),第1张

一个分布式数据库在用户面前为单个逻辑数据库,但实际上是由存储在多台计算机上的一组数据库组成

在几台计算机上的数据库通过网络可同时修改和存取,每一数据库受它的局部的DBMS控制

分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性

在系统中的每一台计算机称为结点

如果一结点具有管理数据库软件,该结点称为数据库服务器

如果一个结点为请求服务器的信息的一应用,该结点称为客户

在ORACLE客户,执行数据库应用,可存取数据信息和与用户交互

在服务器,执行ORACLE软件,处理对ORACLE数据库并发、共享数据存取

ORACLE允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由网连接的不同计算机上时,更有效

分布处理是由多台处理机分担单个任务的处理

在ORACLE数据库系统中分布处理的例子如:客户和服务器是位于网络连接的不同计算机上

单台计算机上有多个处理器,不同处理器分别执行客户应用

SQLNET是ORACLE网络接口,允许运行在网络工作站的ORACLE工具和服务器上,可存取、修改、共享和存储在其它服务器上的数据

SAQLNET可被认为是网络通信的程序接口

SQLNET利用通信协议和应用程序接口(API)为OARCLE提供一个分布式数据库和分布处理

SQLNET驱动器为在数据库服务器上运行的ORACLE进程与ORACLE工具的用户进程之间提供一个接口

参与分布式数据库的每一服务器是分别地独立地管理数据库,好像每一数据库不是网络化的数据库

每一个数据库独立地被管理,称为场地自治性

场地自治性有下列好处:◆系统的结点可反映公司的逻辑组织

◆由局部数据库管理员控制局部数据,这样每一个数据库管理员责任域要小一些,可更好管理

◆只要一个数据库和网络是可用,那么全局数据库可部分可用

不会因一个数据库的故障而停止全部 *** 作或引起性能瓶颈

◆故障恢复通常在单个结点上进行

◆每个局部数据库存在一个数据字典

◆结点可独立地升级软件

可从分布式数据库的所有结点存取模式对象,因此正像非分布的局部的DBMS,必须提供一种机制,可在局部数据库中引用一个对象

分布式DBMS必须提供一种命名模式,以致分布式数据库中一个对象可在应用中唯一标识和引用

一般彩在层次结构的每一层实施唯一性

分布式DVMS简单地扩充层次命名模型,实施在网络上唯一数据库命名

因此一个对象的全局对象名保证在分布式数据库内是唯一

ORACLE允许在SQL语句中使用佤对象名引用分布式数据库中的模式对象(表、视图和过程)

在ORACLE中,一个模式对象的全局名由三部分组成:包含对象的模式名、对象名、数据库名、其形式如:SCOTT

EMP@SALES

DIVISION3

ACME

COM其中SCOTT为模式名,EMP为表名,@符号之后为数据库名

一个远程查询为一查询,是从一个或多个远程表中选择信息,这些表驻留在同一个远程结点

一个分布式查询可从两个或多个结点检索数据

一个分布式更新可修改两个或两个以上结点的数据

一个远程事务为一个事务,包含一人或多个远程语句,它所引用的全部是在同一个远程结点上

一个分布式事务中一个事务,包含一个或多个语句修改分布式数据库的两个或多个不同结点的数据

在分布式数据库中,事务控制必须在网络上直辖市,保证数据一致性

两阶段提交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务中的语句

ORACLE分布式数据库系统结构可由ORACLE数据库管理员为终端用户和应用提供位置透明性,利用视图、同义词、过程可提供ORACLE分布式数据库系统中的位置透明性

ORACLE允许在SELECT(查询)、INSERT、UPDATE、DELETE、SELECTFORUPDATE和LOCKTABLE语句中引用远程数据

对于查询,包含有连接、聚合、子查询和SELECTFORUPDATE,可引用本地的、远程的表和视图

对于UPDATE、INSERT、DELETE和LOCKTABLE语句可引用本地的和远程的表

注意在引用LONG和LONGRAW列、序列、修改表和封锁表时,必须位于同一个结点

ORACLE不允许作远程DDL语句

在单场地或分布式数据库中,所有事务都是用COMMIT或ROLLBACK语句中止

ORACLE提供两种机制实现分布式数据库中表重复的透明性:表快照提供异步的表重复;触发器实现同步的表的重复

在两种情况下,都实现了对表重复的透明性

MySQL数据库主从延时如何去判断呢?本文我们介绍了两种判断方法:1 Seconds_Behind_Master vs 2 mk-heartbeat,接下来我们就分别介绍这些内容。 日常工作中,对于MySQL主从复制检查,一方面我们要保证复制的整体结构是否正常,另一方面需要检查主从数据是否保持一致。对于前者我们可以通过监控复制线程是否工作正常以及主从延时是否在容忍范围内,对于后者则可以通过分别校验主从表中数据的md5码是否一致,来保证数据一致,可以使用Maatkit工具包中的mk-table- checksum工具去检查。 方法1: 通过监控show slave status\G命令输出的Seconds_Behind_Master参数的值来判断,是否有发生主从延时。其值有这么几种: NULL — 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes。 0 — 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为lag不存在。 正值— 表示主从已经出现延时,数字越大表示从库落后主库越多。 负值— 几乎很少见,我只是听一些资深的DBA说见过,其实,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。 show slave status\G,该命令的输出结果非常丰厚,给我们的监控提供了很多有意义的参数,比如:Slave_IO_Running该参数可作为 io_thread的监控项,Yes表示io_thread的和主库连接正常并能实施复制工作,No则说明与主库通讯异常,多数情况是由主从间网络引起的问题;Slave_SQL_Running该参数代表sql_thread是否正常,具体就是语句是否执行通过,常会遇到主键重复或是某个表不存在。下面就说到今天的重点Seconds_Behind_Master,该值作为判断主从延时的指标,那么它又是怎么得到这个值的呢,同时,它为什么又受到很多人的质疑? Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和 io_thread复制好的event的timestamp(简写为ts)进行比较,而得到的这么一个差值。我们都知道的relay-log和主库的 bin-log里面的内容完全一样,在记录sql语句的同时会被记录上当时的ts,所以比较参考的值来自于binlog,其实主从没有必要与NTP进行同步,也就是说无需保证主从时钟的一致。 你也会发现,其实比较真正是发生在io_thread与sql_thread之间,而io_thread才真正与主库有关联,于是,问题就出来了,当主库I/O负载很大或是网络阻塞,io_thread不能及时复制binlog(没有中断,也在复制),而 sql_thread一直都能跟上io_thread的脚本,这时Seconds_Behind_Master的值是0,也就是我们认为的无延时,但是,实际上不是,你懂得。这也就是为什么大家要批判用这个参数来监控数据库是否发生延时不准的原因,但是这个值并不是总是不准,如果当io_thread与 master网络很好的情况下,那么该值也是很有价值的。 之前,提到Seconds_Behind_Master这个参数会有负值出现,我们已经知道该值是io_thread的最近跟新的ts与sql_thread执行到的ts差值,前者始终是大于后者的,唯一的肯能就是某个event的ts发生了错误,比之前的小了,那么当这种情况发生时,负值出现就成为可能。 方法2: mk-heartbeat,Maatkit万能工具包中的一个工具,被认为可以准确判断复制延时的方法。 mk-heartbeat的实现也是借助timestmp的比较实现的,它首先需要保证主从服务器必须要保持一致,通过与相同的一个NTP server同步时钟。它需要在主库上创建一个heartbeat的表,里面至少有id与ts两个字段,id为server_id,ts就是当前的时间戳 now(),该结构也会被复制到从库上。 表建好以后,会在主库上以后台进程的模式去执行一行更新 *** 作的命令,定期去向表中的插入数据,这个周期默认为1 秒,同时从库也会在后台执行一个监控命令,与主库保持一致的周期去比较,复制过来记录的ts值与主库上的同一条ts值,差值为0表示无延时,差值越大表示延时的秒数越多。 我们都知道复制是异步的ts不肯完全一致,所以该工具允许半秒的差距,在这之内的差异都可忽略认为无延时。这个工具就是通过实打实的复制,巧妙的借用timestamp来检查延时,非常好用! 关于检查MySQL数据库的主从延时的两种方法就介绍到这里了,希望本次的介绍能够对您有所收获!

第一:查看备份文件是否保存成功
第二:在不同的文件夹下尝试下,打开的文件大小是否一致(可以从属性进行查看)
第三:如果第二正常,请使用邮箱进行发送,下载试下。看下是否可以实现完整传输。
第四:查看服务器的权限是否给够,是否有下载限制/锁定类
第五:查看下带宽情况是否正常(流量图是否正常)
hainiucloud的技术比较给力,可以辅助看下。

如果在一个域内只建立一台服务器,则这台服务器就默认的成为主服务器(Administrator Server),每次在主服务器上更改设置后,必须重新启动服务器,这就不得不暂时停止对外提供服务,这种情况在企业环境中常常是不允许的。要解决这个问题,可以在此域中再增加一台或者多台服务器,这些新增加的有别于主服务器的服务器叫做受控服务器(Managed Servers) ,可以将所有商业服务分散于这些受控服务器上面,而用主服务器来管理它们。这样主服务器可以更改设置,重新启动,而各个受控服务器可以继续对外提供服务。
多服务器域中,必须唯一指定其中一台服务器为主服务器,其他服务器作为受控服务器,每一个受控服务器在这个域中是作为一个节点(Node)存在的,或叫节点服务器。在WLS61的主服务器控制台上提供了管理这些节点的工具,可以方便的启动停止其域内包含的受控服务器。如果要建立多服务器域,则必须使主服务器上的WLS与各个受控服务器上的WLS版本保持一致。先启动主服务器,然后再启动各个受控服务器。主服务器与受控服务器的每一次通信都是通过SSL来进行的。以上就是要点,下面详细说明一下:
关于数字证书:
各个节点与主服务器之间要使用SSL协议来进行通信,这是为了保证通信安全。此协议使用一配对密锁,公锁和私锁。这是一对非对称密锁,用其中任何一个密锁加密信息只能用另一个来解密。值得一提的是,WLS要求节点与主服务器之间采用双向验证。关于SSL协议的详细内容会在以后“安全管理”部分介绍。
在节点管理过程中所使用的数字证书是符合X509格式的,私锁遵循PKCS#5和PKCS#8标准。PKCS#5是基于密码口令的,它描述了用密码口令来加密私锁的方法。PKCS#8是私锁的语法标准,说明了私锁应该具有的特征。用于节点管理中的证书与WLS的数字证书格式是不同的,前者只使用一个crt文件,其中包含了被加过密的私锁(但并不发送密锁),而后者使用的是分开的文件。要使用节点管理,首先必须获得一个crt证书来使用SSL通讯。您可以去CA机构购买一个私锁和数字证书或者使用WLS提供的私锁和数字证书,不管通过哪种办法,如果得到的私锁不是PKCS#5/#8格式的,要使用WLS提供的wlkeytool工具来转换一下。然后再将私锁、公锁和CA的认证授权文件用cat工具合并成一个crt文件。这里举个例子,看看如何使用WLS自带的私锁、公锁和CA认证授权文件来生成一个crt文件。您可以在mydomain这个默认域所对应的文件夹中找到:demokeypem、democertpem和capem,他们分别是私锁、公锁和CA授权文件。这个私锁demokeypem不是基于PKCS#5/#8格式的,因此我们先用wlkeytool转换一下:
wlkeytool demokeypem demokey_new
先是提示您输入demokeypem的解锁密码,如果没有那么直接按回车。然后提示输入新密码,填入密码后,将生成一个PKCS#5/#8格式的新私锁。下面合并这三个文件,生成crt文件:
cat demokey_new democertpem capem > democrt
在mydomain目录下原来就有已经生成好的democrt文件,您可以直接拿来使用,或者为了熟悉一下生成crt文件的过程,不妨按上述方法 *** 作一遍,以后就可以生成自己的crt文件。
有了证书我们就可以开始配置各个节点服务器了。
配置节点:
登陆到主服务器的控制台,选择左侧树状菜单中的“Machines”,在右侧框架中点击“Configure a new Machine…”连接。填入要被管理的节点服务器机器名后点击“create”。然后点击“Node Magager”标签页,在这里设置一些参数,这些参数意义可以在后面“启动节点服务器”中找到说明。“Listen Address”填写节点服务器IP或者DNS名。“Listen Port”默认是“5555”,请与此节点服务器启动时使用的端口一致。“Certificate”默认使用“config/democrt”,可以改成你自己生成的crt文件。“Certificate Passwrod”没有显示,如果更改了数字证书,则也应该同时修改此密码。“Trusted Certs File”默认是“config/trustedcrt”。
全部填写完后,点击“Appley”按钮。
点击左侧树状菜单中的“Servers”,在右侧框架中点击“Configure a new Server…”连接,在“Configuration->General”标签页的“Name”中添上节点服务器的名称,在“Machine”下拉菜单中选择刚刚建立的机器名,然后点击“Create”按钮。
点击“Configuration->Remote Start”标签页,当主服务器远程启动此节点服务器时,会调用这里设置的参数。如果不提供这些参数,那么主服务器会使用节点服务器启动监听时设置的变量值。由于在下面将要介绍的“远程启动节点服务器”中会提到启动监听时的变量设置,这里就不讲如何填写这些参数了,因为不填也可以。
编辑config/nodemanagerhosts这个文件,删除里面的默认值,然后添加主服务器的地址。
本地启动节点服务器:
可以使用节点服务器上的“WLS目录\config\与主服务器相同的域名\startManagedWebLogiccmd”这个脚本文件来在本地启动节点服务器。启动之前需要在此节点机器的系统环境变量中(在“我的电脑”上按右键->属性->高级->环境变量->系统变量->添加…)添加两个环境变量(其值的格式可参考startManagedWebLogiccmd文件的第68行):
ADMIN_URL=主服务器地址和端口
SERVER_NAME=此节点服务器名
再次提醒一下,要启动的节点服务器必须与主服务器在同一个域中(域名相同,比如都是mydomain),而且WLS版本也要相同。添加后,先保证主服务器正在运行,然后执行此脚本来启动节点服务器。在命令行窗口中您会发现,此节点服务器首先连接到主服务器上面来获得配置信息,然后用此配置来启动服务器。
要关闭此节点服务器可以使用命令行:
java weblgoicAdmin url host:port SHUTDOWN username:adminname password password
也可以在主服务器控制台上关闭此节点服务器,只要在左侧菜单中右键选择此节点服务器图标,选择“Stop this server…”即可。“Kill this server…”在这里不能用,必须打开节点服务器监听才可以使用此命令,如何进行监听,请看下面介绍。
远程启动节点服务器:
这与启动主服务器一样,只是启动命令和参数不同。如果一台节点服务器启动了监听,那么主服务器就可以远程启动这台节点服务器。
-DweblogicnodemanagerlistenAddress=host 受控服务器IP或者DNS名
-DweblogicnodemanagerlistenPort=post 监听端口,默认5555
-DweblogicnodemanagersavedLogsDirectory=path 日志目录,默认NodeManagerLogs目录。
-Dweblogic,nodemanagercertificateFile=path 数字证书的路径和文件名
-DweblogicnodemanagercertificateType=type 数字证书类型默认RSA,还可以是DSA。
-DweblogicnodemanagercertificatePassword=pkpassword 私锁密码
-DweblogicnodemanagertrustedCerts=path 被认可的权威授权列表,默认为config/trustedcrt。
-DweblogicnodemanagerreverseDnsEnabled=true 如果使用DNS名来指定受控服务器地址,则要设定此项为true。默认为false。
-DweblogicnodemanagertrustedHosts=path 指定存放可以被信任的主机列表文件路径。默认为config/nodemanagerhosts文件,其中默认设定的是本机地址,请修改成主服务器地址。只有列表中存在的服务器地址才能与本节点服务器通信。一般来说文件只包含主服务器的地址这么一行就够了。
-Dbeahome=dir BEA Home路径
-Djavasecurityplicy==policy_file 默认是“WLS目录/lib/weblogicpolicy”
-DweblogicnodemanagersslHostNameVerificationEnabled=true 默认情况下,节点服务器并不进行主机名验证,如果要使用验证,设此项为true。
如果想使用脚本来启动监听,请用文本编辑器编辑节点服务器上config目录下面的startNodeManagercmd文件,添加一个启动参数:
-DweblogicnodemanagerlistenAddress=此节点服务器的IP或者DNS名
做完以上修改后就可以运行此脚本来启动此节点服务器监听了,启动后命令行窗口会显示正在此节点服务器地址上用端口(5555)进行监听的信息。
您可以将节点服务器作为一项windows服务,这样每次启动计算机都可以自动启动节点服务器。作为节点服务器来说,推荐您将其注册成windows服务。您可以复制installNtServicecmd和uninstallNtServicecmd文件,并改名成installNMNtServicecmd和uninstallNMNtServicecmd。然后参考上面介绍的命令和startManagedWebLogiccmd中的内容修改这两个文件中的内容:将“weblogicServer”改成“weblogicnodemanagerNodeManager”以便启动节点服务器。更改-svcname参数并使installNMNtServicecmd和uninstallNMNtServicecmd中的此参数值保持一致。其他参数请自行修改。
若要远程启动关闭节点服务器,登陆到主服务器的控制台,展开左侧树状菜单中的“Servers”,然后在想要启动的节点服务器图标上点击右键,选择“Start this Server…”,这会启动选中的远程节点服务器。选择“Stop this Server…”会关闭选中的远程节点服务器。选择“Kill this Server…”会杀掉没有响应的远程节点服务器。选择“Get StdOut for this server…”和“Get StdErr for this server…”可以查看此服务器的系统消息。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13319384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-14
下一篇 2023-07-14

发表评论

登录后才能评论

评论列表(0条)

保存