Spec-Zone.ru › MariaDB

Управление кластером Spider

Прямой SQL

Прямой SQL — это способ отображения уменьшенного выполнения на удаленных бэкендах и сохранения результатов в локальной таблице. Это может быть последовательным, используя функцию UDF spider_direct_sql, или одновременным, используя spider_bg_direct_sql.

spider1 backend << EOF 
CREATE TEMPORARY TABLE res
(
  id int(10) unsigned NOT NULL,
  k int(10) unsigned NOT NULL DEFAULT '0',
  c char(120) NOT NULL DEFAULT '',
  pad char(60) NOT NULL DEFAULT ''
) ENGINE=MEMORY;
 
SELECT spider_direct_sql(
'SELECT * FROM sbtest s  WHERE s.id IN(10,12,13)',
  'res',   
  concat('host "', host, '", port "', port, '", user "', username, '", password "', password, '", database "', tgt_db_name, '"')
) a 
FROM 
  mysql.spider_tables 
WHERE 
  db_name = 'backend' and table_name like 'sbtest#P#pt%';

SELECT * FROM res; 
EOF

Или, если вы используете SERVER:

SELECT spider_direct_sql( 
  'SELECT * FROM sbtest s  WHERE s.id IN(10,12,13)',
  'res',
  concat('server "', server, '"')
) a
  FROM mysql.spider_tables
  WHERE db_name = 'backend' and table_name like 'sbtest#P#pt%' ;

По умолчанию для spider_bg_direct_sql используется одновременный доступ ко всем бэкендам. Если у вас есть несколько партиций, хранящихся внутри одного бэкенда, вы все равно можете увеличить параллелизм, влияющий на различные каналы каждой партиции.

CREATE TEMPORARY TABLE res
(
  id int(10) unsigned NOT NULL , 
  col_microsec DATETIME(6) default NOW(8),
  db varchar(20)
) ENGINE=MEMORY;

SELECT spider_bg_direct_sql( 'SELECT count(*) ,min(NOW(6)),min(DATABASE())) FROM sbtest',   'res',  concat('srv "', server,'" cch ',@rn:=@rn+1  ) ) a  FROM    mysql.spider_tables,(SELECT @rn:=1) t2  WHERE    db_name = 'bsbackend' and table_name like 'sbtest#P#pt%';

Сокет прямого обработчика

Проверьте, что Сокет обработчика работает на узлах бэкенда

:~# backend2 -e "show variables like 'handler%'"
+-------------------------------+---------------+
| Variable_name                 | Value         |
+-------------------------------+---------------+
| handlersocket_accept_balance  | 0             |
| handlersocket_address         | 192.168.0.201 |
| handlersocket_backlog         | 32768         |
| handlersocket_epoll           | 1             |
| handlersocket_plain_secret    |               |
| handlersocket_plain_secret_wr |               |
| handlersocket_port            | 20500         |
| handlersocket_port_wr         | 20501         |
| handlersocket_rcvbuf          | 0             |
| handlersocket_readsize        | 0             |
| handlersocket_sndbuf          | 0             |
| handlersocket_threads         | 4            |
| handlersocket_threads_wr      | 1             |
| handlersocket_timeout         | 300           |
| handlersocket_verbose         | 10            |
| handlersocket_wrlock_timeout  | 12            |
+-------------------------------+---------------+
spider1 backend << EOF 
CREATE TEMPORARY TABLE res
(
  id int(10) unsigned NOT NULL,
  k int(10) unsigned NOT NULL DEFAULT '0',
  c char(120) NOT NULL DEFAULT '',
  pad char(60) NOT NULL DEFAULT ''
) ENGINE=MEMORY;
 
SELECT spider_direct_sql('1\t=\t1\t2\t100000\t0','res', 'host "192.168.0.202", table "sbtest", database "test", port "20500", access_mode "1"');

Копирование таблиц между узлами

Функция UDF spider_copy_tables доступна для копирования данных таблицы из идентификатора источника ссылки в список идентификаторов назначения ссылки без остановки вашей службы для копирования

spider_copy_tables(Spider table name, source link ID, destination link ID list[, parameters])

  • Returns 1 если копирование данных выполнено успешно.
  • Returns 0 если копирование данных завершилось ошибкой.

Если таблица Spider разбита на разделы, необходимо установить «Имя таблицы Spider» с именем части, например, «table_name#P#part_name».

Вы можете проверить имя таблицы и идентификатор ссылки с именем части, используя следующий SQL:

SELECT table_name FROM mysql.spider_tables;

Перераспределение

Общий журнал

Для захвата всех запросов, отправленных на удаленные бэкенды на Spider Node:

SET GLOBAL general_log=ON; 
SET GLOBAL spider_general_log=ON;
SET GLOBAL spider_log_result_errors=1;
SET GLOBAL spider_log_result_error_with_sql=3;

Компиляция в отладочном режиме

Компилируйте MariaDB в отладочном режиме

#cmake -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Debug  -DWITH_FAST_MUTEXES=ON  -DWITH_VALGRIND=ON

Запустите MariaDB следующим образом, чтобы иметь подробный файл трассировки команд

mysqld --debug=S:T:t:r:p:n:L:i:F:f:D:d,info,error,query,qcache,my,exit,general,where:O,/tmp/mysqld.trace 

Или с Valgrind, чтобы получить полную трассировку стека при сбое.

valgrind /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/inetbase/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/inetbase/mysql/lucifer.err --open-files-limit=65000 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306

Сообщите об ошибке в MariaDB JIRA (см. Отчет об ошибках) или в службу поддержки MariaDB Corporation.

Компиляция в статическом режиме

Доступно начиная с версии 3.1.14

Чтобы активировать Spider в качестве статического плагина, измените «MODULE_ONLY» на «MANDATORY» в файле storage/spider/CMakeList.txt перед компиляцией.

Обратите внимание, что функции UDF Spider не будут работать с такими настройками.

Переменные состояния

Было введено несколько новых переменных состояния:

  • Spider_direct_aggregate
  • Spider_direct_order_limit
  • Spider_mon_table_cache_version
  • Spider_mon_table_cache_version_req

Таблицы схемы информации

  • Установлена новая таблица схемы информации Information Schema - SPIDER_ALLOC_MEM.
+-------------------+---------------------+------+-----+---------+-------+
| Field             | Type                | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+-------+
| ID                | int(10) unsigned    | NO   |     | 0       |       |
| FUNC_NAME         | varchar(64)         | YES  |     | NULL    |       |
| FILE_NAME         | varchar(64)         | YES  |     | NULL    |       |
| LINE_NO           | int(10) unsigned    | YES  |     | NULL    |       |
| TOTAL_ALLOC_MEM   | bigint(20) unsigned | YES  |     | NULL    |       |
| CURRENT_ALLOC_MEM | bigint(20)          | YES  |     | NULL    |       |
| ALLOC_MEM_COUNT   | bigint(20) unsigned | YES  |     | NULL    |       |
| FREE_MEM_COUNT    | bigint(20) unsigned | YES  |     | NULL    |       |
+-------------------+---------------------+------+-----+---------+-------+

Схема производительности

Схема производительности обычно используется для устранения неполадок, которые занимают время внутри вашей рабочей нагрузки. Схема производительности не должна активироваться для серверов, которые постоянно испытывают большую нагрузку, но в большинстве случаев приемлемо потерять 5-20% дополнительного ЦП для отслеживания выполнения внутренних процессов сервера.

Чтобы активировать схему производительности, используйте системную переменную performance_schema и добавьте следующее в раздел сервера файла конфигурации MariaDB.

performance_schema=on

Активируйте зонды Spider для мониторинга.

UPDATE performance_schema.setup_instruments SET 
  ENABLED='YES', TIMED='yes' WHERE NAME LIKE '%spider%';

Выполните ваши запросы...

И проверьте показатели производительности. Удалите определенные метрики Spider, чтобы получить более общее представление.

SELECT * FROM performance_schema.events_waits_summary_global_by_event_name 
  WHERE COUNT_STAR<>0 AND EVENT_NAME LIKE '%spider%' 
  ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/spider-cluster-management/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API