1. 程式人生 > >入門篇-連線華為雲分散式資料庫中介軟體(DDM)

入門篇-連線華為雲分散式資料庫中介軟體(DDM)

在成功配置DDM例項後,即可連線訪問DDM例項以及例項下的邏輯庫。

華為雲分散式資料庫中介軟體(DDM)服務目前管理的關係型資料庫,是基於MySQL作為儲存引擎,因此DDM服務相容MySQL大部分語法以及客戶端。關於DDM的使用受限說明,請參見SQL相容性

DDM例項提供多個連線地址,確保連線的可用性,使用程式驅動方式連線DDM例項時,建議配置負載均衡。

配置負載均衡的優先推薦順序如下:

  1. JDBC Driver(參見以下章節)

  2. 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 -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當前暫不支援。
        • MySQL提供的官方連線驅動暫時支援jdbc方式負載均衡,使用者如使用其他語言,需自行查詢幫助資料,實現負載均衡。
    • PHP Mysqli
      1. 在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官網執行時配置章節

      2. 配置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,當訪問的節點故障時會自動遍歷下一個節點。
        • 當前負載均衡策略使用的是random weights策略,在filters中設定為random,在weights中設定每一個節點訪問的權重,此策略在訪問一定的次數後,master_0與master_1訪問次數的比例為2:1。
      3. 連線示例。
        <?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命令操作資料庫。