1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Cetus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
cetus-shard-profile.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 21:41 e65dd39

Конфигурация для версии с разделением данных (sharding)

Конфигурация для версии с разделением данных включает в себя следующие файлы:

  • пользовательский файл конфигурации (users.json);
  • файл конфигурации обработки переменных (variables.json);
  • конфигурационный файл, определяющий правила разделения данных (sharding.json);
  • стартовый конфигурационный файл (shard.conf).

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 представляет собой пару ключ-значение. Ключ — это фиксированное значение, а значение определяется пользователем.

  • name — имя переменной, которую нужно настроить;
  • type — тип переменной (int, string или string-csv);
  • allowed_values — список допустимых значений для переменной;
  • silent_values — значения, которые будут обработаны без вывода.

Все элементы файла должны быть заключены в двойные кавычки, иначе они не будут работать.

Важно отметить, что настройка 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 — логические базы данных, содержащие свойства id, type, method, num и partitions. Значение id определяет идентификатор логической базы данных. Тип (type) определяет тип ключа разделения (int, char, date или datetime). Метод (method) указывает способ разделения. Num — количество сегментов для разделения hash. Partitions — это пары ключ-значение, где ключи и значения определяются пользователем.
  • table — таблицы разделения, включающие свойства vdb, db, table и pkey. Vdb указывает на идентификатор логической базы данных, db — на физическую базу данных, table — на имя таблицы разделения, pkey — на ключ разделения.
  • single_tables — глобальные таблицы с одним элементом, содержащие свойства table, db и group. Table указывает на имя таблицы, db — на физическую базу данных, group — на группу по умолчанию для глобальной таблицы. Конфигурация трёх видов правил vdb-сегментирования

Мы настроили три вида правил сегментирования 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

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:

  1. default-pool-size=<num> — устанавливает количество подключений при запуске (рабочим процессом), минимум 10, если установлено значение меньше 10, то фактическое значение будет равно 10.

  2. max-pool-size=<num> — задаёт максимальное количество подключений (рабочим процессом).

  3. max-resp-size=<num> — определяет максимальный размер ответа, при превышении которого клиенту выдаётся ошибка.

  4. enable-client-compress=[true|false] — поддерживает сжатие клиентом.

  5. enable-tcp-stream=[true|false] — запускает поток TCP, нет необходимости ждать завершения ответа перед отправкой клиенту.

  6. master-preferred=[true|false] — если не указано иное, всегда обращается к основной базе данных, за исключением случаев, когда требуется принудительное обращение к дополнительной базе данных.

  7. reduce-connections=[true|false] — автоматически уменьшает избыточное количество соединений с сервером.

  8. max-alive-time=<num> — устанавливает максимальное время жизни соединения с сервером.

  9. enable-fast-stream=[true|false] — включает быстрый поток, который быстро обрабатывает только запросы на чтение, по умолчанию false.

  10. partition-mode=[true|false] — если true, Cetus работает в режиме разделения таблиц; если false, то в режиме разделения сегментов.

  11. 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Cetus.git
git@api.gitlife.ru:oschina-mirror/mirrors-Cetus.git
oschina-mirror
mirrors-Cetus
mirrors-Cetus
master