9、ShardingSphere 之 Sharding-Proxy 讀寫分離

1 創建三個數據庫

一主二從

CREATE SCHEMA `demo_ds_master` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;

CREATE SCHEMA `demo_ds_slave_0` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;

CREATE SCHEMA `demo_ds_slave_1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;

2 修改conf目錄的conf-master-slave.yaml

schemaName: master_slave_db

dataSources:
  master_ds:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_master?serverTimezone=UTC&useSSL=false
    username: root
    password: chengwen
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
  slave_ds_0:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_slave_0?serverTimezone=UTC&useSSL=false
    username: root
    password: chengwen
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
  slave_ds_1:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_slave_1?serverTimezone=UTC&useSSL=false
    username: root
    password: chengwen
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50

masterSlaveRule:
  name: ms_ds
  masterDataSourceName: master_ds
  slaveDataSourceNames:
    - slave_ds_0
    - slave_ds_1

3 啓動Sharding-Proxy服務

3.1 進入Sharding-Proxy的bin目錄

chengwen@chengwen bin % ./start.sh 
Starting the Sharding-Proxy ...
Please check the STDOUT file: /Users/chengwen/apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin/logs/stdout.log
chengwen@MacBook-Pro bin % 

3.2 出現3307端口並且ACTIVE表示啓動成功

[INFO ] 12:28:06.822 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xcedc789a] REGISTERED
[INFO ] 12:28:06.823 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xcedc789a] BIND: 0.0.0.0/0.0.0.0:3307
[INFO ] 12:28:06.825 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xcedc789a, L:/0.0.0.0:3307] ACTIVE

4 通過Navicat for MySQL 連接sharding-proxy 服務端

在這裏插入圖片描述

4.1 查看數據庫

show DATABASES;
master_slave_db
sharding_db

4.1 在主數據庫和從數據庫中都創建表

USE master_slave_db;

create table if not exists demo_ds_master.t_order(
order_id bigint not null,
user_id int not null,
status varchar(50),
primary key(order_id)
);
create table if not exists demo_ds_slave_0.t_order(
order_id bigint not null,
user_id int not null,
status varchar(50),
primary key(order_id)
);
create table if not exists demo_ds_slave_1.t_order(
order_id bigint not null,
user_id int not null,
status varchar(50),
primary key(order_id)
);
show tables;

t_order

4.2 向表中添加數據(不指定數據庫)

insert into t_order(order_id,user_id,status) values (11,1,'init');

默認向主表中添加數據
在這裏插入圖片描述

默認從庫中查詢數據,從庫中沒有查到,主庫中可以查到,實現了讀寫分離。

4.3 分別向從庫中添加數據

insert into demo_ds_slave_0.t_order(order_id,user_id,status) values (12,1,'init');
insert into demo_ds_slave_1.t_order(order_id,user_id,status) values (13,1,'init');

5 在不指定數據庫時查詢數據,會交替查詢從庫0 和從庫1

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章