入门篇-连接华为云分布式数据库中间件(DDM)
在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库。
华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以及客户端。关于DDM的使用受限说明,请参见SQL兼容性。
DDM实例提供多个连接地址,确保连接的可用性,使用程序驱动方式连接DDM实例时,建议配置负载均衡。
配置负载均衡的优先推荐顺序如下:
JDBC Driver(参见以下章节)
sidecar负载均衡
php负载均衡(参见以下章节)
登录管理控制台 。
- 在导航上选择“数据库 > 分布式数据库中间件”,进入总览页面。
- 单击左侧菜单栏的“DDM实例管理”,进入“DDM实例管理”页面,列表中显示DDM实例连接地址。
- 您还可以直接单击DDM实例名称,进入实例详情页面。在其中的“逻辑库管理”页签中,单击实例名称前的下箭头展开实例详情,获取命令行连接地址或jdbc连接地址,在“账号管理”页签中获取DDM实例的账号信息。
- 使用以上获取到的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官网关于数据库连接的配置参数介绍。 说明:
- loadBalanceAutoCommitStatementThreshold和retriesAllDown参数必须按照以上样例进行配置,否则在连接切换时可能进入死循环,最终导致栈溢出,其他参数详情请参见jdbc驱动方式连接DDM推荐版本和参数。
- 在JDBC连接串中不能含有useSSL=true和useLocalSession两个参数,因为DDM当前暂不支持。
- 建议JDBC的驱动版本为5.1.35-5.1.45,驱动下载地址:https://dev.mysql.com/doc/index-connectors.html。
- MySQL提供的官方连接驱动暂时支持jdbc方式负载均衡,用户如使用其他语言,需自行查找帮助资料,实现负载均衡。
- loadBalanceAutoCommitStatementThreshold:表示连接上执行多少个语句后会重新选择连接。
- PHP Mysqli
- 请参考php官网相关章节,安装mysqlnd_ms拓展(仅负载均衡需要安装此拓展)。 说明:
支持php7.0以上版本的mysqlnd_ms拓展需要在github上下载,下载地址为:https://github.com/sergiotabanelli/mysqlnd_ms
- 在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官网运行时配置章节。
- 配置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官网负载均衡章节。
- 连接示例。
<?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(); ?>
- 请参考php官网相关章节,安装mysqlnd_ms拓展(仅负载均衡需要安装此拓展)。 说明:
- JDBC Driver
- 成功连接DDM实例后,即可通过SQL命令操作数据库。
入门篇-连接华为云分布式数据库中间件(DDM)相关推荐
- 华为云分布式数据库中间件DDM和开源MyCAT对比
前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...
- 华为云分布式数据库中间件DDM
分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,一个实现了Mysql协议栈的数据库代理服务器,通过代理服务器将底层数据 ...
- 入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表
本文介绍华为云DDM管理控制台创建逻辑库和逻辑表. 前提条件: 已经购买华为云DDM实例. 已经导入RDS实例. 创建逻辑库 一个DDM实例下最多能新增100个逻辑库. 非拆分模式下,逻辑库只能关联一 ...
- 云图说|一张图带你了解华为云分布式数据库中间件
本文分享自华为云社区<[云图说] 第197期 初识华为云分布式数据库中间件DDM>,原文作者:阅识风云. 华为云分布式数据库中间件(Distributed Database Middlew ...
- java数据库中间件实现,分布式数据库中间件DDM的实现原理
随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...
- 浅析分布式数据库中间件DDM
前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...
- mysql中ddl和ddm_浅析分布式数据库中间件DDM
前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...
- 华为云 GaussDB 数据库,会是新的国产之光吗?
华为云 GaussDB 数据库,会是新的国产之光吗? 华为云数据库业务总裁苏光牛 7月20日,华为云TechWave技术峰会上,华为云数据库业务总裁苏光牛正式发布两大数据库新品,包括关系型数据库Gau ...
- mysql中ddl和ddm_对话DDM:分布式数据库中间件全解析
进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...
最新文章
- 【手写系列】对HashMap的思考及手写实现
- VS2013无法启动 IIS Express Web解决办法
- 7种进阶方法让你快速测试端口连通性
- 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持
- 山东青岛市南区:创建物联网 信息化管理涉案财物
- (转载)C语言中strlen()返回值类型为无符号数
- .NET Oject And Json
- 稳压二极管的工作原理及稳压二极管使用电路图
- ktt算法 约化_matlab在热学中的应用
- 11.3 帧中继基本配置
- 跑步为什么不能过量(对身体的危害)
- 别人眼中的程序猿和现实中的程序猿差别在哪?
- win10如何删除计算机用户,win10如何取消账户登录_win10怎么删除登录账户
- worldpress怎么增加登录注册按钮
- 【线性代数】A为方阵,当存在B使得 AB=E ,证明BA=E
- 【历史上的今天】8 月 23 日:万维网面世 30 周年;微信公众平台正式上线;计算机先驱诞生日
- win10锁屏c语言,Win10秘笈:如何在锁屏打开任意应用程序?
- linux驱动开发:PWM驱动编写
- 三维点云数据集汇总(分类+检测+识别)
- 河南郑州—2018区块链传统行业创新峰会