Обзор хранилища Spider
О хранилище
Хранилище Spider — это хранилище с встроенными функциями фрагментации. Оно поддерживает разбиение и xa-транзакции, и позволяет обращаться к таблицам разных экземпляров MariaDB, как будто они находятся на одном экземпляре. Оно относится к одному из возможных способов реализации ISO/IEC 9075-9:2008 SQL/MED.
При создании таблицы с хранилищем Spider, таблица связывается с таблицей на удаленном сервере. Удаленная таблица может быть любого типа хранилища. Связь таблиц осуществляется путем установления соединения между локальным сервером MariaDB и удаленным сервером MariaDB. Это соединение используется для всех таблиц, которые участвуют в одной транзакции.
Версии Spider в MariaDB
| Версия Spider | Введена | Состояние |
|---|---|---|
| Spider 3.3.15 | MariaDB 10.5.7, MariaDB 10.4.6 | Стабильная |
| Spider 3.3.15 | MariaDB 10.5.4 | Gamma |
| Spider 3.3.14 | MariaDB 10.4.3, MariaDB 10.3.13 | Стабильная |
| Spider 3.3.13 | MariaDB 10.3.7 | Стабильная |
| Spider 3.3.13 | MariaDB 10.3.3 | Gamma |
| Spider 3.2.37 | MariaDB 10.1.10, MariaDB 10.0.23 | Gamma |
| Spider 3.2.21 | MariaDB 10.1.5, MariaDB 10.0.18 | Gamma |
| Spider 3.2.18 | MariaDB 10.0.17 | Gamma |
| Spider 3.2.11 | MariaDB 10.0.14 | Gamma |
| Spider 3.2.4 | MariaDB 10.0.12 | Gamma |
| Spider 3.2 | MariaDB 10.0.11 | Gamma |
| Spider 3.0 | MariaDB 10.0.4 | Beta |
Некоторые переменные сервера для настройки при использовании Spider
Если вы используете Spider с репликацией, вы можете расширить список ошибок транзакций, которые следует повторно пытаться обработать, установив slave_transaction_retry_errors на следующие значения, чтобы избежать проблем с сетью:
- 1158: Получена ошибка при чтении пакетов связи
- 1159: Получен тайм-аут при чтении пакетов связи
- 1160: Получена ошибка при записи пакетов связи
- 1161: Получен тайм-аут при записи пакетов связи
- 1429: Невозможно подключиться к внешнему источнику данных
- 2013: Потеряно соединение с сервером MySQL во время запроса
- 12701: Удаленный сервер MySQL отключился
Сделайте это следующим образом в файле my.cnf:
slave_transaction_retry_errors="1158,1159,1160,1161,1429,2013,12701"
Начиная с MariaDB 10.4.5, вышеперечисленные настройки включены по умолчанию.
Использование
Базовое использование
Для создания таблицы в формате Spider хранилища используются предложения COMMENT и/или CONNECTION в инструкции CREATE TABLE для передачи информации о подключении к удаленному серверу.
Например, следующая таблица существует на удаленном сервере (в этом примере удаленный узел был создан с помощью инструмента MySQL Sandbox, простого способа тестирования с несколькими установками):
node1 >CREATE TABLE s( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(10), PRIMARY KEY(id));
На локальном сервере таблица Spider может быть создана следующим образом:
CREATE TABLE s( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(10), PRIMARY KEY(id) ) ENGINE=SPIDER COMMENT 'host "127.0.0.1", user "msandbox", password "msandbox", port "8607"';
Теперь записи можно вставлять на локальном сервере, и они будут храниться на удаленном сервере:
INSERT INTO s(code) VALUES ('a');
node1 > SELECT * FROM s;
+----+------+
| id | code |
+----+------+
| 1 | a |
+----+------+
Альтернативно указанию информации о узле данных в COMMENT, определённая информация (сервер, база данных, таблица) также может быть указана с помощью параметров таблицы, например:
CREATE SERVER srv FOREIGN DATA WRAPPER mysql OPTIONS( HOST '127.0.0.1', USER 'msandbox', PASSWORD 'msandbox', PORT 8607); CREATE TABLE s( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(10), PRIMARY KEY(id) ) ENGINE=SPIDER REMOTE_SERVER="srv" REMOTE_DATABASE="db" REMOTE_TABLE="s";
Дополнительные примеры
Подготовка таблицы с 10 млн. записей с помощью утилиты sysbench
/usr/local/skysql/sysbench/bin/sysbench --test=oltp --db-driver=mysql --mysql-table-engine=innodb --mysql-user=skysql --mysql-password=skyvodka --mysql-host=192.168.0.202 --mysql-port=5054 --oltp-table-size=10000000 --mysql-db=test prepare
Выполните первый чтение-только тест, чтобы проверить производительность начального одиночного узла.
/usr/local/skysql/sysbench/bin/sysbench --test=oltp --db-driver=mysql --mysql-table-engine=innodb --mysql-user=skysql --mysql-password=skyvodka --mysql-host=192.168.0.202 --mysql-port=5054 --mysql-db=test --oltp-table-size=10000000 --num-threads=4 --max-requests=100000 --oltp-read-only=on run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 4
Doing OLTP test.
Running mixed OLTP test
Doing read-only test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 100000
Threads started!
Done.
OLTP test statistics:
queries performed:
read: 1400196
write: 0
other: 200028
total: 1600224
transactions: 100014 (1095.83 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 1400196 (15341.58 per sec.)
other operations: 200028 (2191.65 per sec.)
Test execution summary:
total time: 91.2681s
total number of events: 100014
total time taken by event execution: 364.3693
per-request statistics:
min: 1.85ms
avg: 3.64ms
max: 30.70ms
approx. 95 percentile: 4.66ms
Threads fairness:
events (avg/stddev): 25003.5000/84.78
execution time (avg/stddev): 91.0923/0.00
Определите простой способ доступа к узлам из клиента MariaDB или MySQL.
alias backend1='/usr/local/skysql/mysql-client/bin/mysql --user=skysql --password=skyvodka --host=192.168.0.202 --port=5054' alias backend2='/usr/local/skysql/mysql-client/bin/mysql --user=skysql --password=skyvodka --host=192.168.0.203 --port=5054' alias spider1='/usr/local/skysql/mysql-client/bin/mysql --user=skysql --password=skyvodka --host=192.168.0.201 --port=5054'
Создайте пустые таблицы для хранения данных и повторите для всех доступных узлов бэкенда.
backend1 << EOF CREATE DATABASE backend; CREATE TABLE backend.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; EOF backend2 << EOF CREATE DATABASE backend; CREATE TABLE backend.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; EOF
Настройка федерации
spider1 << EOF CREATE SERVER backend FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'test', USER 'skysql', PASSWORD 'skyvodka', PORT 5054 ); CREATE TABLE test.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=spider COMMENT='wrapper "mysql",srv "backend"'; SELECT * FROM test.sbtest LIMIT 10; EOF
Без пула подключений или пула потоков MariaDB, HaProxy и Spider защищали переполнение сокета tcp без специальной настройки TCP. На самом деле, с хорошо настроенной стековой частью TCP или пулом потоков кривая не должна так резко падать до 0. Обратитесь к разделу Пул потоков MariaDB для изучения этой функции.
Настройка фрагментации
Создайте таблицу spider на узле Spider
#spider1 << EOF CREATE SERVER backend1 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'backend', USER 'skysql', PASSWORD 'skyvodka', PORT 5054 ); CREATE SERVER backend2 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'backend', USER 'skysql', PASSWORD 'skyvodka', PORT 5054 ); CREATE DATABASE IF NOT EXISTS backend; CREATE TABLE backend.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"' PARTITION BY KEY (id) ( PARTITION pt1 COMMENT = 'srv "backend1"', PARTITION pt2 COMMENT = 'srv "backend2"' ) ; EOF
Скопируйте данные из исходной таблицы sysbench в таблицу spider
#/usr/local/skysql/mariadb/bin/mysqldump --user=skysql --password=skyvodka --host=192.168.0.202 --port=5054 --no-create-info test sbtest | spider1 backend #backend2 -e"select count(*) from backend.sbtest;" +----------+ | count(*) | +----------+ | 3793316 | +----------+ #backend1 -e"select count(*) from backend.sbtest;" +----------+ | count(*) | +----------+ | 6206684 | +----------+
Мы наблюдаем распространённую проблему с разбиением — неравномерное распределение данных между бэкендами, основанное на алгоритме хеширования ключа разбиения.
Повторите тест с меньшим количеством запросов
#/usr/local/skysql/sysbench/bin/sysbench --test=oltp --db-driver=mysql --mysql-table-engine=innodb --mysql-user=skysql --mysql-password=skyvodka --mysql-host=192.168.0.201 --mysql-port=5054 --mysql-db=backend --mysql-engine-trx=yes --oltp-table-size=10000000 --num-threads=4 --max-requests=100 --oltp-read-only=on run
OLTP test statistics:
queries performed:
read: 1414
write: 0
other: 202
total: 1616
transactions: 101 (22.95 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 1414 (321.30 per sec.)
other operations: 202 (45.90 per sec.)
Test execution summary:
total time: 4.4009s
total number of events: 101
total time taken by event execution: 17.2960
per-request statistics:
min: 114.48ms
avg: 171.25ms
max: 200.98ms
approx. 95 percentile: 195.12ms
Threads fairness:
events (avg/stddev): 25.2500/0.43
execution time (avg/stddev): 4.3240/0.04
Время отклика уменьшается до 0,04. Это ожидаемо, так как задержка запроса увеличивается из-за нескольких сетевых обменов, и ещё не реализован спуск условия. Sysbench выполняет много диапазонных запросов. Пока что просто учтите, что этот диапазонный запрос может быть плохо оптимизированным запросом.
Нам нужно увеличить конкурентность для достижения лучшей пропускной способности.
Настройка фоновых задач
В MariaDB нет фоновых поисков. Они не будут доступны до MariaDB 10.2, но следующее определение таблицы в основном позволяет улучшить производительность одного сложного плана запроса с фоновым поиском, который можно найти в ветке upstream spiral MariaDB.
У нас 4 ядра на каждый бэкенд и 2 бэкенда.
На backend1
#backend1 << EOF CREATE DATABASE bsbackend1; CREATE DATABASE bsbackend2; CREATE DATABASE bsbackend3; CREATE DATABASE bsbackend4; CREATE TABLE bsbackend1.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend2.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend3.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend4.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; EOF
На backend2
#backend2 << EOF CREATE DATABASE bsbackend5; CREATE DATABASE bsbackend6; CREATE DATABASE bsbackend7; CREATE DATABASE bsbackend8; CREATE TABLE bsbackend5.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend6.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend7.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; CREATE TABLE bsbackend8.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=InnoDB; EOF
На Spider Node
#spider2 << EOF CREATE SERVER bsbackend1 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'bsbackend1',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend2 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'bsbackend2',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend3 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'bsbackend3',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend4 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'bsbackend4',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend5 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'bsbackend5',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend6 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'bsbackend6',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend7 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'bsbackend7',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE SERVER bsbackend8 FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'bsbackend8',USER 'skysql', PASSWORD 'skyvodka',PORT 5054); CREATE DATABASE IF NOT EXISTS bsbackend; CREATE TABLE bsbackend.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"' PARTITION BY KEY (id) ( PARTITION pt1 COMMENT = 'srv "bsbackend1"', PARTITION pt2 COMMENT = 'srv "bsbackend2"', PARTITION pt3 COMMENT = 'srv "bsbackend3"', PARTITION pt4 COMMENT = 'srv "bsbackend4"', PARTITION pt5 COMMENT = 'srv "bsbackend5"', PARTITION pt6 COMMENT = 'srv "bsbackend6"', PARTITION pt7 COMMENT = 'srv "bsbackend7"', PARTITION pt8 COMMENT = 'srv "bsbackend8"' ) ; EOF INSERT INTO bsbackend.sbtest SELECT * FROM backend.sbtest;
Теперь протестируйте следующий запрос:
select count(*) from sbtest; +----------+ | count(*) | +----------+ | 10000001 | +----------+ 1 row in set (8,38 sec) set spider_casual_read=1; set spider_bgs_mode=2; select count(*) from sbtest; +----------+ | count(*) | +----------+ | 10000001 | +----------+ 1 row in set (4,25 sec) mysql> select sum(k) from sbtest; +--------+ | sum(k) | +--------+ | 0 | +--------+ 1 row in set (5,67 sec) mysql> set spider_casual_read=0; mysql> select sum(k) from sbtest; +--------+ | sum(k) | +--------+ | 0 | +--------+ 1 row in set (12,56 sec)
Настройка высокой доступности
#backend1 -e "CREATE DATABASE backend_rpl" #backend2 -e "CREATE DATABASE backend_rpl" #/usr/local/skysql/mariadb/bin/mysqldump --user=skysql --password=skyvodka --host=192.168.0.202 --port=5054 backend sbtest | backend1 backend_rpl #/usr/local/skysql/mariadb/bin/mysqldump --user=skysql --password=skyvodka --host=192.168.0.203 --port=5054 backend sbtest | backend2 backend_rpl #spider1 << EOF DROP TABLE backend.sbtest; CREATE SERVER backend1_rpl FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.202', DATABASE 'backend_rpl', USER 'skysql', PASSWORD 'skyvodka', PORT 5054 ); CREATE SERVER backend2_rpl FOREIGN DATA WRAPPER mysql OPTIONS( HOST '192.168.0.203', DATABASE 'backend_rpl', USER 'skysql', PASSWORD 'skyvodka', PORT 5054 ); CREATE TABLE backend.sbtest ( id int(10) unsigned NOT NULL AUTO_INCREMENT, k int(10) unsigned NOT NULL DEFAULT '0', c char(120) NOT NULL DEFAULT '', pad char(60) NOT NULL DEFAULT '', PRIMARY KEY (id), KEY k (k) ) ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"' PARTITION BY KEY (id) ( PARTITION pt1 COMMENT = 'srv "backend1 backend2_rpl"', PARTITION pt2 COMMENT = 'srv "backend2 backend1_rpl"' ) ; INSERT INTO backend.sbtest select 10000001, 0, '' ,'replicas test'; EOF #backend1 -e "SELECT * FROM backend.sbtest WHERE id=10000001"; +----------+---+---+---------------+ | id | k | c | pad | +----------+---+---+---------------+ | 10000001 | 0 | | replicas test | +----------+---+---+---------------+ # backend2 -e "SELECT * FROM backend.sbtest where id=10000001"; # backend2 -e "SELECT * FROM backend_rpl.sbtest where id=10000001"; +----------+---+---+---------------+ | id | k | c | pad | +----------+---+---+---------------+ | 10000001 | 0 | | replicas test | +----------+---+---+---------------+
Что происходит, если мы останавливаем один бэкенд?
#spider1 -e "SELECT * FROM backend.sbtest where id=10000001"; ERROR 1429 (HY000) at line 1: Unable to connect to foreign data source: backend1
Давайте исправим это с помощью мониторинга Spider. Обратите внимание, что msi — это список узлов Spider, участвующих в кворуме, с переменной @@server_id.
#spider1 << EOF
DROP TABLE backend.sbtest;
CREATE TABLE backend.sbtest
(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
k int(10) unsigned NOT NULL DEFAULT '0',
c char(120) NOT NULL DEFAULT '',
pad char(60) NOT NULL DEFAULT '',
PRIMARY KEY (id),
KEY k (k)
) ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"'
PARTITION BY KEY (id)
(
PARTITION pt1 COMMENT = 'srv "backend1 backend2_rpl", mbk "2", mkd "2", msi "5054", link_status "0 0"',
PARTITION pt2 COMMENT = 'srv "backend2 backend1_rpl", mbk "2", mkd "2", msi "5054", link_status "0 0" '
) ;
CREATE SERVER mon
FOREIGN DATA WRAPPER mysql
OPTIONS(
HOST '192.168.0.201’,
DATABASE 'backend',
USER 'skysql',
PASSWORD 'skyvodka',
PORT 5054
);
INSERT INTO `mysql`.`spider_link_mon_servers` VALUES
('%','%','%',5054,'mon',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL);
SELECT spider_flush_table_mon_cache();
EOF
Мониторинг должен быть настроен между узлами Spider, участвующими в кластере. У нас только один Spider Node и spider_link_mon_servers представляют взаимосвязь всех узлов Spider в нашей настройке.
Эта простая настройка не обеспечивает HA в случае, если Spider Node недоступен. В производственной среде количество Spider Nodes в таблице spider_link_mon_servers должно быть не менее 3 для достижения консенсуса большинства.
#spider1 -e "SELECT * FROM backend.sbtest WHERE id=10000001" +----------+---+---+---------------+ | id | k | c | pad | +----------+---+---+---------------+ | 10000001 | 0 | | replicas test | +----------+---+---+---------------+
Проверка состояния узлов:
#spider1 -e "SELECT db_name, table_name,server FROM mysql.spider_tables WHERE link_status=3" +---------+--------------+----------+ | db_name | table_name | server | +---------+--------------+----------+ | backend | sbtest#P#pt1 | backend1 | +---------+--------------+----------+
Никаких изменений в кластере не было, поэтому давайте создадим расхождение:
# spider1 -e "INSERT INTO backend.sbtest select 10000003, 0, '' ,'replicas test';" # backend1 -e "SELECT * FROM backend.sbtest WHERE id=10000003" # backend2 -e "SELECT * FROM backend_rpl.sbtest WHERE id=10000003" +----------+---+---+---------------+ | id | k | c | pad | +----------+---+---+---------------+ | 10000003 | 0 | | replicas test | +----------+---+---+---------------+
Возвращение выбывшего бэкенда backend1 в кластер:
#spider1 << EOF
ALTER TABLE backend.sbtest
ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"'
PARTITION BY KEY (id)
(
PARTITION pt1 COMMENT = 'srv "backend1 backend2_rpl" mbk "2", mkd "2", msi "5054", link_status "2 0"',
PARTITION pt2 COMMENT = 'srv "backend2 backend1_rpl" mbk "2", mkd "2", msi "5054", link_status "0 2" '
) ;
select spider_copy_tables('backend.sbtest#P#pt1','0','1');
select spider_copy_tables('backend.sbtest#P#pt2','1','0');
ALTER TABLE backend.sbtest
ENGINE=spider COMMENT='wrapper "mysql", table "sbtest"'
PARTITION BY KEY (id)
(
PARTITION pt1 COMMENT = 'srv "backend1 backend2_rpl" mbk "2", mkd "2", msi "5054", link_status "1 0"',
PARTITION pt2 COMMENT = 'srv "backend2 backend1_rpl" mbk "2", mkd "2", msi "5054", link_status "0 1" '
) ;
EOF
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/spider-storage-engine-overview/