当前位置:首页 » 操作系统 » 数据库的集群

数据库的集群

发布时间: 2025-02-12 01:36:55

数据库中的集群和F5

分布式数据库系统分布式数据库系统有两种:一种是物理上分布的,但逻辑上却是集中的。这种分布式数据库只适宜用途比较单一的、不大的单位或部门。另一种分布式数据库系统在物理上和逻辑上都是分布的,也就是所谓联邦式分布数据库系统。由于组成联邦的各个子数据库系统是相对“自治”的,这种系统可以容纳多种不同用途的、差异较大的数据库,比较适宜于大范围内数据库的集成。
----- ----
分布式数据库系统(DDBS)包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。在分布式数据库系统中,一个应用程序可以对数据库进行透明操作,数据库中的数据分别在不同的局部数据库中存储、由不同的 DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起。
一个分布式数据库在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上。一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。它的分布性表现在数据库中的数据不是存储在同一场地。 更确切地讲,不存储在同一计算机的存储设备上。 这就是与集中式数据库的区别。从用户的角度看,一个分布式数据库系统在逻辑上和集中式数据库系统一样,用户可以在任何一个场地执行全局应用。就好那些数据是存储在同一台计算机上,有单个数据库管理系统(DBMS)管理一样,用户并没有什么感觉不一样。
分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库系统适合于单位分散的部门,允许各个部门将其常用的数据存储在本地,实施就地存放本地使用,从而提高响应速度,降低通信费用。分布式数据库系统与集中式数据库系统相比具有可扩展性,通过增加适当的数据冗余,提高系统的可靠性。在集中式数据库中,尽量减少冗余度是系统目标之一.其原因是,冗余数据浪费存储空间,而且容易造成各副本之间的不一致性.而为了保证数据的一致性,系统要付出一定的维护代价.减少冗余度的目标是用数据共享来达到的。而在分布式数据库中却希望增加冗余数据,在不同的场地存储同一数据的多个副本,其原因是:①.提高系统的可靠性、可用性当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。②.提高系统性能系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。
分布式数据库具有以下几个特点:
(1)、数据独立性与位置透明性。数据独立性是数据库方法追求的主要目标之一,分布透明性指用户不必关心数据的逻辑分区,不必关心数据物理位置分布的细节,也不必关心重复副本(冗余数据)的一致性问题,同时也不必关心局部场地上数据库支持哪种数据模型.分布透明性的优点是很明显的.有了分布透明性,用户的应用程序书写起来就如同数据没有分布一样.当数据从一个场地移到另一个场地时不必改写应用程序.当增加某些数据的重复副本时也不必改写应用程序.数据分布的信息由系统存储在数据字典中.用户对非本地数据的访问请求由系统根据数据字典予以解释、转换、传送.
(2)、集中和节点自治相结合。数据库是用户共享的资源.在集中式数据库中,为了保证数据库的安全性和完整性,对共享数据库的控制是集中的,并设有DBA负责监督和维护系统的正常运行.在分布式数据库中,数据的共享有两个层次:一是局部共享,即在局部数据库中存储局部场地上各用户的共享数据.这些数据是本场地用户常用的.二是全局共享,即在分布式数据库的各个场地也存储可供网中其它场地的用户共享的数据,支持系统中的全局应用.因此,相应的控制结构也具有两个层次:集中和自治.分布式数据库系统常常采用集中和自治相结合的控制结构,各局部的DBMS可以独立地管理局部数据库,具有自治的功能.同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。当然,不同的系统集中和自治的程度不尽相同.有些系统高度自治,连全局应用事务的协调也由局部DBMS、局部DBA共同承担而不要集中控制,不设全局DBA,有些系统则集中控制程度较高,场地自治功能较弱。
(3)、支持全局数据库的一致性和和可恢复性。分布式数据库中各局部数据库应满足集中式数据库的一致性、可串行性和可恢复性。除此以外还应保证数据库的全局一致性、并行操作的可串行性和系统的全局可恢复性。这是因为全局应用要涉及两个以上结点的数据.因此在分布式数据库系统中一个业务可能由不同场地上的 多个操作组成.例如, 银行转帐业务包括两个结点上的更新操作。这样,当其中某一个结点出现故障操作失败后如何使全局业务滚回呢?如何使另一个结点撤销已执行的操作(若操作已完成或完成一部分)或者不必再执行业务的其它操作(若操作尚没执行)?这些技术要比集中式数据库复杂和困难得多,分布式数据库系统必须解决这些问题.
(4)、复制透明性。用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络传输数据,提高了系统的运行和查询效率。但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新。
(5)、易于扩展性。在大多数网络环境中,单个数据库服务器最终会不满足使用。如果服务器软件支持透明的水平扩展,那么就可以增加多个服务器来进一步分布数据和分担处理任务。
分布式数据库的优点:
(1)具有灵活的体系结构 。
(2)适应分布式的管理和控制机构。
(3)经济性能优越 。
(4)系统的可靠性高、可用性好 。
(5)局部应用的响应速度快。
(6)可扩展性好,易于集成现有系统。
分布式数据库的缺点:
(1)系统开销大,主要花在通信部分。
(2)复杂的存取结构,原来在集中式系统中有效存取数据的技术,在分成式系统中都不再适用。
(3)数据的安全生和保密性较难处理。
分布式数据库系统的目标
分布式数据库系统的目标,也就是研制分布式数据库系统的目的、动机,主要包括技术和组织两方面的目标.
1.适应部门分布的组织结构,降低费用。
使用数据库的单位在组织上常常是分布的(如分为部门、科室、车间等等),在地理上也是分布的.分布式数据库系统的结构符合部门分布的组织结构,允许各个部门对自己常用的数据存储在本地,在本地录入、查询、维护,实行局部控制.由于计算机资源靠近用户,因而可以降低通信代价,提高响应速度,使这些部门使用数据库更方便更经济。
2.提高系统的可靠性和可用性。
改善系统的可靠性和可用性是分布式数据库的主要目标.将数据分布于多个场地,并增加适当的冗余度可以提供更好的可靠性.一些可靠性要求较高的系统,这一点尤其重要.因为一个地出了故障不会引起整个系统崩溃.因为故障场地的用户可以通过其它场地进入系统.而其它场地的用户可以由系统自动选择存取路径,避开故障场地,利用其它数据副本执行操作,不影响业务的正常运行.
3.充分利用数据库资源,提高现有集中式数据库的利用率
当在一个大企业或大部门中已建成了若干个数据库之后,为了利用相互的资源,为了开发全局应用,就要研制分布式数据库系统.这种情况可称为自底向上的建立分布式系统.这种方法虽然也要对各现存的局部数据库系统做某些改动、重构,但比起把这些数据库集中起来重建一个集中式数据库,则无论从经济上还是从组织上考虑,分布式数据库均是较好的选择.
4.逐步扩展处理能力和系统规模
当一个单位规模扩大要增加新的部门(如银行系统增加新的分行,工厂增加新的科室、车间)时,分布式数据库系统的结构为扩展系统的处理能力提供了较好的途径:在分布式数据库系统中增加一个新的结点.这样做比在集中式系统中扩大系统规模要方便、灵活、经济得多。
在集中式系统中为了扩大规模常用的方法有两种:一种是在开始设计时留有较大的余地.这容易造成浪费,而且由于预测困难,设计结果仍可能不适应情况的变化.另一种方法是系统升级,这会影响现有应用的正常运行.并且当升级涉及不兼容的硬件或系统软件有了重大修改而要相应地修改已开发的应用软件时,升级的代价就十分昂贵而常常使得升级的方法不可行.分布式数据库系统能方便地把一个新的结点纳入系统,不影响现有系统的结构和系统的正常运行,提供了逐渐扩展系统能力的较好途径,有时甚至是唯一的途径。
①数据库系统与应用 赵致格编着 清华大学出版社p. 260
②数据库原理及应用 张晋连 编着 电子工业出版社P.13

Ⅱ 手把手教你如何搭建Mysql三主集群mysql三主集群搭建

手把手教你:如何搭建MySQL三主集群
MySQL是一个流行的开源数据库管理系统,广泛应用于各种企业应用程序中。但是,对于大型企业来说,单节点MySQL往往无法满足性能和可靠性的要求。这时候,搭建MySQL集群就成为必然选择之一。本文将介绍如何搭建MySQL三主集群,以满足企业级应用的要求。
步骤一:准备MySQL三主集群的环境
1. 安装MySQL:在每个物理服务器上安装MySQL
2. 确认三个MySQL实例都连接到同一个局域网,可以直接通信
3. 确定全部的MySQL实例的设置均相同,只有一个实例需要做修改
步骤二:启动MySQL实例
所有MySQL实例都应该被启动。当有实例崩溃或者强制关闭时,其他实例仍然能够正常工作,于是就可以确保业务连续性。
MySQL服务可以通过如下命令启动:
systemctl start mysqld
步骤三:创建用户账号并分配权限
使用超级管理员(root)账号登录MySQL,然后创建一个新用户,分配所有集群节点的root用户的所有权限,如下:
mysql> CREATE USER ‘cluster_root_user’@’%’ IDENTIFIED BY ‘password’;

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘cluster_root_user’@’%’;
步骤四:创建复制账号并分配权限
在所有节点的MySQL中,如下创建一个专门的需要复制的账号来进行数据同步:
mysql> CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘password’;
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
步骤五:配置主库
在主数据库节点的MySQL配置文件my.cnf中增加如下配置项:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db1
binlog_do_db = db2
binlog_do_db = db3
这些配置项包括:
1. server-id:每个节点必须有一个唯一的server-id,1为最好的起点;
2. log_bin:使用binlog进行同步的话,则要记录日志;
3. binlog_do_db:All的代替语句,主要过滤掉一些数据;
步骤六:获取主库状态
启动主库后, 执行如下SQL命令,获取主库的状态:
mysql> SHOW MASTER STATUS;
输出如下:
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | mysql | |
+——————+———-+————–+——————+
需要关注的主要是File和Position两个字段的值。
步骤七:配置从库
在从数据库节点的my.cnf文件中增加如下配置项:
server-id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index = /var/lib/mysql/mysql-relay-bin.index
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db1
binlog_do_db = db2
binlog_do_db = db3
这些配置项包括:
1. server-id:每个节点必须有一个唯一的server-id,此处设为2;
2. relay_log:中转文件,记录主库的binlog日志,从库重新生成并执行;
3. relay_log_index:relay日志索引;
在MySQL中设置从库的同步过程:
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_ip’,
-> MASTER_PORT=3306,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’password’,
-> MASTER_LOG_FILE=’mysql-bin.000001′,
-> MASTER_LOG_POS=107;
mysql> START SLAVE;
步骤八:验证从库状态
执行如下两个命令,检查从服务器是否正确连接到主服务器:
mysql> SHOW SLAVE STATUS\G
mysql> SELECT * FROM employees LIMIT 10;
其中,SHOW SLAVE STATUS\G将会返回当前从服务器的状态,可以查看是否有错误。另一个命令可以帮助验证是否从主服务器复制了数据。
步骤九:添加更多的从库
使用相同的步骤,可将更多的从数据库节点添加到集群中。
至此,MySQL三主集群已经搭建成功。大家可以进行测试,看看是否可以实现数据同步功能。不过需要注意的是,在实际情况下,还需要额外考虑如负载均衡和数据备份等问题,以确保集群系统的高可用性和可靠性。
附:相关代码
—————————–在主服务器上的操作—————————–
CREATE USER ‘cluster_root_user’@’%’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON *.* TO ‘cluster_root_user’@’%’;
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘password’;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
# 修改my.cnf文件的配置,让从服务器通过网络连接到主服务器
# 在my.cnf文件末尾增加以下设置:
server-id=1
log_bin=/var/log/mysql-bin.log
binlog_do_db=db1
binlog_do_db=db2
binlog_do_db=db3
# 保存后重启MySQL使设置生效
systemctl restart mysqld
# 查看主服务器状态
mysql> SHOW MASTER STATUS;
—————————–在从服务器上的操作—————————–
# 修改my.cnf文件的配置,让从服务器通过网络连接到主服务器
# 在my.cnf文件末尾增加以下设置:
server-id=2
relay_log = /var/lib/mysql/mysql-relay-bin
relay_log_index = /var/lib/mysql/mysql-relay-bin.index
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db=db1
binlog_do_db=db2
binlog_do_db=db3
# 保存后重启MySQL使设置生效
systemctl restart mysqld
# 在MySQL中设置从服务器
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_ip’,
-> MASTER_PORT=3306,
-> MASTER_USER=’repl’,
-> MASTER_PASSWORD=’password’,
-> MASTER_LOG_FILE=’mysql-bin.000001′,
-> MASTER_LOG_POS=107;
mysql> START SLAVE;
# 验证从服务器状态
mysql> SHOW SLAVE STATUS\G
mysql> SELECT * FROM employees LIMIT 10;

Ⅲ 什么是数据库集群

现在比较大型点的系统基本上是AP+DB的架构: AP指应用程序,DB指数据库端
AP放在一个服务器上,DB放在另一个服务器上
当一个系统比较大,访问的用户数量比较多的时候,比如QQ,上亿用户.

这时一个服务器就吃不消了,这样就想到多个服务器跑同一个AP应用.
DB端也一样.
linux集群 指的就是多个服务器跑同一个AP应用,系统管理员的工作
数据库集群 指的就是多个服务器跑同一个DB数据库.数据库管理员的工作

linux集群基础就要熟悉linux系统.
数据库集群基础就要熟悉具体的数据库如oracle,db2,sysbase.mysql.等

0基础可以学,只是要花时间.0基础想搞到集群估计得花3个月时间.这还是要有环境的,有人指导才行.

热点内容
如何让助理服务器可以被远程 发布:2025-02-12 04:47:11 浏览:769
存储空间不足但 发布:2025-02-12 04:46:27 浏览:273
树莓派编程板 发布:2025-02-12 04:41:45 浏览:904
php取整 发布:2025-02-12 04:33:21 浏览:221
我的世界创造服务器位置 发布:2025-02-12 04:24:49 浏览:701
毛利润算法 发布:2025-02-12 04:22:42 浏览:754
战舰少女r红茶脚本 发布:2025-02-12 04:05:05 浏览:465
峰火战国服务器什么时候开 发布:2025-02-12 03:56:31 浏览:175
电脑配置慢怎么解压 发布:2025-02-12 03:52:18 浏览:716
androidsdk功能 发布:2025-02-12 03:43:07 浏览:87