Mycat Tutorial 5: Реализация подставной базы данных и подсула

база данных


   В этой статье мы познакомимся с работой MyCat с подтаблицей подбазы данных.

Подбиблиотека и подтаблица

1. Введение в правила шардинга

существуетrule.xmlРазличные правила сегментирования, поддерживаемые myCat, определены в файлах .

  1. Modulo mod-long
  2. Естественный ежемесячный шардинг
  3. Шардинг по дате (дни) шардинг по дате
  4. Разделить шардинг по часам по месяцам
  5. Соглашение о диапазоне, заранее спланируйте, к какому сегменту относится диапазон полей сегмента, автоматическое сегментирование
  6. Разделение диапазона по модулю
  7. Ограничения диапазона по модулю сегментирования по шаблону
  8. Перечисление шардинга
  9. Фиксированный алгоритм хеша Shard
  10. Перехватить цифровой хеш-анализ Sharding-By-Stringhash
  11. Согласованный хэш
  12. хэш диапазона дат rangeDateHash
  13. Перехватывать числа для ограничения диапазона хэшей по модулю сегментации по шаблону префикса
  14. Специфично для приложения, приложение решает, к какому сегменту направить маршрут во время выполнения. сегментирование по подстроке
  15. Горячее и холодное сегментирование данных по дате
  16. Алгоритм дроби состояний
  17. Алгоритм шардинга crc32slot

注意:

  1. Рекомендуется настроить столбец первичного ключа в id
  2. Все tableRules можно использовать только один раз. Если вам нужно настроить одно и то же правило сегментирования для нескольких таблиц, вам нужно переопределить правило здесь.
  3. Как только количество осколков в алгоритме 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>

注意:

  1. Поскольку библиотек три, добавляются триdataNode
  2. Используемые правила распределенияcrc32slot
  3. А ридер, поставляемый отдельно от мастера, не двигался, так что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, а также разделению интерфейсной и серверной частей.

在这里插入图片描述