· 8 years ago · Nov 15, 2017, 08:56 AM
1-- Создаем шарды Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ graphite под общим именем `graphite_sharded`. Ðто Ð¸Ð¼Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользовано
2-- Ð´Ð»Ñ Ð´Ð¾Ñтупа через Distributed Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ graphite. Ð’ конфиге кроÑÑ-Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ð¿Ð¸Ñана в клаÑтере Ñ
3-- именем `carbon_metrics`. Так-же называетÑÑ Ð¸ база.
4
5-- Note: в конфиге Ñтого клаÑтера Ñтоит `internal_replication = true`, Ñ‚.к. мы иÑпользуем шарды Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸ÐµÐ¹, поÑтому
6-- Distributed не надо дополнительно их реплицировать
7
8-- <carbon_metrics>
9-- <shard>
10-- <!-- Ðе обÑзательно. Ð’ÐµÑ ÑˆÐ°Ñ€Ð´Ð° при запиÑи данных. По умолчанию, 1. -->
11-- <weight>1</weight>
12-- <!-- Ðе обÑзательно. ЗапиÑывать ли данные только на одну, любую из реплик. По умолчанию, false - запиÑывать данные на вÑе реплики. -->
13-- <internal_replication>1</internal_replication>
14-- <replica>
15-- <host>graphite1</host>
16-- <port>9000</port>
17-- </replica>
18-- <replica>
19-- <host>graphite2</host>
20-- <port>9000</port>
21-- </replica>
22-- </shard>
23-- <shard>
24-- <!-- Ðе обÑзательно. Ð’ÐµÑ ÑˆÐ°Ñ€Ð´Ð° при запиÑи данных. По умолчанию, 1. -->
25-- <weight>1</weight>
26-- <!-- Ðе обÑзательно. ЗапиÑывать ли данные только на одну, любую из реплик. По умолчанию, false - запиÑывать данные на вÑе реплики. -->
27-- <internal_replication>1</internal_replication>
28-- <replica>
29-- <host>graphite2</host>
30-- <port>9000</port>
31-- </replica>
32-- <replica>
33-- <host>graphite3</host>
34-- <port>9000</port>
35-- </replica>
36-- </shard>
37-- <shard>
38-- <!-- Ðе обÑзательно. Ð’ÐµÑ ÑˆÐ°Ñ€Ð´Ð° при запиÑи данных. По умолчанию, 1. -->
39-- <weight>1</weight>
40-- <!-- Ðе обÑзательно. ЗапиÑывать ли данные только на одну, любую из реплик. По умолчанию, false - запиÑывать данные на вÑе реплики. -->
41-- <internal_replication>1</internal_replication>
42-- <replica>
43-- <host>graphite3</host>
44-- <port>9000</port>
45-- </replica>
46-- <replica>
47-- <host>graphite1</host>
48-- <port>9000</port>
49-- </replica>
50-- </shard>
51-- </carbon_metrics>
52
53-- Пара моментов:
54-- {shard} разворачиваетÑÑ Ð² номер Ñервера (1)
55-- {replica} разворачиваетÑÑ Ð² hostname Ñервера (graphite1)
56
57-- ЗапуÑкаем на #1
58CREATE DATABASE IF NOT EXISTS carbon_metrics;
59CREATE TABLE carbon_metrics.graphite_sharded (
60 Path String,
61 Value Float64,
62 Time UInt32,
63 Date Date,
64 Timestamp UInt32
65)
66ENGINE = ReplicatedGraphiteMergeTree (
67 '/clickhouse/tables/{shard}/carbon_metrics.graphite', '{replica}-graphite',
68 Date, (Path, Time), 8192, 'graphite_rollup');
69
70-- Теперь Ñоздадим Distributed таблицу `graphite`, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользовать вÑе шарды Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ `graphite_sharded`
71
72-- ЗапуÑкаем на #1
73CREATE TABLE carbon_metrics.graphite (
74 Path String,
75 Value Float64,
76 Time UInt32,
77 Date Date,
78 Timestamp UInt32
79)
80ENGINE = Distributed (carbon_metrics, carbon_metrics, graphite_sharded, sipHash64(Path));
81
82
83-- Т.к. у Ð½Ð°Ñ ÐºÑ€Ð¾ÑÑ-репликациÑ, то шард Ñ Ñервера:
84-- #3 будет реплицироватьÑÑ #1,
85-- #1 будет реплицироватьÑÑ #2,
86-- #2 будет реплицироватьÑÑ #3,
87-- ПоÑтому на #1 укажем, что он держит реплику Ñ #3
88-- Note: Ð¸Ð¼Ñ `graphite_shard3_replica` может быть любым, Ñ‚.к. нигде Ñвно нами не иÑпользуетÑÑ, только в ÑиÑтемных таблицах
89-- {replica} разворачиваетÑÑ Ð² hostname Ñервера (graphite1)
90-- в пути Ð´Ð»Ñ ZooKeeper'а Ñвно указываем номер шарда(путь шарда), который будем тащить на #1 (3)
91CREATE TABLE carbon_metrics.graphite_shard3_replica (
92 Path String,
93 Value Float64,
94 Time UInt32,
95 Date Date,
96 Timestamp UInt32
97)
98ENGINE = ReplicatedGraphiteMergeTree (
99 '/clickhouse/tables/3/carbon_metrics.graphite', '{replica}-graphite',
100 Date, (Path, Time), 8192, 'graphite_rollup');
101
102-- С таблицей `carbon_metrics.graphite` на #1 закончили.
103
104-- Далее Ñоздадим таблицу `carbon_metrics.graphite_tree`. Она будет Distributed, но без шардированиÑ, Ñ‚.к. изменÑетÑÑ
105-- редко и Ñодержит отноÑительно небольшое количеÑтво данных. Ð’ конфиге определен новый клаÑтер `carbon_metrics_tree`.
106-- <carbon_metrics_tree>
107-- <shard>
108-- <!-- Ðе обÑзательно. Ð’ÐµÑ ÑˆÐ°Ñ€Ð´Ð° при запиÑи данных. По умолчанию, 1. -->
109-- <weight>1</weight>
110-- <!-- Ðе обÑзательно. ЗапиÑывать ли данные только на одну, любую из реплик. По умолчанию, false - запиÑывать данные на вÑе реплики. -->
111-- <internal_replication>0</internal_replication>
112-- <replica>
113-- <host>graphite1</host>
114-- <port>9000</port>
115-- </replica>
116-- <replica>
117-- <host>graphite2</host>
118-- <port>9000</port>
119-- </replica>
120-- <replica>
121-- <host>graphite3</host>
122-- <port>9000</port>
123-- </replica>
124-- </shard>
125-- </carbon_metrics_tree>
126
127
128-- Note: в конфиге Ñтого клаÑтера Ñтоит `internal_replication = false`, Ñ‚.к. мы иÑпользуем обычную таблицу, котораÑ
129-- Ñама ÑÐµÐ±Ñ Ð½Ðµ реплицирует, поÑтому репликацией будет заниматьÑÑ Ñам Distributed.
130
131-- `carbon_metrics.graphite_tree_distributed` ÑвлÑетÑÑ Ð±ÐµÐºÑндом Ð´Ð»Ñ `carbon_metrics.graphite_tree`
132CREATE TABLE carbon_metrics.graphite_tree_distributed (
133 Date Date,
134 Level UInt32,
135 Path String,
136 Deleted UInt8,
137 Version UInt32
138)
139ENGINE = ReplacingMergeTree(Date, (Level, Path), 8192, Version);
140
141-- и Ñоздаем Ñаму `carbon_metrics.graphite_tree`
142CREATE TABLE carbon_metrics.graphite_tree (
143 Date Date,
144 Level UInt32,
145 Path String,
146 Deleted UInt8,
147 Version UInt32
148)
149ENGINE = Distributed (carbon_metrics_tree, carbon_metrics, graphite_tree_distributed, sipHash64(Path));
150
151-- Ð’Ñе. С наÑтройкой #1 закончили. Теперь то-же Ñамое (Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ отличиÑми) надо повторить Ð´Ð»Ñ #2 и #3
152
153
154-- ЗапуÑкаем на #2
155
156CREATE DATABASE IF NOT EXISTS carbon_metrics;
157CREATE TABLE carbon_metrics.graphite_sharded (
158 Path String,
159 Value Float64,
160 Time UInt32,
161 Date Date,
162 Timestamp UInt32
163)
164ENGINE = ReplicatedGraphiteMergeTree (
165 '/clickhouse/tables/{shard}/carbon_metrics.graphite', '{replica}-graphite',
166 Date, (Path, Time), 8192, 'graphite_rollup');
167
168CREATE TABLE carbon_metrics.graphite (
169 Path String,
170 Value Float64,
171 Time UInt32,
172 Date Date,
173 Timestamp UInt32
174)
175ENGINE = Distributed (carbon_metrics, carbon_metrics, graphite_sharded, sipHash64(Path));
176
177-- Ñозадем таблицу реплики Ñ #1
178CREATE TABLE carbon_metrics.graphite_shard1_replica (
179 Path String,
180 Value Float64,
181 Time UInt32,
182 Date Date,
183 Timestamp UInt32
184)
185ENGINE = ReplicatedGraphiteMergeTree (
186 '/clickhouse/tables/1/carbon_metrics.graphite', '{replica}-graphite',
187 Date, (Path, Time), 8192, 'graphite_rollup');
188
189CREATE TABLE carbon_metrics.graphite_tree_distributed (
190 Date Date,
191 Level UInt32,
192 Path String,
193 Deleted UInt8,
194 Version UInt32
195)
196ENGINE = ReplacingMergeTree(Date, (Level, Path), 8192, Version);
197
198CREATE TABLE carbon_metrics.graphite_tree (
199 Date Date,
200 Level UInt32,
201 Path String,
202 Deleted UInt8,
203 Version UInt32
204)
205ENGINE = Distributed (carbon_metrics_tree, carbon_metrics, graphite_tree_distributed, sipHash64(Path));
206
207
208-- ЗапуÑкаем на #3
209
210CREATE DATABASE IF NOT EXISTS carbon_metrics;
211CREATE TABLE carbon_metrics.graphite_sharded (
212 Path String,
213 Value Float64,
214 Time UInt32,
215 Date Date,
216 Timestamp UInt32
217)
218ENGINE = ReplicatedGraphiteMergeTree (
219 '/clickhouse/tables/{shard}/carbon_metrics.graphite', '{replica}-graphite',
220 Date, (Path, Time), 8192, 'graphite_rollup');
221
222CREATE TABLE carbon_metrics.graphite (
223 Path String,
224 Value Float64,
225 Time UInt32,
226 Date Date,
227 Timestamp UInt32
228)
229ENGINE = Distributed (carbon_metrics, carbon_metrics, graphite_sharded, sipHash64(Path));
230
231-- Ñозадем таблицу реплики Ñ #2
232CREATE TABLE carbon_metrics.graphite_shard2_replica (
233 Path String,
234 Value Float64,
235 Time UInt32,
236 Date Date,
237 Timestamp UInt32
238)
239ENGINE = ReplicatedGraphiteMergeTree (
240 '/clickhouse/tables/2/carbon_metrics.graphite', '{replica}-graphite',
241 Date, (Path, Time), 8192, 'graphite_rollup');
242
243CREATE TABLE carbon_metrics.graphite_tree_distributed (
244 Date Date,
245 Level UInt32,
246 Path String,
247 Deleted UInt8,
248 Version UInt32
249)
250ENGINE = ReplacingMergeTree(Date, (Level, Path), 8192, Version);
251
252CREATE TABLE carbon_metrics.graphite_tree (
253 Date Date,
254 Level UInt32,
255 Path String,
256 Deleted UInt8,
257 Version UInt32
258)
259ENGINE = Distributed (carbon_metrics_tree, carbon_metrics, graphite_tree_distributed, sipHash64(Path));