
- 环境准备
- 安装 JDK
- 安装 Maven
- MySQL
- 准备仓库
- 导入IDEA
- 运行Example
使用 JDK 8 或以上版本。
安装 Maven使用 Maven 3.6 或以上版本。
MySQL本地安装MySQL。
并且执行ShardingSphere初始化脚本src/resources/manual_schema.sql,后续执行example时依赖该脚本:
DROP SCHEMA IF EXISTS demo_ds;
DROP SCHEMA IF EXISTS demo_ds_0;
DROP SCHEMA IF EXISTS demo_ds_1;
DROP SCHEMA IF EXISTS demo_write_ds;
DROP SCHEMA IF EXISTS demo_read_ds_0;
DROP SCHEMA IF EXISTS demo_read_ds_1;
DROP SCHEMA IF EXISTS demo_write_ds_0;
DROP SCHEMA IF EXISTS demo_write_ds_0_read_0;
DROP SCHEMA IF EXISTS demo_write_ds_0_read_1;
DROP SCHEMA IF EXISTS demo_write_ds_1;
DROP SCHEMA IF EXISTS demo_write_ds_1_read_0;
DROP SCHEMA IF EXISTS demo_write_ds_1_read_1;
DROP SCHEMA IF EXISTS shadow_demo_ds;
DROP SCHEMA IF EXISTS shadow_demo_ds_0;
DROP SCHEMA IF EXISTS shadow_demo_ds_1;
DROP SCHEMA IF EXISTS demo_shadow_write_ds;
DROP SCHEMA IF EXISTS demo_shadow_read_ds;
DROP SCHEMA IF EXISTS demo_read_ds;
CREATE SCHEMA IF NOT EXISTS demo_ds;
CREATE SCHEMA IF NOT EXISTS demo_ds_0;
CREATE SCHEMA IF NOT EXISTS demo_ds_1;
CREATE SCHEMA IF NOT EXISTS demo_write_ds;
CREATE SCHEMA IF NOT EXISTS demo_read_ds_0;
CREATE SCHEMA IF NOT EXISTS demo_read_ds_1;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_0;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_0_read_0;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_0_read_1;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_1;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_1_read_0;
CREATE SCHEMA IF NOT EXISTS demo_write_ds_1_read_1;
CREATE SCHEMA IF NOT EXISTS shadow_demo_ds;
CREATE SCHEMA IF NOT EXISTS shadow_demo_ds_0;
CREATE SCHEMA IF NOT EXISTS shadow_demo_ds_1;
CREATE SCHEMA IF NOT EXISTS demo_shadow_write_ds;
CREATE SCHEMA IF NOT EXISTS demo_shadow_read_ds;
CREATE SCHEMA IF NOT EXISTS demo_read_ds;
准备仓库
将仓库clone到本地。
git clone https://github.com/apache/shardingsphere.git
cd shardingsphere
编译并安装所有模块到 Maven 本地仓库缓存,同时会生成 ANTLR .g4 语法文件对应的解析器 Java 类,这样在 IDE 就不会有相关的编译错误了。
mvn clean install -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Drat.skip=true -Djacoco.skip=true -DskipITs -DskipTests -Prelease
导入IDEA
跟普通Maven项目一样,导入IDEA即可,需要在根目录的pom.xml增加module的配置,否则IDEA无法识别到examples中的项目:
<modules>
<module>shardingsphere-spimodule>
<module>shardingsphere-sql-parsermodule>
<module>shardingsphere-distsqlmodule>
<module>shardingsphere-db-protocolmodule>
<module>shardingsphere-inframodule>
<module>shardingsphere-modemodule>
<module>shardingsphere-kernelmodule>
<module>shardingsphere-jdbcmodule>
<module>shardingsphere-proxymodule>
<module>shardingsphere-featuresmodule>
<module>shardingsphere-agentmodule>
<module>shardingsphere-testmodule>
<module>shardingsphere-distributionmodule>
<module>examplesmodule>
modules>
运行Example
examples中有很多样例,以ShardingRawYamlConfigurationExample为例,需要在src/main/resources/META-INF/sharding-auto-tables.yaml修改数据源:
dataSources:
ds_0:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
# 修改为你的数据源
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
# 修改为你的数据源
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
之后直接运行ShardingRawYamlConfigurationExample即可,如看到以下日志,则运行成功:
[INFO ] 2022-05-09 17:25:53,770 --main-- [com.zaxxer.hikari.HikariDataSource] HikariPool-1 - Starting...
[INFO ] 2022-05-09 17:25:54,098 --main-- [com.zaxxer.hikari.HikariDataSource] HikariPool-1 - Start completed.
[INFO ] 2022-05-09 17:25:54,107 --main-- [com.zaxxer.hikari.HikariDataSource] HikariPool-2 - Starting...
[INFO ] 2022-05-09 17:25:54,231 --main-- [com.zaxxer.hikari.HikariDataSource] HikariPool-2 - Start completed.
[INFO ] 2022-05-09 17:25:56,027 --main-- [ShardingSphere-SQL] Logic SQL: CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, address_id BIGINT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))
[INFO ] 2022-05-09 17:25:56,027 --main-- [ShardingSphere-SQL] SQLStatement: MySQLCreateTableStatement(containsNotExistClause=true)
[INFO ] 2022-05-09 17:25:56,028 --main-- [ShardingSphere-SQL] Actual SQL: ds_1 ::: CREATE TABLE IF NOT EXISTS t_order_1 (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, address_id BIGINT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))
[INFO ] 2022-05-09 17:25:56,028 --main-- [ShardingSphere-SQL] Actual SQL: ds_1 ::: CREATE TABLE IF NOT EXISTS t_order_3 (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, address_id BIGINT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))
[INFO ] 2022-05-09 17:25:56,028 --main-- [ShardingSphere-SQL] Actual SQL: ds_0 ::: CREATE TABLE IF NOT EXISTS t_order_0 (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, address_id BIGINT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))
...
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)