shardingsphere连接mySQL胎教级教程

一个零基础大学生,在网上能搜到的教程全都缺胳膊短腿的情况下一路摸爬滚打,进行了不知道多少次试错之后终于成功把这俩连接上了,一怒之下决定做一个胎教级别的教程。已经在舍友的电脑上试验成功,大家可以放心食用。

 环境:window10

大部分操作在命令行中进行

注意:

 安装的版本不同可能造成各种奇怪的问题,由于我使用的版本可以正常连接,因此教程中所提供的链接都是我使用的版本。

一、javaJDK环境

确保你的电脑中已经配置好了java环境

在命令行中输入java -version,若显示版本号,则可继续下一步

如果没有显示版本号,先配置好了再进行后续操作。由于网上的java环境配置教程已经很详细,我就不做赘述。

二、下载shardingsphere5.4.1

下载网址:Apache Download Mirrors

点击箭头所指任意一个链接即可下载

下载后解压,内容如下

三、下载mysql connector-8.0.32

前往官网下载,下载地址:MySQL :: Download MySQL Connector/J (Archived Versions)​​​​​​

Operating System选项选择Platform Independent

Download第二个压缩包

下载之后解压,如图所示,将.jar文件复制到shardingsphere的lib文件夹中

复制完之后的lib文件夹:

四、下载mysql 8.0.35

注意看,这个mysql和上面的mysql connector不是同一个东西

也是在官网下载,网址:MySQL :: Download MySQL Community Server​​​​​

 

⬆点击第一个下载按钮

⬆点击“NO thanks.just start my download"

下载之后解压

刚下载好的文件夹内没有data文件夹和my.ini文件,其中my.ini需要自己新建。

右键新建文本文档,然后修改后缀名为ini即可,my.ini的内容如下:

[mysqld]
# 设置3306端口
port=3306

# 设置mysql的安装目录
basedir=D:\work\mySQL\mysql-8.0.35-winx64
# 设置mysql数据库的数据的存放目录
#datadir=D:\work\mySQL\mysql-8.0.35-winx64\Data

# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password


[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

⬆注意把这个basedir的路径修改为自己存放mysql的路径

下面的datadir就是上面提到的data文件夹的生成路径,我用#注释掉了,因为系统会自动生成,更安全。

五、设置mysql系统环境

⬇右键此电脑或直接搜索,选择属性,进入高级系统设置

⬇点击环境变量

⬇选中系统变量中的PATH后,点击编辑

⬇点击新建,然后输入你刚刚下载的mysql-8.0.35-winx64的bin文件夹的路径

⬇路径可以在文件夹中直接复制

!记得点击三次确定,这样才算保存设置

六、启动mysql服务

⬇以管理员身份打开命令行

首先使用cd命令转到你刚刚下载的mysql的bin文件夹的路径(如果不是下载在c盘则需要先转到对应的磁盘中,例如D盘,则使用 "d:"转换),如下图所示

接下去,依次执行如下命令

1.

mysqld --initialize --console

复制记录一下图中的“A temporary password …..:”后面的乱码是你的密码,一会登录要用到

2.

mysqld -install

显示service successfully installed则成功

3.

net start mysql

服务启动成功

4. 测试一下是否可以使用mysql连接本地数据库

mysql -uroot -p

然后输入你刚刚记录的那一长串乱码密码,登陆成功。

5.修改密码

刚刚的密码一大长串太难记,可以修改成一个简单好记的密码

alter user root@localhost identified by 'root';

此处我将密码重置为了"root",记住这个密码,之后还会用到

6.!  !  !  !

在你的本地数据库中添加两个库,使用"create database 数据库名"进行添加,或者直接使用navicat新建,记住你的新建的两个数据库名字,之后会用到。我建的两个数据库名字是demo_ds_0和demo_ds_1,可供参考

create database demo_ds_0;
create database demo_ds_1;
show databases;

mysql配置暂时告一段落,可以使用“\q"或者”exit"命令退出数据库

七、shardingsphere的详细配置

打开你的shardingsphere文件夹,进入conf目录

接下来要对config-sharding.yaml和server.yaml 文件进行修改

首先,右键server.yaml文件,选择打开方式,可以是记事本或者vscode或者visual studio等等

如图所示,文档中的是官方的默认设置,不过已经全部被注释了,所以我们需要在文档的最下面追加内容。

server.yaml配置:

authority:
  users:
    - user: root@%
      password: root
    - user: sharding
      password: sharding

 追加完毕,在退出之前记得保存。

接下来打开config-sharding.yaml文件,同样翻到最底部进行追加

config-sharding.yaml配置:

databaseName: sharding_db

dataSources:
  ds_0:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezone=UTC&useSSL=false
    username: root
    password: root
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_1:
    url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
    username: root
    password: root
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
- !SHARDING
  tables:
    t_order:
      actualDataNodes: ds_${0..1}.t_order_${0..1}
      tableStrategy:
        standard:
          shardingColumn: order_id
          shardingAlgorithmName: t_order_inline
      keyGenerateStrategy:
        column: order_id
        keyGeneratorName: snowflake
      auditStrategy:
        auditorNames:
          - sharding_key_required_auditor
        allowHintDisable: true
    t_order_item:
      actualDataNodes: ds_${0..1}.t_order_item_${0..1}
      tableStrategy:
        standard:
          shardingColumn: order_id
          shardingAlgorithmName: t_order_item_inline
      keyGenerateStrategy:
        column: order_item_id
        keyGeneratorName: snowflake
  bindingTables:
    - t_order,t_order_item
  defaultDatabaseStrategy:
    standard:
      shardingColumn: user_id
      shardingAlgorithmName: database_inline
  defaultTableStrategy:
    none:
  defaultAuditStrategy:
    auditorNames:
      - sharding_key_required_auditor
    allowHintDisable: true

  shardingAlgorithms:
    database_inline:
      type: INLINE
      props:
        algorithm-expression: ds_${user_id % 2}
    t_order_inline:
      type: INLINE
      props:
        algorithm-expression: t_order_${order_id % 2}
    t_order_item_inline:
      type: INLINE
      props:
        algorithm-expression: t_order_item_${order_id % 2}

  keyGenerators:
    snowflake:
      type: SNOWFLAKE

  auditors:
    sharding_key_required_auditor:
      type: DML_SHARDING_CONDITIONS

- !BROADCAST
  tables:
    - t_address

但是注意,有几个需要修改的地方,如图所示的位置,步骤六中修改的密码和新建的两个库在此处派上用场

保存之后退出。

接下来,进入sharingsphere文件夹的bin目录

双击运行第一个start.bat程序,启动shardingsphere

 如图所示,如果看到最后一行显示”successfully" ,则启动成功。

注意,不要关闭这个窗口,它还有用。

八、使用shardingsphere连接mysql

首先与步骤六相同,使用管理员身份启动命令行,转到mysql文件夹的bin目录下,然后输入

mysql -P3307 -uroot -p

(3307是shardingsphere的默认端口)

如图所示,与步骤六中使用mysql连接本地数据库有一些不同之处。

如果刚刚把shardingsphere的启动窗口关了,这里就会连不上。

然后输入 

show databases;

 

可以看到,相比步骤六中,多出了一个名为sharding_db的数据库,这是在config-sharding.yaml文件中设置的databaseName

然后 使用

use sharding_db;

语句,切换到 sharding_db数据库,测试一下功能:

create table if not exists t_order(order_id BIGINT NOT NULL,user_id INT NOT NULL,status VARCHAR(50),PRIMARY KEY (order_id));

在navicat中可以看到,create table语句在demo_ds_0和demo_ds_1库中都实现了

到此,shardingsphere连接mysql的所有步骤圆满完成

九、遇到的一些问题

1.Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/shardingsphere/sqltranslator/yaml/config/YamlSQLTranslatorRuleConfiguration

检查一下你的shardingsphere的lib目录里的Jar文件,它们可能被在解压缩的时候被解析错误成了奇怪的文件后缀

2.启动shardingsphere时的报错大部分都是config-sharding.yaml文件配置不对造成的,如果有报错,可以尝试把文件内你追加的内容删除再试试是否start successfully

3..在进行mysql -P3307 -uroot -p时,如果把shardingsphere的start.bat窗口关闭了,就会报错ERROR 2003

4.一开始我用的版本是mysql-connector-j-8.1.0+ShardingSphere-Proxy 5.2.1,结果无论输入什么语句都会报错ERROR 2014 (HY000): Commands out of sync; you can't run this command now

后来改了版本之后才正常。

  • 38
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值