![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c4c84eb8dafa4a96af231ca81768b6d4.jpeg)
概要
Redis部署
-
获取Redis镜像:
- 使用Docker从官方仓库拉取Redis镜像:
docker pull redis:6.2.6
- 使用Docker从官方仓库拉取Redis镜像:
-
创建Redis配置文件:
- 在宿主机上创建一个目录用于存放Redis配置文件:
mkdir -p /data/docker/redis/conf
- 在宿主机上创建一个目录用于存放Redis配置文件:
-
创建Redis数据持久化目录:
- 在宿主机上创建一个目录用于Redis数据的持久化存储:
mkdir -p /data/docker/redis/data
- 在宿主机上创建一个目录用于Redis数据的持久化存储:
-
创建配置文件
- 创建配置文件
redis.conf
cd /data/docker/redis/conf touch redis.conf
- 根据需要增加配置信息, 下面设置密码
requirepass 123456
- 创建配置文件
-
启动Redis容器:
- 使用以下命令启动Redis容器,并将配置文件和数据目录挂载到容器中:
其中:docker run \ -d \ --restart always \ --name redis \ -p 6379:6379 \ -v /data/docker/redis/data:/data \ -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \ redis:6.2.6 redis-server /etc/redis/redis.conf
-d
表示后台运行容器。--restart always
设置容器的重启策略。--name redis
为容器指定一个名称。-p 6379:6379
将容器的6379端口映射到宿主机的6379端口。-v /data/docker/redis/data:/data
将宿主机的数据目录挂载到容器中。-v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf
将宿主机的配置文件挂载到容器中。redis:6.2.6
指定要使用的Redis镜像和版本(6.2.6)。redis-server /etc/redis/redis.conf
指定Redis服务器使用挂载的配置文件启动。
- 使用以下命令启动Redis容器,并将配置文件和数据目录挂载到容器中:
-
测试Redis服务:
- 进入Redis容器:
docker exec -it redis /bin/bash
- 连接到Redis服务器:
redis-cli
- 使用
auth
命令进行认证:auth 123456
- 进入Redis容器:
MySQL部署
-
获取MySQL镜像:
- 使用Docker从官方仓库拉取MySQL镜像:
docker pull mysql:5.7
- 使用Docker从官方仓库拉取MySQL镜像:
-
创建MySQL宿主机挂载目录:
- 在宿主机上创建一个目录用于存放MySQL配置文件:
mkdir -p /data/docker/mysql/conf
- 在宿主机上创建一个目录用于MySQL数据的持久化存储:
mkdir -p /data/docker/mysql/data
- 在宿主机上创建一个目录用于存放MySQL的用户名,密码
mkdir -p /data/docker/mysql/env
- 在宿主机上创建一个目录用于存放MySQL配置文件:
-
创建环境变量文件
- 创建配置文件`env_file
cd /data/docker/redis/env touch env_file
- 增加环境变量信息
MYSQL_ROOT_PASSWORD=123456 MYSQL_USER=test MYSQL_PASSWORD=123456 TZ=Asia/Shanghai LANG=en_US.UTF-8
- 创建配置文件`env_file
-
启动MySQL容器
- 使用以下命令启动MySQL容器,并将配置文件和数据目录挂载到容器中:
其中:docker run \ -d \ --restart always \ --name mysql \ -p 3306:3306 \ --env-file /data/docker/mysql/env/env_file \ -v /data/docker/mysql/data:/var/lib/mysql \ -v /data/docker/mysql/conf:/etc/mysql/conf.d \ mysql:5.7
-d
表示后台运行容器。--restart always
设置容器的重启策略。--name mysql
为容器指定一个名称。-p 3306:3306
将容器的3306端口映射到宿主机的3306端口。--env-file /data/docker/mysql/env/env_file
从宿主机env_file文件中加载环境变量。-v /data/docker/mysql/data:/var/lib/mysql
将宿主机的数据目录挂载到容器中。-v /data/docker/mysql/conf:/etc/mysql/conf.d
将宿主机的配置文件挂载到容器中。mysql:5.7
指定要使用的MySQL镜像和版本(5.7)。
- 使用以下命令启动MySQL容器,并将配置文件和数据目录挂载到容器中:
-
测试MySQL服务:
-
进入MySQL容器:
docker exec -it mysql /bin/bash
-
连接到MySQL服务器:
mysql -h 127.0.0.1 -uroot -p
输入你的root密码,然后你将进入MySQL命令行界面。
-
创建测试库
CREATE DATABASE test; USE test;
-
创建学生表
在MySQL命令行界面中,你可以使用
CREATE TABLE
语句来创建一个新的表。例如,创建一个名为students
的表,包含学生ID、姓名、年龄和专业字段:CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT, major VARCHAR(100) );
这条命令创建了一个名为
students
的表,其中包含四个字段:id
:学生的唯一标识符,自动增长的整数。name
:学生的名字,字符串类型,最多100个字符。age
:学生的年龄,整数类型。major
:学生的专业,字符串类型,最多100个字符。
-
插入数据
创建表之后,你可以使用
INSERT INTO
语句向表中插入数据。例如:INSERT INTO students (name, age, major) VALUES ('张三', 20, '计算机科学'); INSERT INTO students (name, age, major) VALUES ('李四', 22, '机械工程');
这些命令将向
students
表中插入两条记录。 -
查看数据
插入数据后,你可以使用
SELECT
语句来查看表中的所有数据:SELECT * FROM students;
这将列出
students
表中的所有记录。 -
退出MySQL
完成操作后,可以通过输入
exit
命令或按Ctrl + D
退出MySQL命令行界面。
-
ClickHouse部署
-
获取ClickHouse镜像:
- 使用Docker从官方仓库拉取ClickHouse镜像:
docker pull clickhouse/clickhouse-server:23.12
- 使用Docker从官方仓库拉取ClickHouse镜像:
-
创建ClickHouse宿主机挂载目录:
- 在宿主机上创建一个目录用于存放ClickHouse配置文件:
mkdir -p /data/docker/clickhouse/conf
- 在宿主机上创建一个目录用于ClickHouse数据的持久化存储:
mkdir -p /data/docker/clickhouse/data
- 在宿主机上创建一个目录用于存放ClickHouse配置文件:
-
增加配置信息
- 导出配置 config.xml 和 users.xml 文件
# config.xml 文件导出 docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/config.xml > /data/docker/clickhouse/conf/config.xml # users.xml 文件导出 docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/users.xml > /data/docker/clickhouse/conf/users.xml
- 修改users.xml文件
其中<root> <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex> <networks incl="networks" replace="replace"> <ip>::/0</ip> </networks> <profile>default</profile> <quota>default</quota> </root>
<password_sha256_hex>....</password_sha256_hex>
里面是加密后的密码, 使用如下命令生成:echo -n "123456" | sha256sum | tr -d '-' 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c9
- 导出配置 config.xml 和 users.xml 文件
-
启动ClickHouse容器
- 使用以下命令启动ClickHouse容器,并将配置文件和数据目录挂载到容器中:
其中:docker run \ -d \ --restart always \ --name clickhouse \ --ulimit nofile=262144:262144 \ -p 8123:8123 \ -p 9000:9000 \ -v /data/docker/clickhouse/data:/var/lib/clickhouse \ -v /data/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \ -v /data/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \ clickhouse/clickhouse-server:23.12
-d
表示后台运行容器。--restart always
设置容器的重启策略。--name clickhouse
为容器指定一个名称。--ulimit nofile=262144:262144
设置容器的文件句柄限制。ClickHouse 需要较高的文件句柄数来处理大量数据,这里设置为 262144。-p 8123:8123
将容器内部的 TCP 端口 8123 映射到宿主机的 TCP 端口 8123。这是 ClickHouse 的 HTTP 接口端口,用于 Web 界面访问和某些类型的客户端连接。-p 9000:9000
将容器内部的 TCP 端口 9000 映射到宿主机的 TCP 端口 9000。这是 ClickHouse 的原生 TCP 协议端口,用于客户端连接。
--v /data/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml
将宿主机上的 ClickHouse 配置文件 config.xml 挂载到容器内的相应位置。这样您就可以自定义 ClickHouse 的配置。
-v /data/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml
将宿主机上的 ClickHouse 用户配置文件 users.xml 挂载到容器内。这个文件包含了用户账号和权限设置clickhouse/clickhouse-server:23.12
指定要运行的 ClickHouse 镜像及其版本标签 23.12。如果标签不指定,默认为 latest。。
- 使用以下命令启动ClickHouse容器,并将配置文件和数据目录挂载到容器中:
-
测试ClickHouse服务:
-
进入ClickHouse容器:
docker exec -it clickhouse /bin/bash
-
连接到ClickHouse服务器:
clickhouse-client -u root
输入你的root密码,然后你将进入ClickHouse命令行界面。
-
创建测试库
CREATE DATABASE IF NOT EXISTS school; USE school;
-
创建考试成绩表
假设考试成绩表需要包含学生ID、姓名、考试日期、科目和成
CREATE TABLE IF NOT EXISTS student_scores ( student_id UInt32, name String, exam_date Date, subject String, score UInt8 ) ENGINE = MergeTree() ORDER BY (student_id, exam_date, subject);
这里使用 MergeTree 引擎,按 student_id、exam_date 和 subject 排序和分区数据。
-
插入数据
向 student_scores 表中插入一些示例数据:
INSERT INTO student_scores (student_id, name, exam_date, subject, score) VALUES (1, 'Alice', '2024-05-01', 'Math', 92), (1, 'Alice', '2024-05-02', 'Science', 88), (2, 'Bob', '2024-05-01', 'Math', 75), (2, 'Bob', '2024-05-02', 'Science', 80);
-
查看数据
-
插入数据后,你可以使用
SELECT
语句来查看表中的所有数据:SELECT * FROM student_scores;
-
计算每个学生的平均成绩
SELECT student_id, name, AVG(score) AS average_score FROM student_scores GROUP BY student_id, name;
-
-
退出ClickHouse
完成操作后,可以通过输入
exit
命令或按Ctrl + D
退出ClickHouse命令行界面。
-