В этой статье мы познакомимся с работой MyCat с подтаблицей подбазы данных.
Подбиблиотека и подтаблица
1. Введение в правила шардинга
существуетrule.xml
Различные правила сегментирования, поддерживаемые myCat, определены в файлах .
- Modulo mod-long
- Естественный ежемесячный шардинг
- Шардинг по дате (дни) шардинг по дате
- Разделить шардинг по часам по месяцам
- Соглашение о диапазоне, заранее спланируйте, к какому сегменту относится диапазон полей сегмента, автоматическое сегментирование
- Разделение диапазона по модулю
- Ограничения диапазона по модулю сегментирования по шаблону
- Перечисление шардинга
- Фиксированный алгоритм хеша Shard
- Перехватить цифровой хеш-анализ Sharding-By-Stringhash
- Согласованный хэш
- хэш диапазона дат rangeDateHash
- Перехватывать числа для ограничения диапазона хэшей по модулю сегментации по шаблону префикса
- Специфично для приложения, приложение решает, к какому сегменту направить маршрут во время выполнения. сегментирование по подстроке
- Горячее и холодное сегментирование данных по дате
- Алгоритм дроби состояний
- Алгоритм шардинга crc32slot
注意
:
- Рекомендуется настроить столбец первичного ключа в id
- Все tableRules можно использовать только один раз. Если вам нужно настроить одно и то же правило сегментирования для нескольких таблиц, вам нужно переопределить правило здесь.
- Как только количество осколков в алгоритме crc32Slot задано, MyCat сохранит количество осколков и диапазон значений slor в файл. Это не вступит в силу, когда количество осколков будет изменено во второй раз, и файл нужно будет удалить. Расположение файла находится в каталоге ruledata в каталоге conf.
Во-вторых, конфигурация подбиблиотеки
2.1 Создайте 3 базы данных
существуетmaster
Создайте 3 базы данных соответственно вdemo1
,demo2
,demo3
, так как отношения ведущий-ведомый будут синхронизированы с подчиненной библиотекой.
create database demo1 default character set utf8;
create database demo2 default character set utf8;
create database demo3 default character set utf8;
2.2 конфигурация schema.xml
Измените информацию в файле schema.xml следующим образом:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_user" dataNode="dn1,dn2,dn3" rule="crc32slot" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="demo1" />
<dataNode name="dn2" dataHost="localhost1" database="demo2" />
<dataNode name="dn3" dataHost="localhost1" database="demo3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.88.180:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
注意
:
- Поскольку библиотек три, добавляются три
dataNode
- Используемые правила распределения
crc32slot
- А ридер, поставляемый отдельно от мастера, не двигался, так что
writeHost
иreadHost
конфигурация не изменилась
2.3 Измените файл rule.xml
Поскольку использованиеcrc32slot
алгоритм, а баз данных 3, поэтому нужно изменить конфигурацию в rule.xml
При этом нам нужно удалитьruledata
Правила файлов в каталоге или изменить3
не будет работать
перезапустите службу mycat
Посмотреть правила назначения
2.3 Создайте таблицу t_user в mycat
Сначала удалите созданный оригиналt_user
таблица, затем созданная через mycatt_user
Указывает, что через mycat будет создан еще один_slot
поле.
CREATE TABLE t_user (
`id` INT,
`name` VARCHAR (30),
`age` INT,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
3. Тест подбиблиотеки
Вставьте данные в клиент mycat, а затем перейдите в соответствующую физическую библиотеку, чтобы запросить конкретную ситуацию.
insert into t_user(id,name,age)values(1,'HG-93',14)
注意
: Синтаксис оператора вставки должен быть полным, не ленитесь опускать поля, особенноid
Самостоятельный рост! ! !
Данные хранятся в структуре таблицы соответствующих данных в соответствии с установленными нами правилами.
Затем давайте взглянем на операцию запроса и посмотрим, все ли данные можно запросить через mycat.
Обратите внимание на публичный аккаунт WeChat【мечта программиста], уделяя особое внимание технологиям с полным стеком, таким как Java, SpringBoot, SpringCloud, микросервисам, Docker, а также разделению интерфейсной и серверной частей.