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

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

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

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

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

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

  2. sidecar负载均衡

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

 

 

 

 

  1.  登录管理控制台 。                                                                                                                            入门篇-连接华为云分布式数据库中间件(DDM)_第1张图片

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

    入门篇-连接华为云分布式数据库中间件(DDM)_第3张图片

  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 -A
     
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 5
    Server version: 5.6.29
     
    Copyright (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. 连接示例。
        query($sql);
         
            $conn->close();
        ?>

         

  6. 成功连接DDM实例后,即可通过SQL命令操作数据库。

你可能感兴趣的:(云服务,分布式数据库,mysql)