在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库。

华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以及客户端。关于DDM的使用受限说明,请参见SQL兼容性。

DDM实例提供多个连接地址,确保连接的可用性,使用程序驱动方式连接DDM实例时,建议配置负载均衡。

配置负载均衡的优先推荐顺序如下:

  1. JDBC Driver(参见以下章节)

  2. sidecar负载均衡

  3. php负载均衡(参见以下章节)

  1. 登录管理控制台 。                                                                                                                            

  2. 在导航上选择“数据库 > 分布式数据库中间件”,进入总览页面。
  3. 单击左侧菜单栏的“DDM实例管理”,进入“DDM实例管理”页面,列表中显示DDM实例连接地址。
  4. 您还可以直接单击DDM实例名称,进入实例详情页面。在其中的“逻辑库管理”页签中,单击实例名称前的下箭头展开实例详情,获取命令行连接地址或jdbc连接地址,在“账号管理”页签中获取DDM实例的账号信息。

  5. 使用以上获取到的DDM实例连接信息,支持通过MySQL客户端或者MySQL驱动进行连接。

    1.MySQL客户端连接(命令行)。

    登录弹性云服务器,打开命令行工具,输入连接命令:

    mysql -h ${DDM_SERVER_ADDRESS} -P${DDM_SERVER_PORT} -u${DDM_USER} -p [-D${DDM_DBNAME}] [--default-character-set=utf8]

    参数值填写说明如下:

    表1 mysql客户端登录参数说明

    参数示例

    参数填写说明

    DDM_SERVER_ADDRESS

    DDM实例所在IP地址。

    DDM_SERVER_PORT

    DDM实例连接端口。

    DDM_USER

    DDM实例账号。

    DDM_DBNAME

    DDM实例逻辑库名,选填。

    default-character-set=utf8

    指定字符编码为UTF-8,选填。

    当mysql连接编码和实际编码不一致,导致DDM解析出现乱码时请配置该参数。

    如下为Windows服务器命令行窗口中使用mysql命令连接服务器回显情况。

    C:\Users\testDDM>mysql -h192.168.0.200 -P5066 -Ddb_5133 -udbuser01 -p
    Enter password:
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -AWelcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 5
    Server version: 5.6.29Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

    2.应用程序通过MySQL驱动连接。

    • JDBC Driver

      //以下仅抽取一些关键代码示例行
      //不使用负载均衡的连接示例
      //String url = "jdbc:mysql://192.168.0.200:5066/db_5133";
      //使用负载均衡的连接示例
      //jdbc:mysql:loadbalance://ip1:port1,ip2:port2..ipN:portN/{db_name}
      String url = "jdbc:mysql:loadbalance://192.168.0.200:5066,192.168.0.201:5066/db_5133?loadBalanceAutoCommitStatementThreshold=5&loadBalanceHostRemovalGracePeriod=15000&loadBalanceBlacklistTimeout=60000&loadBalancePingTimeout=5000&retriesAllDown=10&connectTimeout=10000&socketTimeout=60000";
      String username = "dbuser01" ;
      String password = "xxxxxx" ; //加载mysql驱动
      com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
      Connection con = DriverManager.getConnection(url , username , password ) ;
      //开始执行sql
      Statement stmt = con.createStatement() ;
      ResultSet rs = stmt.executeQuery("select now() as Systemtime");
      con.close();
      • loadBalanceAutoCommitStatementThreshold:表示连接上执行多少个语句后会重新选择连接。

        假设loadBalanceAutoCommitStatementThreshold设为5,则当执行5个sql后(Queries或者updates等),将会重新选择连接。若为0表示“粘性连接,不重新选择连接”。关闭自动提交时(autocommit=false)会等待事务完成再考虑是否重新选择连接。

      • retriesAllDown:当所有的连接地址都无法连接时,轮询重试的最大次数。

        重试次数达到阈值仍然无法获取有效连接,将会抛出SQLException。

      • 可以在逻辑库管理页面,实例详情中jdbc连接地址中看到推荐的参数值。
      • 更多关于jdbc负载均衡模式的配置参数,请参考MySQL官网关于数据库连接的配置参数介绍。 说明:
        • loadBalanceAutoCommitStatementThresholdretriesAllDown参数必须按照以上样例进行配置,否则在连接切换时可能进入死循环,最终导致栈溢出,其他参数详情请参见jdbc驱动方式连接DDM推荐版本和参数。
        • 在JDBC连接串中不能含有useSSL=trueuseLocalSession两个参数,因为DDM当前暂不支持。
        • 建议JDBC的驱动版本为5.1.35-5.1.45,驱动下载地址:https://dev.mysql.com/doc/index-connectors.html。
        • MySQL提供的官方连接驱动暂时支持jdbc方式负载均衡,用户如使用其他语言,需自行查找帮助资料,实现负载均衡。
    • PHP Mysqli
      1. 请参考php官网相关章节,安装mysqlnd_ms拓展(仅负载均衡需要安装此拓展)。 说明:

        支持php7.0以上版本的mysqlnd_ms拓展需要在github上下载,下载地址为:https://github.com/sergiotabanelli/mysqlnd_ms

      2. 在php.ini文件中添加如下配置。
        ;启用mysqli拓展
        extension=php_mysqli.dll
        ;添加mysqlnd_ms拓展以及进行相关配置(以下信息仅负载均衡需要进行配置)
        extension = /your-php-path/php7/lib/php/extensions/no-debug-non-zts-20131226/mysqlnd_ms.so
        ;启用mysqlnd_ms拓展
        mysqlnd_ms.enable=1
        ;关联负载均衡相关配置文件
        mysqlnd_ms.config_file=/your-config-path/lb_only_for_DDM_cluster.ini
        ;启用多写多读DDM集群
        mysqlnd_ms.multi_master=1
        ;关闭mysqlnd_ms拓展的读写分离
        mysqlnd_ms.disable_rw_split=1

         说明:

        更多mysqlnd_ms拓展配置参数请参考php官网运行时配置章节。

      3. 配置lb_only_for_DDM_cluster.ini文件。
        {"myapp": {"master": {"master_0": {"host": "192.168.0.200","port": "5066"},"master_1": {"host": "192.168.0.201","port": "5066"}},"slave": {},"failover": {"strategy": "loop_before_master" },"filters": {            "random": {                "weights": {                    "master_0":2,                    "master_1":1                }            }        }}
        }

         说明:

        • 为了支持多读多写,因此需要将slave设置为空。
        • 当前故障处理模式设置为loop_before_master,当访问的节点故障时会自动遍历下一个节点。

          更多故障处理策略请参考php官网故障转移章节。

        • 当前负载均衡策略使用的是random weights策略,在filters中设置为random,在weights中设置每一个节点访问的权重,此策略在访问一定的次数后,master_0与master_1访问次数的比例为2:1。

          更多负载均衡策略请参考php官网负载均衡章节。

      4. 连接示例。
        <?php$loadbalanceconfig = "myapp"$servername = "192.168.0.200";$username = "dbuser01";$password = "xxxxxx";$dbname = "db_name";$port = "5066";//非负载均衡创建连接//$conn = new mysqli($servername, $username, $password, $dbname, $port);//负载均衡创建连接$conn = new mysqli($loadbalanceconfig, $username, $password, $dbname);$sql = "select now() as Systemtime";$result = $conn->query($sql);$conn->close();
        ?>
  6. 成功连接DDM实例后,即可通过SQL命令操作数据库。

入门篇-连接华为云分布式数据库中间件(DDM)相关推荐

  1. 华为云分布式数据库中间件DDM和开源MyCAT对比

    前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...

  2. 华为云分布式数据库中间件DDM

    分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据 ...

  3. 入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表

    本文介绍华为云DDM管理控制台创建逻辑库和逻辑表. 前提条件: 已经购买华为云DDM实例. 已经导入RDS实例. 创建逻辑库 一个DDM实例下最多能新增100个逻辑库. 非拆分模式下,逻辑库只能关联一 ...

  4. 云图说|一张图带你了解华为云分布式数据库中间件

    本文分享自华为云社区<[云图说] 第197期 初识华为云分布式数据库中间件DDM>,原文作者:阅识风云. 华为云分布式数据库中间件(Distributed Database Middlew ...

  5. java数据库中间件实现,分布式数据库中间件DDM的实现原理

    随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...

  6. 浅析分布式数据库中间件DDM

    前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...

  7. mysql中ddl和ddm_浅析分布式数据库中间件DDM

    前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...

  8. 华为云 GaussDB 数据库,会是新的国产之光吗?

    华为云 GaussDB 数据库,会是新的国产之光吗? 华为云数据库业务总裁苏光牛 7月20日,华为云TechWave技术峰会上,华为云数据库业务总裁苏光牛正式发布两大数据库新品,包括关系型数据库Gau ...

  9. mysql中ddl和ddm_对话DDM:分布式数据库中间件全解析

    进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...

最新文章

  1. 【手写系列】对HashMap的思考及手写实现
  2. VS2013无法启动 IIS Express Web解决办法
  3. 7种进阶方法让你快速测试端口连通性
  4. 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持
  5. 山东青岛市南区:创建物联网 信息化管理涉案财物
  6. (转载)C语言中strlen()返回值类型为无符号数
  7. .NET Oject And Json
  8. 稳压二极管的工作原理及稳压二极管使用电路图
  9. ktt算法 约化_matlab在热学中的应用
  10. 11.3 帧中继基本配置
  11. 跑步为什么不能过量(对身体的危害)
  12. 别人眼中的程序猿和现实中的程序猿差别在哪?
  13. win10如何删除计算机用户,win10如何取消账户登录_win10怎么删除登录账户
  14. worldpress怎么增加登录注册按钮
  15. 【线性代数】A为方阵,当存在B使得 AB=E ,证明BA=E
  16. 【历史上的今天】8 月 23 日:万维网面世 30 周年;微信公众平台正式上线;计算机先驱诞生日
  17. win10锁屏c语言,Win10秘笈:如何在锁屏打开任意应用程序?
  18. linux驱动开发:PWM驱动编写
  19. 三维点云数据集汇总(分类+检测+识别)
  20. 河南郑州—2018区块链传统行业创新峰会

热门文章

  1. P2P太假了,光有网站平台,连人都找不着了,更不用说网站大漏洞没人管,呵呵
  2. Python实现 文本进度条展示(嵩天老师)
  3. 商业分析_第一篇 价格弹性
  4. 《十六》微信小程序中的分包
  5. 如何快速将EXCEL中许多手机号按移动和联通、电信自动分开,筛选出来
  6. 没戏,做不到,不存在的“不可能三角”
  7. 计算机英语五人对话,英文应聘对话5人的急求一篇英语对话 关于应聘的 最好是五人的...
  8. 音乐市场只剩腾讯、网易和阿里?豆瓣音乐拆分来搅局
  9. 家用路由器工作的原理
  10. 第十三章 使用动态SQL(一)