Конфигурация для версии с разделением данных (sharding)
Конфигурация для версии с разделением данных включает в себя следующие файлы:
1. Файл users.json
Файл users.json используется для настройки информации о пользователях, включая имена пользователей, пароли для клиентского и серверного доступа.
{
"users": [{
"user": "XXXX",
"client_pwd": "XXXXXX",
"server_pwd": "XXXXXX"
}, {
"user": "XXXX",
"client_pwd": "XXXXXX",
"server_pwd": "XXXXXX"
}]
}
Здесь представлены два пользователя: XXXX и XXXX. У каждого из них есть свой пароль для клиентского доступа (client_pwd) и отдельный пароль для серверного доступа (server_pwd).
Пример:
{
"users": [{
"user": "root",
"client_pwd": "123",
"server_pwd": "123456"
}, {
"user": "test",
"client_pwd": "456",
"server_pwd": "123456"
}]
}
В этом примере мы создали двух пользователей: root и test. У пользователя root пароль для клиентского доступа — 123, а для серверного — 123456. У пользователя test пароль для клиентского доступа — 456, а для серверного также 123456.
2. Файл variables.json
Cetus поддерживает настройку некоторых системных переменных на уровне сессии. Это можно сделать через файл variables.json, где можно указать допустимые значения и значения, которые будут обрабатываться без вывода.
{
"variables": [
{
"name": "XXXXX",
"type": "XXXX",
"allowed_values": ["XXX"]
},
{
"name": "XXXXX",
"type": "XXXX",
"allowed_values": ["XXX"],
"silent_values": ["XX"]
}
]
}
Каждая запись в файле variables.json представляет собой пару ключ-значение. Ключ — это фиксированное значение, а значение определяется пользователем.
Все элементы файла должны быть заключены в двойные кавычки, иначе они не будут работать.
Важно отметить, что настройка allowed_values необходима для того, чтобы переменная была обработана по правилам silent_values.
Например:
{
"variables": [
{
"name": "sql_mode",
"type": "string-csv",
"allowed_values":
["STRICT_TRANS_TABLES",
"NO_AUTO_CREATE_USER",
"NO_ENGINE_SUBSTITUTION"
]
},
{
"name": "profiling",
"type": "int",
"allowed_values": ["0", "1"],
"silent_values": ["*"]
}
]
}
Мы настроили две переменные: sql_mode и profiling. Для переменной sql_mode установлен тип string-csv, и она может принимать значения STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER и NO_ENGINE_SUBSTITUTION. Переменная profiling имеет тип int и может принимать значения 0 или 1, при этом все значения будут обрабатываться без вывода (silent values).
3. Файл sharding.json
Этот файл содержит информацию о конфигурации разделения данных. Он также использует пары ключ-значение, где ключ является фиксированным, а значение задаётся пользователем.
{
"vdb": [
{
"id": X,
"type": "XXX",
"method": "XXXX",
"num": X,
"partitions": {"XXXX1": [X,X], "XXXX2": [X,X], "XXXX3": [X,X], "XXXX4": [X,X]}
},
{
"id": X,
"type": "XXX",
"method": "XXXXX",
"num": X,
"partitions": {"XXXX1": XXXXXX, "XXXX2": XXXXXX, "XXXX3": XXXXXX,"XXXX4": XXXXXX}
}
],
"table": [
{"vdb": X, "db": "XXXX", "table": "XXX", "pkey": "XX"},
{"vdb": X, "db": "XXXX", "table": "XXX", "pkey": "XX"},
{"vdb": X, "db": "XXXX", "table": "XXX", "pkey": "XX"},
{"vdb": X, "db": "XXXX", "table": "XXX", "pkey": "XX"}
]
"single_tables": [
{"table": "XXX", "db": "XXXX", "group": "XXXX1"},
{"table": "XXX", "db": "XXXX", "group": "data2"}
]
}
Структура файла sharding.json включает следующие элементы:
Мы настроили три вида правил сегментирования vdb. Первое правило имеет идентификатор 1, тип ключа сегментирования — char, метод сегментирования — hash, степень сегментирования равна 8, всего сегментов четыре. Группы сегментов имеют следующие диапазоны: data1 — 0 и 1; data2 — 2 и 3; data3 — 4 и 5; data4 — 6 и 7.
Второе правило имеет идентификатор 2, тип ключа сегментирования — int, метод сегментирования — range. Степень сегментирования не задана (num = 0). Всего сегментов также четыре. Диапазоны групп сегментов: data1 — от 0 до 124999; data2 — от 125000 до 249999; data3 — от 250000 до 374999; data4 — от 375000 до 499999.
Третье правило сегментирования имеет идентификатор 3, тип ключа сегментирования — datetime, метод сегментирования — range. Всего сегментов тоже четыре, и они аналогичны второму правилу сегментирования.
Сегментирование таблиц происходит в трёх физических базах данных: employees_hash, employees_range и purchase_range. В таблице dept_emp базы данных employees_hash используется первое правило сегментирования, ключ сегментирования — emp_no. В таблице employees базы данных employees_hash также используется первое правило, ключ сегментирования — emp_no. Во всех таблицах базы данных employees_range применяется второе правило сегментирования: в таблице dept_emp ключ сегментирования — emp_no, в таблице employees ключ сегментирования также — emp_no. Третье правило применяется к таблице purchase базы данных purchase_range, ключ сегментирования — t_time.
Существует две одноточечные глобальные таблицы single_tables: таблица regioncode базы данных employees_hash и таблица countries базы данных employees_range. По умолчанию они относятся к первой группе сегментов.
Примечание: имена баз данных и таблиц в правилах сегментирования нечувствительны к регистру.
shard.conf — это файл конфигурации запуска версии с разделением базы данных. Он должен быть загружен при запуске Cetus. Файл конфигурации использует формат «ключ = значение», где ключ фиксирован. Значение может быть изменено пользователем.
Например:
[cetus]
# Loaded Plugins
plugins=shard,admin
# Defines the number of worker processes.
worker-processes=4
# Set the network interface for distinguishing cetus instances
ifname=eth0
# Set the worker id for the cetus instance
worker-id=1
# Proxy Configuration
proxy-address=127.0.0.1:1234
proxy-backend-addresses=127.0.0.1:3361@data1,127.0.0.1:3362@data2,127.0.0.1:3363@data3,127.0.0.1:3364@data4
proxy-read-only-backend-addresses=127.0.0.1:3371@data1,127.0.0.1:3372@data2,127.0.0.1:3373@data3,127.0.0.1:3374@data4
# Admin Configuration
admin-address=127.0.0.1:5678
admin-username=admin
admin-password=admin
# Backend Configuration
default-db=test
default-username=test
# Log Configuration
log-file=cetus.log
log-level=debug
В этом примере мы настроили параметры запуска для версии с разделённой базой данных. Плагины, которые необходимо загрузить, — это shard и admin. Количество рабочих процессов равно 4. Рекомендуется установить количество процессов меньше или равное количеству процессоров.
Значение ifname установлено как eth0, чтобы Cetus мог использовать mac-адрес машины для идентификации экземпляров Cetus на разных машинах.
Worker-id установлен в 1. Это значение используется в качестве идентификатора, когда ifname не работает. Разные экземпляры должны иметь разные значения worker-id.
Proxy-address — это IP-адрес и порт, на котором слушает Proxy. Мы установили его в 127.0.0.1:1234. Proxy-backend-addresses — это IP и порт для чтения и записи основной базы данных (master), которые должны быть указаны вместе с группой (@group). В этом примере есть четыре группы: data1 (127.0.0.1:3361), data2 (127.0.0.1:3362), data3 (127.0.0.1:3363) и data4 (127.0.0.1:3364).
Proxy-read-only-backend-addresses — это IP и порты только для чтения из вторичной базы данных (slave), которые также должны быть указаны с группой (@group). Здесь также есть четыре группы: data1 (127.0.0.1:3371), data2 (127.0.0.1:3372), data3 (127.0.0.1:3373) и data4 (127.0.0.1:3374).
Admin-address — это IP-адрес и порт административного модуля. Мы установили их в 127.0.0.1:5678. Admin-username — это имя пользователя административного модуля, которое мы установили в admin. Admin-password — это пароль администратора, который мы установили в admin.
Default-db — это база данных по умолчанию. Когда соединение не указывает базу данных, используется база данных с именем test. Default-username — это пользователь по умолчанию, который автоматически создаётся при запуске Proxy и используется для подключения. Мы установили его в test.
Log-file — это путь к файлу журнала, который мы установили как текущий путь установки + cetus.log. Log-level — это уровень журнала, который может быть info | message | warning | error |. Критическая (по умолчанию), мы устанавливаем debug. Эти опции обязательны для запуска, другие доступные конфигурации производительности см. в Cetus: описание опций конфигурации запуска.
Примечание:
В этом файле конфигурации имя файла .json должно оставаться неизменным, а файл .conf можно назвать по своему усмотрению и загрузить с помощью командной строки.
Общие параметры файла конфигурации shard.conf:
default-pool-size=<num> — устанавливает количество подключений при запуске (рабочим процессом), минимум 10, если установлено значение меньше 10, то фактическое значение будет равно 10.
max-pool-size=<num> — задаёт максимальное количество подключений (рабочим процессом).
max-resp-size=<num> — определяет максимальный размер ответа, при превышении которого клиенту выдаётся ошибка.
enable-client-compress=[true|false] — поддерживает сжатие клиентом.
enable-tcp-stream=[true|false] — запускает поток TCP, нет необходимости ждать завершения ответа перед отправкой клиенту.
master-preferred=[true|false] — если не указано иное, всегда обращается к основной базе данных, за исключением случаев, когда требуется принудительное обращение к дополнительной базе данных.
reduce-connections=[true|false] — автоматически уменьшает избыточное количество соединений с сервером.
max-alive-time=<num> — устанавливает максимальное время жизни соединения с сервером.
enable-fast-stream=[true|false] — включает быстрый поток, который быстро обрабатывает только запросы на чтение, по умолчанию false.
partition-mode=[true|false] — если true, Cetus работает в режиме разделения таблиц; если false, то в режиме разделения сегментов.
enable-sql-special-processed=[true|false] — позволяет пропустить синтаксический анализ SQL, который не поддерживается анализатором Cetus, установив этот параметр в true. В этом случае Cetus будет использовать указанный маршрут для обработки запроса. Например, следующий SQL будет корректно обработан с использованием этой конфигурации: /*#group=data1*/update test1 a join test2 b on a.id=b.id set a.name='test';
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )