Apache ShardingSphere-Proxy使用


* 測試環境已安裝jdk 

yum install java

一、創建目錄

mkdir -p /software/mysql1/logs
mkdir -p /software/mysql1/data
mkdir -p /software/mysql1/conf
mkdir -p /sofrware/mysql1/mysql-files

mkdir -p /software/mysql2/logs
mkdir -p /software/mysql2/data
mkdir -p /software/mysql2/conf
mkdir -p /sofrware/mysql2/mysql-files

二、使用docker創建2個服務

 docker run -p 13301:3306 --name mysql1 \
  -v /software/mysql1/conf:/etc/mysql \
  -v /software/mysql1/logs:/var/log/mysql \
  -v /software/mysql1/data:/var/lib/mysql \
  -v /software/mysql1/mysql-files:/var/lib/mysql-files \
  -e MYSQL_ROOT_PASSWORD=123456 \
   -d mysql \
  --lower_case_table_names=1 


  docker run -p 13302:3306 --name mysql2 \
  -v /software/mysql2/conf:/etc/mysql \
  -v /software/mysql2/logs:/var/log/mysql \
  -v /software/mysql2/data:/var/lib/mysql \
  -v /software/mysql2/mysql-files:/var/lib/mysql-files \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -d mysql \
  --lower_case_table_names=1

查看mysql端口

[root@test]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql1
172.17.0.2
[root@test]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql2
172.17.0.3

 2個節點分別創建數據庫demo_ds_0、demo_ds_1

三、下載mysql驅動

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

四、下載Apache ShardingSphere

wget https://downloads.apache.org/shardingsphere/5.0.0-alpha/apache-shardingsphere-5.0.0-alpha-shardingsphere-proxy-bin.tar.gz

 解壓

tar zxvf  apache-shardingsphere-5.0.0-alpha-shardingsphere-proxy-bin.tar.gz

重命名文件夾

mv apache-shardingsphere-5.0.0-alpha-shardingsphere-proxy-bin shardingsphere-proxy

 移動mysql驅動到 lib目錄下

mv /software/mysql-connector-java-5.1.47.jar /software/shardingsphere-proxy/lib/

修改配置文件 路徑 /software/shardingsphere-proxy/lib/conf

server.yaml

authentication:
  users:
    root:
      password: root
    sharding:
      password: 12345 
      authorizedSchemas: ds

props:
  max-connections-size-per-query: 1
  acceptor-size: 16  # The default value is available processors count * 2.
  executor-size: 16  # Infinite by default.
  proxy-frontend-flush-threshold: 128  # The default value is 128.
    # LOCAL: Proxy will run with LOCAL transaction.
    # XA: Proxy will run with XA transaction.
    # BASE: Proxy will run with B.A.S.E transaction.
  proxy-transaction-type: LOCAL
  proxy-opentracing-enabled: false
  proxy-hint-enabled: false
  query-with-cipher-column: true
  sql-show: true
  check-table-metadata-enabled: false

config-sharding.yaml

schemaName: ds

dataSources:
   ds_0:
     url: jdbc:mysql://172.17.0.2:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
     username: root
     password: 123456
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
     maxPoolSize: 50
     minPoolSize: 1
     maintenanceIntervalMilliseconds: 30000
   ds_1:
     url: jdbc:mysql://172.17.0.3:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
     username: root
     password: 123456
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
     maxPoolSize: 50
     minPoolSize: 1
     maintenanceIntervalMilliseconds: 30000
     
rules:
- !SHARDING
  tables: 
     ds_table:
        actualDataNodes: ds_${0..1}.ds_table_${0..1}
        databaseStrategy:   
           standard:
              shardingColumn: user_id
              shardingAlgorithmName: database_inline
        tableStrategy:  
           standard:
              shardingColumn: order_id
              shardingAlgorithmName: table_inline
  shardingAlgorithms:       
    database_inline:
      type: INLINE
      props:
        algorithm-expression: ds_${user_id % 2}
    table_inline:
      type: INLINE
      props:
        algorithm-expression: ds_table_${order_id % 2}

五、啟動,使用13333端口

sh ./shardingsphere-proxy/bin/start.sh 13333

 六、登陸

 

 

 七、創建一張表

CREATE TABLE `NewTable` (
`user_id`  varchar(32) NULL ,
`order_id`  varchar(32) NULL ,
`number`  int(20) NULL ,
`updatetime`  timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP 
);

虛擬主庫

 

 注:newtable、t1111 兩張表未設置分表分庫

 實際數據

 

 在虛擬庫上執行,創建索引,4個實體表會自動創建如下索引

ALTER TABLE `ds_table`
ADD INDEX `user_id_index` (`user_id`) ,
ADD INDEX `order_id_index` (`order_id`) ;

 

 

 

 插入數據

INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (1, 1, 3);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (2, 2, 4);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (3, 3, 5);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (4, 1, 6);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (5, 2, 7);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (6, 3, 8);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (7, 1, 9);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (8, 2, 10);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (9, 3, 11);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (10, 1, 12);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (11, 2, 11);
INSERT INTO `ds_table` (`order_id`, `user_id`, `number`) VALUES (12, 3, 12);

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM