1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      PostgreSQLDBA(127)-Develop(JDBCfailover&loadbalance)

      PostgreSQL JDBC Driver在驅(qū)動(dòng)層面提供了數(shù)據(jù)庫的Failover和Load balance,相關(guān)的參數(shù)包括:

      成都創(chuàng)新互聯(lián)專注于墊江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站開發(fā)。墊江網(wǎng)站建設(shè)公司,為墊江等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

      targetServerType = String
      Allows opening connections to only servers with required state, the allowed values are any, master, slave, secondary, preferSlave and preferSecondary. The master/slave distinction is currently done by observing if the server allows writes. The value preferSecondary tries to connect to secondary if any are available, otherwise allows falls back to connecting also to master.

      指定目錄服務(wù)器類型,可選項(xiàng)包括any(任意類型), master(主庫), slave(從庫), secondary(列表中的第二個(gè)), preferSlave(首選備庫) and preferSecondary(首選列表中的第二個(gè))

      loadBalanceHosts = boolean
      In default mode (disabled) hosts are connected in the given order. If enabled hosts are chosen randomly from the set of suitable candidates.
      默認(rèn)禁用負(fù)載均衡,按列表順序先到先得。如啟用,則隨機(jī)從可用候選中選擇一個(gè)。

      測試數(shù)據(jù),創(chuàng)建數(shù)據(jù)表

      [local]:5432 pg12@testdb=# create table tbl(id int,c1 varchar(10));
      CREATE TABLE
      Time: 144.018 ms
      [local]:5432 pg12@testdb=# insert into tbl values(1,'1');
      INSERT 0 1
      Time: 41.481 ms
      [local]:5432 pg12@testdb=#
      

      Java測試代碼

      /*
       * TestFailoverAndLoadbalance
       *
       */
      package testPG;
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      public class TestFailoverAndLoadbalance {
          public static void main(String[] args) {
              testLoadBalance();
          }
          public static void testLoadBalance() {
              for (int i = 0; i < 10; i++) {
                  try (Connection conn = DriverManager.getConnection(
                          "jdbc:postgresql://192.168.26.28:5432,192.168.26.25:5432/testdb?targetServerType=any&loadBalanceHosts=true",
                          "pg12", "root")) {
                      System.out.println("NO:" + i);
                      execSelect(conn);
                      execInsert(conn);
                  } catch (SQLException se) {
                      System.out.println(se.getMessage());
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                  } // end try
              }
          }
          public static void execSelect(Connection conn) {
              try (PreparedStatement pstmt = conn.prepareStatement("SELECT inet_server_addr() as ipaddr");
                      ResultSet rs = pstmt.executeQuery();) {
                  while (rs.next()) {
                      String ipaddr = rs.getString("ipaddr");
                      System.out.println("ipaddr:" + ipaddr + ";Execute SELECT");
                  }
              } catch (SQLException se) {
                  System.out.println(se.getMessage());
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
              } // end try
          } // end
          public static void execInsert(Connection conn) {
              try (PreparedStatement pstmtSelect = conn.prepareStatement("SELECT inet_server_addr() as ipaddr");
                      ResultSet rs = pstmtSelect.executeQuery();
                      PreparedStatement pstmtInsert = conn.prepareStatement("insert into tbl(id,c1) values(?,?)");) {
                  while (rs.next()) {
                      String ipaddr = rs.getString("ipaddr");
                      System.out.println("ipaddr:" + ipaddr + ";Execute Insert");
                      System.out.println();
                      pstmtInsert.setInt(1, 2);
                      pstmtInsert.setString(2, "2");
                      pstmtInsert.executeUpdate();
                  }
              } catch (SQLException se) {
                  System.out.println(se.getMessage());
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
              } // end try
          } // end
      } // end ExecJDBC Class
      

      targetServerType使用any(可用的任意一個(gè)服務(wù)器),啟用負(fù)載均衡,這時(shí)候后隨機(jī)連接到任意一臺(tái)可用的服務(wù)器上。
      測試結(jié)果如下:

      NO:0
      ipaddr:192.168.26.25;Execute SELECT
      ipaddr:192.168.26.25;Execute Insert
      ERROR: cannot execute INSERT in a read-only transaction
      NO:1
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:2
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:3
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:4
      ipaddr:192.168.26.25;Execute SELECT
      ipaddr:192.168.26.25;Execute Insert
      ERROR: cannot execute INSERT in a read-only transaction
      NO:5
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:6
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:7
      ipaddr:192.168.26.25;Execute SELECT
      ipaddr:192.168.26.25;Execute Insert
      ERROR: cannot execute INSERT in a read-only transaction
      NO:8
      ipaddr:192.168.26.28;Execute SELECT
      ipaddr:192.168.26.28;Execute Insert
      NO:9
      ipaddr:192.168.26.25;Execute SELECT
      ipaddr:192.168.26.25;Execute Insert
      ERROR: cannot execute INSERT in a read-only transaction
      

      連接到備庫時(shí),執(zhí)行插入查找會(huì)出錯(cuò),結(jié)果如預(yù)期。

      參考資料
      Chapter 3. Initializing the Driver


      分享題目:PostgreSQLDBA(127)-Develop(JDBCfailover&loadbalance)
      文章地址:http://www.ef60e0e.cn/article/pihhjg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        奉节县| 吐鲁番市| 锡林郭勒盟| 巨野县| 旅游| 沂源县| 富民县| 乌海市| 大姚县| 大城县| 平乐县| 泾阳县| 宁阳县| 焦作市| 嘉善县| 武鸣县| 武冈市| 安泽县| 镇坪县| 灵石县| 鹤岗市| 梁平县| 富川| 泽普县| 米泉市| 南宁市| 万州区| 营山县| 河津市| 克东县| 柘荣县| 遂川县| 平江县| 钦州市| 灵璧县| 郑州市| 滨州市| 聂拉木县| 将乐县| 丽水市| 临洮县|