DBUtil教程之数据库集群备份

在现在系统中,海量数据成为软件工程师要面对的主要问题。很多人都把数据库优化集中在编程和数据库的结构,再构建一些索引和视图,但是在编程和表结构都到了极致的时候,数据库优化该何去何从。

Oracle公司现在有一个比较热门的数据库集群技术,叫做rac。rac应该是现在数据库集群中最优化和最热门的技术。但是只是局限于同类型和同构数据库上面。

RAC是一个负载均衡的代表,它的集群主要是面对不是大而复杂的数据库查询,而是面对大量的连接。但是如果我们面对是一个异类异构数据库怎么解决。

近年来,有一种比较热门的数据库进入我们生活,列式数据库。它是一个高查询性能,低插入性能的数据库。现在主要代表是sybaseiq,主要开源的 列式数据库有monetdb 。但是列式数据库问题很多,主要是插入慢、数据库不稳定、数据库传统语法支持不强、稳定性低、线程低和扩展性低。但是达到几百万行以上数据以后,列式数据 库的查询速度是mysql的10倍以上。

在一个大型系统中,行式和列式数据库优势互补,合理使用成为开发人员必须关心的问题。我们今天的集群也是主要面对这个问题。

集群原理:

在dbutil的集群中,我们是用了一个行式数据库和若干个列式数据库组成,每次更新数据的时候,我们是用广播模式,把增删改数据通过广播模式,群 体更新所有的数据。当查询数据时候,我们会通过连接池模式,找出最少人使用的数据,查询数据。并且可以设置每天定时同步数据,把存放在行式数据的数据,定 时同步到所有的节点。

配置方法:

在我们之前几个文章简单见过DBUtil的使用,配置方法和之前的教程大同小异。

1.配置xml

  1. <!-- 集群测试数据库 --> 
  2.     <Resource jndi="jdbc/Cluster1" driverClass="com.mysql.jdbc.Driver" 
  3.         dbUserName="root" dbPassWord="root" 
  4.         jdbcUrl="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8" 
  5.         initSize="2" minPoolSize="1" maxPoolSize="10" maxStatements="50" 
  6.         maxIdleTime="60" /> 
  7.     <Resource jndi="jdbc/Cluster2" driverClass="com.mysql.jdbc.Driver" 
  8.         dbUserName="root" dbPassWord="root" 
  9.         jdbcUrl="jdbc:mysql://127.0.0.1:3306/test2?useUnicode=true&characterEncoding=utf-8" 
  10.         initSize="2" minPoolSize="1" maxPoolSize="10" maxStatements="50" 
  11.         maxIdleTime="60" /> 
  12.     <!-- 集群 --> 
  13.     <Cluster jndiCluster="jdbc/Cluster" mainDB="jdbc/Cluster1" 
  14.         synchronous="off" synchronousTime="00:00" protect="on"> 
  15.         <Resource jndi="jdbc/Cluster1" /> 
  16.         <Resource jndi="jdbc/Cluster2" /> 
  17.     </Cluster> 

 

配置xml也是首先配置2个数据库节点,然后加入集群。

  • jndiCluster:是集群的唯一标识符
  • mainDB:集群的主数据库,建议用mysql数据库
  • synchronous:同步数据
  • synchronousTime:同步时间
  • protect:保护模式(查询数据,不用主数据库,只是获取集群数据库的数据)

2.更新数据

  1. package com.shine.DBUtil; 
  2.  
  3. import com.shine.DBUtil.manage.DBManager; 
  4. import com.shine.DBUtil.utils.ClusterList; 
  5.  
  6. public class ClusterUpdateExample { 
  7.  
  8.     /** 
  9.      * 集群更新例子 
  10.      *  
  11.      * @param args 
  12.      */ 
  13.     public static void main(String[] args) { 
  14.         System.out.println("ClusterUpdateExample..."); 
  15.         DBUtil 
  16.                 .getInstance() 
  17.                 .init( 
  18.                         "E:\\workspace\\JavaFramework2.5\\src\\com\\shine\\DBUtil\\config\\dbXml.xml"); 
  19.  
  20.         ClusterList list = DBManager.getInstance() 
  21.                 .getClusterConnectionNameList("jdbc/Cluster"); 
  22.         System.out.println("主数据库为:" + list.getMainDB()); 
  23.         String sql = "insert into test1(test) value('test')"
  24.         DBUtil.getInstance().executeClusterUpdate("jdbc/Cluster", sql); 
  25.  
  26.     } 
  27.  

3.查询数据

  1. package com.shine.DBUtil; 
  2.  
  3. import com.shine.DBUtil.model.DBModel; 
  4.  
  5. public class ClusterSelectExample { 
  6.  
  7.     /** 
  8.      * 集群查询 
  9.      *  
  10.      * @param args 
  11.      */ 
  12.     public static void main(String[] args) { 
  13.         System.out.println("ClusterSelectExample..."); 
  14.         DBUtil 
  15.                 .getInstance() 
  16.                 .init( 
  17.                         "E:\\workspace\\JavaFramework2.5\\src\\com\\shine\\DBUtil\\config\\dbXml.xml"); 
  18.  
  19.         String sql = "select * from test1"
  20.         String clusterJndi = "jdbc/Cluster"
  21.         DBModel dbmodel1 = DBUtil.getInstance().executeClusterQuery( 
  22.                 clusterJndi, sql); 
  23.  
  24.         DBModel dbmodel2 = DBUtil.getInstance().executeClusterQuery( 
  25.                 clusterJndi, sql); 
  26.  
  27.     } 
  28.  

实际上集群数据库的同步最好是不要选择定时同步,除非特殊需要,因为如果用到数据库集群,必然会有海量的数据。而DBUtil的定时同步是整库同步,使用者应该根据业务逻辑分表,部分同步比较实际。

原文链接:http://blog.csdn.net/arjick/article/details/6758872

【编辑推荐】

  1. DataReader链接关闭解惑篇
  2. 详解MySQL如何链接远程SQL
  3. 详解SQL Server如何链接远程MySQL
  4. 为什么要关闭数据库连接,能不能不要啊
  5. SQL语句相关概念及练习之基础篇

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/308422.html<

(0)
管理的头像管理
上一篇2025-05-27 14:05
下一篇 2025-05-27 14:07

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注