DBUtil教程之数据库集群备份

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

夷陵网站建设公司创新互联公司,夷陵网站设计制作,有大型网站制作公司丰富经验。已为夷陵上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的夷陵做网站的公司定做!

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

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

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

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

集群原理:

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

配置方法:

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

1.配置xml

 
 
 
 
  1.  
  2.     
  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.     
  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.     
  14.         synchronous="off" synchronousTime="00:00" protect="on"> 
  15.          
  16.          
  17.      

配置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的定时同步是整库同步,使用者应该根据业务逻辑分表,部分同步比较实际。

当前题目:DBUtil教程之数据库集群备份
URL标题:http://www.shufengxianlan.com/qtweb/news25/151975.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联