赞
踩
一个零基础大学生,在网上能搜到的教程全都缺胳膊短腿的情况下一路摸爬滚打,进行了不知道多少次试错之后终于成功把这俩连接上了,一怒之下决定做一个胎教级别的教程。已经在舍友的电脑上试验成功,大家可以放心食用。
环境:window10
大部分操作在命令行中进行
安装的版本不同可能造成各种奇怪的问题,由于我使用的版本可以正常连接,因此教程中所提供的链接都是我使用的版本。
确保你的电脑中已经配置好了java环境
在命令行中输入java -version,若显示版本号,则可继续下一步
如果没有显示版本号,先配置好了再进行后续操作。由于网上的java环境配置教程已经很详细,我就不做赘述。
点击箭头所指任意一个链接即可下载
下载后解压,内容如下
前往官网下载,下载地址:MySQL :: Download MySQL Connector/J (Archived Versions)
Operating System选项选择Platform Independent
Download第二个压缩包
下载之后解压,如图所示,将.jar文件复制到shardingsphere的lib文件夹中
复制完之后的lib文件夹:
注意看,这个mysql和上面的mysql connector不是同一个东西
⬆点击第一个下载按钮
⬆点击“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文件夹的生成路径,我用#注释掉了,因为系统会自动生成,更安全。
⬇右键此电脑或直接搜索,选择属性,进入高级系统设置
⬇点击环境变量
⬇选中系统变量中的PATH后,点击编辑
⬇点击新建,然后输入你刚刚下载的mysql-8.0.35-winx64的bin文件夹的路径
⬇路径可以在文件夹中直接复制
⬇!记得点击三次确定,这样才算保存设置
⬇以管理员身份打开命令行
首先使用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文件夹,进入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" ,则启动成功。
注意,不要关闭这个窗口,它还有用。
首先与步骤六相同,使用管理员身份启动命令行,转到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
后来改了版本之后才正常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。