centos stream Docker 分布式数据库shardingsphere安装
·
一、安装docker
1、配置阿里docker-ce yum源
yum install -y yum-utils && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、安装docker-ce
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3、启动docker
systemctl start docker
二、下载jdbc驱动
驱动用于ShardingSphere连接至mysql,执行
wget -P /root/shardingsphere/ext-lib/ https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar
三、配置shardingsphere
docker run -d --rm --name temp_proxy swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/shardingsphere-proxy:5.5.2 && docker cp temp_proxy:/opt/shardingsphere-proxy/conf /root/shardingsphere/ && docker stop temp_proxy && cd /root/shardingsphere/conf
修改配置,配置ShardingSphere登入账户,执行
cat >> /root/shardingsphere/conf/global.yaml << EOF
authority:
users:
- user: root@%
password: @2020
admin: true
- user: sharding
password: sharding
privilege:
type: ALL_PERMITTED
EOF
四、集群部署
复制以下指令粘贴执行
cd /root/shardingsphere && cat > docker-compose.yaml <<'EOF'
version: '3.8'
services:
shardingsphere-proxy:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/shardingsphere-proxy:5.5.2
container_name: shardingsphere-proxy
restart: unless-stopped
networks:
- mysql-cluster-network
ports:
- "13308:3308"
environment:
- PORT=3308
volumes:
- ./conf:/opt/shardingsphere-proxy/conf
- ./ext-lib:/opt/shardingsphere-proxy/ext-lib
mysql-1:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:9.1.0
container_name: mysql-1
environment:
MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: mysql_native_password
MYSQL_ROOT_PASSWORD: @2020
MYSQL_DATABASE: center
volumes:
- mysql-data-1:/var/lib/mysql
networks:
- mysql-cluster-network
ports:
- "3306:3306"
mysql-2:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:9.1.0
container_name: mysql-2
environment:
MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: mysql_native_password
MYSQL_ROOT_PASSWORD: @2020
MYSQL_DATABASE: center
volumes:
- mysql-data-2:/var/lib/mysql
networks:
- mysql-cluster-network
ports:
- "3307:3306"
volumes:
mysql-data-1:
mysql-data-2:
networks:
mysql-cluster-network:
driver: bridge
EOF
执行以下指令
docker compose up -d
五、配置数据库
创建数据库并查看
-- 创建数据库
CREATE DATABASE center;
-- 切换数据库
use center;
-- 查看数据库信息
show databases;
创建存储节点信息并查看
-- 创建存储节点信息
REGISTER STORAGE UNIT ds_0 (
URL="jdbc:mysql://mysql-1:3306/center?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true",
USER="root",
PASSWORD="@2020"
);
REGISTER STORAGE UNIT ds_1 (
URL="jdbc:mysql://mysql-2:3306/center?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true",
USER="root",
PASSWORD="@2020"
);
-- 查看存储节点信息
SHOW STORAGE UNITS;
创建分片规则并查看
-- 创建分片规则
CREATE SHARDING TABLE RULE stat_card(
STORAGE_UNITS(ds_0,ds_1),
SHARDING_COLUMN=ng_id,
TYPE(NAME="hash_mod",PROPERTIES("sharding-count"="4")),
KEY_GENERATE_STRATEGY(COLUMN=ng_id,TYPE(NAME="snowflake"))
);
-- 查看分片规则
SHOW SHARDING TABLE RULES FROM center;
创建逻辑库(与节点库相同结构,但节点库会自动创建无需手动)
-- 创建逻辑库
CREATE TABLE center.`stat_card` (
`ng_id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`ng_id`)USING BTREE
)ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- 查看表结构
desc center.`stat_card`;
批量插入数据
INSERT INTO center.stat_card (ng_id, name) VALUES
(1,'用户1'),
(2,'用户3'),
(3,'用户5'),
(4,'用户7'),
(5,'用户2'),
(6,'用户4'),
(7,'用户6'),
(8,'用户8');
六、验证分片
使用dbeaver创建新的mysql连接,重新连接相同服务器ip账号密码,但修改端口号为3306、3307 在3306端口数据库执行以下语句 SELECT * FROM `stat_card_0` SELECT * FROM `stat_card_2` 在3307端口数据库执行以下语句 SELECT * FROM `stat_card_1` SELECT * FROM `stat_card_3`
更多推荐
所有评论(0)