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

OSCHINA-MIRROR/gitcrazy-cetus

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

Конфигурация для версии с разделением данных (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"
                }]
}

Здесь «user» — это имя пользователя, «client_pwd» — пароль для входа на клиентскую часть Cetus, а «server_pwd» — пароль для доступа к серверной части Cetus.

Пример:

{
       "users":        [{
                       "user": "root",
                       "client_pwd":   "123",
                       "server_pwd":   "123456"
               }, {
                       "user": "test",
                       "client_pwd":   "456",
                       "server_pwd":   "123456"
               }]
}

В этом примере мы создали двух пользователей: root и test. У пользователя root пароль для клиентской части Cetus — 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"]
    }
  ]
}

«Name» — название переменной, которую нужно настроить. «Type» — тип переменной (int, string или string-csv). «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 разрешены значения STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER и NO_ENGINE_SUBSTITUTION. Для переменной profiling разрешены значения 0 и 1, а все остальные значения будут обработаны без вывода.

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"}
  ]
}

Структура файла:

  • «Vdb» — информация о логических базах данных, включая id, тип ключа разделения, метод разделения, количество сегментов и разделы.
  • «Table» — таблицы, которые разделены, включая vdb, базу данных, таблицу и ключ разделения.
  • «Single_tables» — глобальные таблицы, которые не разделены.

Например:

{
 "vdb": [
   {
     "id": 1,
     "type": "char",
     "method": "hash",
     "num": 8,
     "partitions": {"data1": [0,1], "data2": [2,3], "data3": [4,5], "data4": [6,7]}
   },
   {
     "id": 2,
     "type": "int",
     "method": "range",
     "num": 0,
     "partitions": {"data1": 124999, "data2": 249999, "data3": 374999,"data4": 499999}
   },
   {
     "id": 3,
     "type": "datetime",
     "method": "range",
     "num": 0,
     "partitions": {"data1": "2019-03-05 09:53:06", "data2": "2020-03-05 09:53:06", "data3": "2021-03-05 09:53:06","data4": "2022-03-05 09:53:06"}
   }
  ],
 "table": [
   {"vdb": 1,
``` Критическая (по умолчанию), мы устанавливаем debug; эти опции обязательны для запуска, другие доступные настройки производительности см. в [Cetus: описание опций конфигурации запуска](https://github.com/Lede-Inc/cetus/blob/master/doc/cetus-configuration.md).

**Примечание:**

В этом файле конфигурации нельзя изменять имя файла .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 (обычно возникает ошибка near «xx»:syntax error), можно установить этот параметр в true, чтобы пропустить анализ и сообщить Cetus о методе маршрутизации для этого SQL с помощью комментариев.

Например, с помощью этой конфигурации можно поддерживать следующий 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/gitcrazy-cetus.git
git@api.gitlife.ru:oschina-mirror/gitcrazy-cetus.git
oschina-mirror
gitcrazy-cetus
gitcrazy-cetus
master