-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
128 lines (121 loc) · 3.25 KB
/
Copy pathdocker-compose.yml
File metadata and controls
128 lines (121 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# MySQL 5.7 + 8.0 双实例(用于案例对比)
# 公共启动参数(通过 YAML 锚点复用)
x-mysql-common: &mysql-common
restart: unless-stopped
init: true
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sql_treasure
TZ: Asia/Shanghai
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--innodb-buffer-pool-size=512M
--innodb-flush-log-at-trx-commit=2
--sql_mode=NO_ENGINE_SUBSTITUTION
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot"]
interval: 5s
timeout: 5s
retries: 30
services:
# MySQL 5.7(端口 3307)
mysql57:
<<: *mysql-common
image: mysql:5.7
container_name: sql-treasure-mysql57
ports:
- "3307:3306"
volumes:
- mysql57_data:/var/lib/mysql
# MySQL 8.0(端口 3308)
mysql80:
<<: *mysql-common
image: mysql:8.0
container_name: sql-treasure-mysql80
ports:
- "3308:3306"
volumes:
- mysql80_data:/var/lib/mysql
# ─────────── TiDB 集群(分布式 SQL)───────────
# PD 调度节点(元数据管理 + 时间戳分配)
pd:
image: pingcap/pd:v7.5.1
container_name: sql-treasure-pd
restart: on-failure
ports:
- "2379:2379"
- "2380:2380"
volumes:
- pd_data:/var/lib/pd
command:
- --name=pd
- --data-dir=/var/lib/pd
- --client-urls=http://0.0.0.0:2379
- --peer-urls=http://0.0.0.0:2380
- --advertise-client-urls=http://pd:2379
- --advertise-peer-urls=http://pd:2380
- --initial-cluster=pd=http://pd:2380
# TiKV 存储节点(RocksDB 持久化 + Raft 共识)
tikv:
image: pingcap/tikv:v7.5.1
container_name: sql-treasure-tikv
restart: on-failure
ports:
- "20160:20160"
volumes:
- tikv_data:/var/lib/tikv
command:
- --addr=0.0.0.0:20160
- --advertise-addr=tikv:20160
- --data-dir=/var/lib/tikv
- --pd=pd:2379
depends_on:
- pd
# TiDB SQL 计算节点(MySQL 协议兼容,端口 4000)
tidb:
image: pingcap/tidb:v7.5.1
container_name: sql-treasure-tidb
restart: on-failure
ports:
- "4000:4000"
- "10080:10080"
command:
- --store=tikv
- --path=pd:2379
- --advertise-address=tidb
depends_on:
- tikv
# TiFlash 列存节点(用于案例 87:TiFlash 列存与 MPP 分析加速)
# 启动后需在 TiDB 中执行:ALTER TABLE <t> SET TIFLASH REPLICA 1
tiflash:
image: pingcap/tiflash:v7.5.1
container_name: sql-treasure-tiflash
restart: on-failure
# TiFlash 容器 ulimit 需调高(官方推荐)
ulimits:
nofile:
soft: 200000
hard: 200000
ports:
- "3930:3930" # 客户端端口
volumes:
- tiflash_data:/var/lib/tiflash
command:
- --tmp_path=/var/lib/tiflash/tmp
- --path=/var/lib/tiflash/data
- --listen_host=0.0.0.0
- --tcp_port=9000
- --http_port=3930
- --flash_proxy_addr=0.0.0.0:20170
- --flash_proxy_advertise_addr=tiflash:20170
- --status_addr=0.0.0.0:20292
- --pd_addr=pd:2379
depends_on:
- tikv
volumes:
mysql57_data:
mysql80_data:
pd_data:
tikv_data:
tiflash_data: