`
pleasetojava
  • 浏览: 705046 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mysql 集群 jdbc配置

阅读更多

项目中使用mysql 主从复制,但是用程序实现的读写分离,代码片段如下:

1 public DataSource getDataSource(MethodType methodType) {
2 if (methodType == MethodType.WRITE) {
3 return getDataSource(MasterDataSources);
4 } else {
5 return getDataSource(SlaveDataSources);
6 }
7 }


获取数据源,首先你要确定MethodType 类型,一个是读,一个是写

1 public enum MethodType {
2 READ, WRITE
3 }

读是获取从库数据源,写是获取主库数据源。

这样,就需要在jdbc配置配置两个数据源(一主一从)

还有另一种实现方式,不用程序来控制。mysql 驱动包提供相应的实现 com.mysql.jdbc.ReplicationDriver.
我写了一个简单的例子:

1 package com.howard.loadbalance;
2
3 import java.sql.Connection;
4 import java.sql.ResultSet;
5 import java.sql.SQLException;
6 import java.sql.Statement;
7 import java.util.Properties;
8 import java.util.concurrent.ExecutorService;
9 import java.util.concurrent.Executors;
10
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13
14 import com.mysql.jdbc.ReplicationDriver;
15
16 public class MysqlTest {
17
18 public static class QueryRunnable implements Runnable {
19
20 protected final static Logger logger = LoggerFactory
21 .getLogger(QueryRunnable. class );
22
23 @Override
24 public void run() {
25 logger.info( " user size: " + this .query());
26 }
27
28 public int query() {
29 int count = 0 ;
30 try {
31 ReplicationDriver driver = new ReplicationDriver();
32 Properties props = new Properties();
33 props.put( " roundRobinLoadBalance " , " true " );
34 props.put( " autoReconnect " , " true " );
35 props.put( " user " , " core " );
36 props.put( " password " , " core " );
37 Connection conn = null ;
38 Statement stat = null ;
39 ResultSet res = null ;
40 try {
41 conn = driver
42 .connect(
43 // 注意url串中间不要有空格,因为mysql源码对多个地址split时没有trim.
44 " jdbc:mysql:replication://127.0.0.1:3309,127.0.0.1:3306/core " ,
45 props);
46 // 读写分离标记
47 // 当设置true时,只会在从库查询数据
48 // 当设置false时,会在主库做更新删除操作
49 // conn.setReadOnly(true);
50 stat = conn.createStatement();
51 res = stat.executeQuery( " select count(1) from c_user " );
52 while (res.next())
53 count = res.getInt( 1 );
54 } finally {
55 if (res != null )
56 res.close();
57 if (stat != null )
58 stat.close();
59 if (conn != null )
60 conn.close();
61 }
62 } catch (SQLException e) {
63 e.printStackTrace();
64 }
65 return count;
66 }
67 }
68
69 public static void main(String[] args) {
70 // 创建线程池测试负载军衡
71 ExecutorService service = Executors.newCachedThreadPool();
72 for ( int i = 0 ; i < 10 ; i ++ ) {
73 service.execute( new QueryRunnable());
74 }
75 service.shutdown();
76 }
77
78 }

1
2
分享到:
评论

相关推荐

    MySQL集群配置与使用(Windows环境)

    Windows环境下MySQL集群的搭建,使用了三个节点,第一个节点作为管理节点,第二个节点作为数据节点A和SQL节点A,第三个节点作为数据节点B和SQL节点B。 ...第三,演示了如何使用JDBC连接MySQL集群。

    利用JDBC和MySQL Replication实现数据库集群

    针对这一情况,提出在现有硬件的基础上利用JDBC规范与MySQL Replication实现数据库集群从而解决数据访问瓶颈。其主要方法是在进行JDBC连接之前实现负载均衡,所有SQL请求由负载均衡器进行统一调度。在数据库端利用...

    高可用MYSQL,主从复制,集群和负载平衡

    详细介绍Mysql、MariaDB主从复制、多主多从架构、负载平衡和集群的设置。读写分离和数据库垂直、水平切分建议使用Sharding JDBC

    aws-mysql-jdbc:适用于MySQL的Amazon Web Services(AWS)JDBC驱动程序是一种驱动程序,使应用程序可以充分利用群集MySQL数据库的功能

    计划支持集群数据库的其他功能,包括适用于MySQL的Amazon RDS和本地MySQL部署的功能。 重要信息由于此项目处于预览状态,因此您可能会看到贯穿整个过程的重大更改。 我们鼓励您尝试使用MySQL驱动程序,但请勿将其...

    c-jdbc 详细配置方案

    c-jdbc数据库集群中间件详细配置方案(mysql),可以同步使用多个数据库数据交换。

    MySQL分布式集群Mycat权威指南中文版

    支持MySQL集群,可以作为Proxy使用; 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用; 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群; 自动故障...

    数据库集群

    MySQL集群的方法

    高可用集群利器Keepalived架设网站与mysql集群详细版

    主要了解开源高可用负载均衡集群利器Keepalived,掌握Keepalived的安装,运用Keepalived配置高可用集群,并能够实现Keepalived与负均衡集群LVS的完美组合。

    MySql HA.docx

    Mysql主从复制,MySQL读写分离(Mycat和ShardingJdbc两种方式),MySQL索引(数据结构和失效原因),MySqL性能优化(慢查询),MySQL分库分表(Mycay和ShardingJdbc),MySqL集群问题

    在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 ...压缩包分别是:sqoop-1.2.0-CDH3B4.tar.gz,hadoop-0.20.2-CDH3B4.tar.gz, Mysql JDBC驱动包mysql-connector-java-5

    CDH5.8+Oryx2.2推荐系统环境搭建

    7 下载mysql-jdbc驱动并做相应配置 7 8 搭建本地yum源 7 9 安装cloudera-manager-server(server60159) 7 10 安装cloudera-manager-agent(所有主机) 7 11 将mysql-jdbc驱动拷贝到需要的目录(server60159) 8 12 ...

    sharding-jdbc.rar

    采⽤Sharding-JDBC实现订单表的 分库分表 和 读写分离,搭建 两套一主二从 主从集群

    zookeeper+hadoop+hbase+hive(集成hbase)安装部署教程(超详细).docx

    mysql5.7.38、mysql jdbc驱动mysql-connector-java-8.0.8-dmr-bin.jar、 apache-hive-3.1.3 2.本文软件均安装在自建的目录/export/server/下 :sudo mkdir -p /export/server 创建好目录后要改变该目录的属主和属...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    就是if else ...),但是对于查询业务简单但是数据库集群环境的场景有点憋屈(其实对mybatis使用也不多,瞎评论^_^)。 3、spring jdbc:小巧,灵活,足够优秀,个人比较喜欢使用,但是代码量偏大,原生的接口重复...

    Hadoop实战手册

    27#解压Hive包并配置JDBC连接地址。27#启动Hive thrift Server。27#启动内置的Hive UI。274. Hive Cli 的基本用法28#登陆查询28#查询文件方式28#命令行模式285. HQL基本语法 (创建表,加载表,分析查询,删除表)28#创建...

    基于大数据(Hadoop+Java+MySQL)的数码商城购物推荐系统设计与实现.zip

    我的推荐算法是利用Hadoop技术写的,我们可以利用Hadoop集群的高吞吐量,一次读取多次写入等特点进行大数据处理,我们也可以通过JDBC编程直接把推荐结果写入到Mysql数据库,等我们用到时再把它读出来。 而且系统首页...

    nacos-server-2.1.1 适配达梦数据库

    支持多数据源配置,默认连接mysql。如果需要连接oracle、dm8 等,需要更改配置文件 打开\nacos\conf\application.properties,修改如下: spring.datasource.platform=mysql ### Count of DB: db.num=1 db....

    Mycat-server-1.6-RELEASE源码

    支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意...

    flink1.14.6版本 lib目录依赖jar包

    flink-connector-jdbc_2.12-1.14.6.jar、flink-doris-connector-1.14_2.12-1.1.1.jar、flink-sql-connector-mysql-cdc-2.2.1.jar、mysql-connector-java-5.1.27-bin.jar、flink-dist_2.12-1.14.6.jar、flink-faker-...

Global site tag (gtag.js) - Google Analytics