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

OSCHINA-MIRROR/MycatOne-Mycat-Server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Mycat1

Официальный сайт: http://mycatone.top

gitee github

Для отправки кода, можно создать issue, написать о чётких изменениях в коде или связаться по QQ: 1019100252.

Mycat1.6 авторитетное руководство yuque pdf

Конфигурация соединения с клиентом gitee github

Stargazers over time

Группа добровольцев Mycat: 332702697, 106088787

GitHub issues GitHub forks GitHub stars MyCAT

MyCAT — это программное обеспечение с открытым исходным кодом, ориентированное на предприятия и представляющее собой «большой кластер баз данных». MyCAT является принудительной базой данных, которая заменяет MySQL и поддерживает транзакции и ACID. Рассматриваемый как кластер MySQL для корпоративных баз данных, MyCAT может заменить дорогостоящий кластер Oracle. MyCAT также представляет собой новый тип базы данных, который похож на SQL Server, интегрированный с технологией кэширования памяти, технологией NoSQL и большими данными HDFS. И как новый современный корпоративный продукт базы данных, MyCAT сочетает в себе традиционную базу данных и новое распределённое хранилище данных. Одним словом, MyCAT — это новое промежуточное ПО для баз данных.

Цель Mycat — плавно перенести текущую автономную базу данных и приложения в облако с минимальными затратами и решить проблему узких мест, вызванную быстрым ростом объёма хранения данных и масштабов бизнеса.

1 января 2020 года была объединена PR, оптимизирован алгоритм разделения PartionByLong, проблема неравномерного распределения данных, поэтому этот алгоритм разделения не совместим с предыдущей версией PartionByLong после версии 1.675.

В MyCAT1.6 не поддерживается один SQL, содержащий несколько операторов.

Проблемы MyCAT 1.6:

  • не рекомендуется использовать пакетную обработку, много операторов, внешнее объединение;
  • глобальный идентификатор последовательности:
INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");

Обновление Druid до версии 1.1.10 поддерживается независимо в ветке gitee github.

Начало работы gitee github.

Попробуйте MyCAT gitee github.

Особенности

  • Поддержка стандарта SQL 92.
  • Поддержка кластера MySQL, используется в качестве прокси.
  • Поддерживает соединение JDBC с ORACLE, DB2, SQL Server, имитируя обычное соединение с сервером MySQL.
  • Поддерживает кластеры MySQL, Percona или MariaDB, обеспечивая высокую доступность кластеров фрагментации данных.
  • Поддерживает автоматическое переключение при отказе и высокую доступность.
  • Поддерживает разделение чтения и записи, двойной мастер с несколькими ведомыми устройствами, одиночный мастер с несколькими мастерами модели MySQL.
  • Поддерживает глобальную таблицу, автоматически фрагментирует данные на несколько узлов для эффективного реляционного запроса.
  • Поддерживает уникальную стратегию фрагментации, основанную на ER-отношении, для эффективного реляционного запроса.
  • Поддерживает несколько платформ, простое развёртывание и реализацию.

Преимущества

  • Основан на проекте с открытым исходным кодом Alibaba Cobar github,gitee, чья стабильность, надёжность, отличная архитектура и производительность, а также множество зрелых вариантов использования делают MyCAT хорошей отправной точкой. Плечи гигантов MyCAT позволяют ему идти дальше.

  • Активно используя лучшие проекты с открытым исходным кодом и инновационные идеи, которые являются частью ДНК Mycat, MyCAT опережает другие текущие аналогичные проекты с открытым исходным кодом, даже некоторые коммерческие продукты.

  • MyCAT опирается на сильную техническую команду, участники которой имеют опыт работы более пяти лет, включая некоторых старших инженеров-программистов, архитекторов, администраторов баз данных и т. д. Отличная техническая команда обеспечивает качество продукта Mycat.

  • MyCAT не зависит от какой-либо коммерческой компании. В отличие от некоторых проектов с открытым исходным кодом, важные функции которых заключены в их коммерческих продуктах и делают проекты с открытым исходным кодом похожими на украшение.

План развития

  • На основе поддержки MySQL MyCAT добавляет поддержку других коммерческих баз данных с открытым исходным кодом, включая встроенную поддержку PostgreSQL, FireBird и других баз данных с открытым исходным кодом, а также косвенную поддержку через JDBC других баз данных, отличных от открытого исходного кода, таких как Oracle, DB2, SQL Server и др.
  • Более интеллектуальные саморегулирующиеся свойства, такие как автоматический статистический анализ SQL, автоматическое создание и настройка индексов. Основываясь на частоте чтения и записи, MyCAT автоматически оптимизирует стратегии кэширования и резервного копирования.
  • Достижение более комплексного мониторинга и управления.
  • Интеграция с HDFS, предоставление команд SQL, загрузка баз данных в HDFS для быстрого анализа.
  • Интегрированные отличные инструменты отчётности с открытым исходным кодом позволяют MyCAT выполнять анализ данных.

Загрузка

В проекте Mycat-download на GitHub по адресу Mycat-download доступны скомпилированные двоичные пакеты установки.

Документация

Документы доступны в проекте Mycat-doc на GitHub по адресам:

gitee

github.

Простой демонстрационный пример Mycat, см. авторитетное руководство Mycat.

История Mycat

В 2013 году Али Кобар обнаружил в процессе использования некоторые серьёзные проблемы и ограничения, и после первого улучшения, инициированного Mycat, появилась первая улучшенная версия — Mycat. После того как Mycat стал открытым исходным кодом, некоторые пользователи Cobar участвовали в разработке Mycat, и в конечном итоге Mycat превратился в сообщество открытого исходного кода, поддерживаемое многими компаниями с сильными архитекторами и опытными разработчиками.

В 2014 году Mycat впервые был представлен на конференции «Архитектор Китая» в Шанхае, и всё больше людей присоединялись к нему, после чего всё больше проектов использовали Mycat.

В мае 2015 года было опубликовано электронное издание первого официального авторитетного руководства «Руководство Mycat», которое было переиздано более 500 раз и стало первым в своём роде проектом с открытым исходным кодом.

По состоянию на октябрь 2015 года в проекте Mycat было 16 коммиттеров.

К ноябрю 2015 года более 300 проектов использовали Mycat, охватывая различные области и компании, такие как банки, телекоммуникации, электронная коммерция, логистика, мобильные приложения и O2O.

К декабрю 2015 года более 4000 пользователей присоединились к группе, проводили исследования, обсуждения, тестирование или использовали Mycat.

Mycat основан на открытом исходном коде Cobar, мы полностью переработали код Cobar, использовали NIO для перестройки сетевого модуля и оптимизировали ядро буфера, усилили агрегацию, соединение и другие основные функции, одновременно совместив с большинством баз данных, чтобы стать универсальным промежуточным программным обеспечением базы данных. После версии 1.4 Mycat полностью отделился от основного ядра Cobar и объединил управление кластером Mycat, автоматическое расширение и интеллектуальную оптимизацию, став высокопроизводительным промежуточным ПО. Мы стремимся разрабатывать высокопроизводительное промежуточное программное обеспечение для баз данных. Мы никогда не взимаем плату, никогда не закрываем исходный код и постоянно продвигаем развитие сообщества с открытым исходным кодом.

Mycat привлёк и собрал группу опытных инженеров больших данных и облачных вычислений. Развитие Mycat основано на постоянных усилиях добровольцев из сообщества с открытым исходным кодом. Мы благодарим добровольцев сообщества за их усилия, которые сделали Mycat сильнее. В то же время мы также приветствуем больше добровольцев из сообщества, особенно компании, которые могут присоединиться к разработке Mycat и вместе способствовать развитию сообщества, предоставляя лучшее промежуточное ПО с открытым исходным кодом для сообщества.

Хотя Mycat ещё недостаточно силён, у него есть много недостатков, и мы приветствуем постоянные усилия добровольцев сообщества по оптимизации и улучшению.

Ключевые особенности

Поддержка стандарта SQL92.

Соблюдение оригинального протокола MySQL, кросс-языковой, кросс-платформенный, универсальный прокси-сервер промежуточного программного обеспечения для баз данных.

Автоматическое переключение при отказе на основе пульса, поддержка разделения чтения и записи, поддержка MySQL Master-Slave, а также кластера Galera.

Поддержка кластера Galera для MySQL, Percona Cluster или MariaDB cluster.

Эффективное управление потоками на основе Nio, высокая параллельная обработка.

Поддерживает многораздельную автоматическую маршрутизацию и агрегацию данных, поддерживает sum, count, max и другие общие функции агрегации.

Поддерживает внутреннее объединение одной библиотеки, поддерживает объединение двух таблиц между библиотеками и даже сложное объединение нескольких таблиц на основе caltlet.

Реализует эффективное объединение нескольких таблиц с использованием глобальной таблицы и стратегии фрагментации ER, что обеспечивает эффективную обработку запросов объединения нескольких таблиц.

Поддерживает мультитенантную схему.

Поддерживает распределённые транзакции (слабые xa).

Поддерживает глобальный порядковый номер, решает проблему генерации первичного ключа в распределённой среде.

Богатые правила фрагментации, модульная разработка, простота расширения.

Мощные веб и командная строка для мониторинга.

Может использоваться в качестве универсального прокси для MySQL, а также поддерживает Oracle, DB2, SQL Server, mongodb, jdoodle в режиме заднего конца JDBC.

Поддерживает шифрование паролей.

Поддерживает понижение уровня обслуживания.

Поддерживает белый список IP.

Поддерживает чёрный список SQL и защиту от атак SQL-инъекций.

Поддерживает разделение таблиц (1.6).

Основанный на ZooKeeper кластерный менеджмент, онлайн-обновление, расширение и интеллектуальная оптимизация для обработки больших данных (версия 2.0 в разработке).

Установка и использование Mycat

Скачать:

Конкретная версия для загрузки определяется публикацией, рекомендуется версия 1.67.

Установить:

Просто распакуйте загруженный файл.

Запустить:

Linux:

./mycat start запускает службу.

./mycat stop останавливает службу.

./mycat console запускает службу на переднем плане.

./mycat install добавляет службу в автозапуск системы (временно не реализовано).

./mycat remove удаляет службу из автозапуска системы (временно не реализовано).

./mycat restart перезапускает службу.

./mycat pause приостанавливает службу.

./mycat status проверяет статус запуска службы.

Windows:

Запустите startup_nowrap.bat напрямую, если появится сообщение о выходе, запустите его в командной строке cmd, чтобы проверить причину ошибки.

Настройка памяти:

Перед запуском обычно необходимо изменить параметры конфигурации JVM, открыть файл conf/wrapper.conf, содержимое следующих строк составляет 2G и 2048, вы можете изменить их на 512M или другое значение в соответствии с конфигурацией вашей машины. Следующие настройки полностью совпадают с параметрами JVM, вы можете настроить их в соответствии со своими параметрами JVM.

Дополнительные параметры Java

wrapper.java.additional.1=

wrapper.java.additional.1=-DMYCAT_HOME=.

wrapper.java.additional.2=-server

#wrapper.java.additional.3=-XX:MaxPermSize=64M

wrapper.java.additional.4=-XX:+AggressiveOpts

wrapper.java.additional.5=-XX:MaxDirectMemorySize=100m

wrapper.java.additional.6=-Dcom.sun.management.jmxremote wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984

wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false

wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false

wrapper.java.additional.10=-Xmx100m

wrapper.java.additional.11=-Xms100m

wrapper.java.additional.12=-XX:+UseParNewGC

wrapper.java.additional.13=-XX:+UseConcMarkSweepGC

wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection

wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0

wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70

以下配置作废:

wrapper.java.initmemory=3

wrapper.java.maxmemory=64

Mycat соединение тестирование:

Тестирование mycat с тестированием MySQL полностью совпадает, как соединяется MySQL, так соединяется и mycat.

Рекомендуется сначала использовать командную строку для тестирования:

mysql -uroot -proot -P8066 -h127.0.0.1

Если вы используете инструмент для соединения, 1.4,1.3 в настоящее время некоторые инструменты не могут соединиться, они будут выдавать сообщение «database not selected», рекомендуется использовать более высокую версию, например Navicat. Версия 1.5 уже исправила проблему с подключением некоторых инструментов.

Mycat конфигурация для начинающих

Конфигурация:

— bin — каталог запуска;

— conf — каталог конфигурации, содержащий файлы конфигурации: — server.xml — файл конфигурации параметров сервера и авторизации пользователя Mycat; — schema.xml — файл конфигурации определения логических библиотек и таблиц, а также определения фрагментов; — rule.xml — файл конфигурации правил фрагментации, конкретные параметры правил хранятся в отдельном файле, который также находится в этом каталоге. Файлы конфигурации необходимо перезапустить после изменения MyCAT; — log4j.xml — файлы журналов хранятся в каталоге logs/log, каждый день создаётся новый файл. Конфигурация журнала находится в conf/log4j.xml, уровень вывода можно настроить на debug. На уровне debug будет выводиться больше информации, что удобно для устранения проблем; — autopartition-long.txt, partition-hash-int.txt, sequence_conf.properties, sequence_db_conf.properties — файлы конфигурации идентификаторов фрагментов; — lib — каталог, в котором хранятся собственные jar-файлы MyCAT или зависимые jar-файлы; — logs — каталог журналов MyCAT. Журналы хранятся в каталоге logs/log, каждый день создаётся новый файл;

На следующем изображении показаны три наиболее важных файла конфигурации Mycat:

Логическая библиотека конфигурации:

Конфигурирование server.xml

Добавить две логические библиотеки Mycat: user, pay. System — это параметр всех конфигураций Mycat, таких как добавление парсера: defaultSqlParser и других. User — это пользовательский параметр.

<system>
    <property name="defaultSqlParser">druidparser</property>
</system>

<user name="mycat">
    <property name="password">mycat</property>
    <property name="schemas">user,pay</property>
</user>

Редактирование schema.xml

Изменить dataHost и schema, соответствующие соединениям после вертикальной фрагментации. Schema — это конфигурация фактической логической библиотеки, user и pay соответствуют двум логическим библиотекам, несколько schema представляют несколько логических библиотек. DataNode — это фактический адрес конфигурации фрагмента, если настроено несколько фрагментов, достаточно нескольких dataNode. DataHost — это адрес фактической физической библиотеки конфигурации, можно настроить несколько основных, подчинённых и других конфигураций, несколько dataHost представляют адреса фрагментов физической библиотеки. Ниже приведены примеры конфигурации двух writeHost в качестве основного и подчинённого.

schema — это фактическая конфигурация логической библиотеки, user и pay соответствуют двум логическим библиотекам. Несколько schema представляют несколько логический библиотек. dataNode — это адрес фактического фрагмента конфигурации. Если настроено несколько фрагментов, достаточно нескольких dataNode. dataHost — это адрес фактической конфигурации физической библиотеки, можно настроить основной, подчинённый и другие конфигурации. Несколько dataHost представляют адрес фрагмента физической библиотеки. В следующем примере настроены два writeHost как основной и подчинённый.

<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
<schema name="pay"  checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
   <table name="order" dataNode="pay1,pay2" rule="rule1"/>
</schema>

<dataNode name="user" dataHost="host" database="user" />
<dataNode name="pay1" dataHost="host" database="pay1" />
<dataNode name="pay2" dataHost="host" database="pay2" />

<dataHost name="host" maxCon="1000" minCon="10" balance="0"
   writeType="0" dbType="mysql" dbDriver="native">
   <heartbeat>select 1</heartbeat>
   <!-- can have multi write hosts -->
   <writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
   <writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
</dataHost> **Mycat как промежуточное ПО реализует MySQL-протокол**

Для приложений на стороне клиента Mycat выступает в роли базы данных, поэтому существует конфигурация базы данных. Конфигурация базы данных Mycat находится в файле schema.xml. После настройки её можно отобразить в server.xml для пользователей.

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema  xmlns:mycat="http://org.opencloudb/">
  <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
      <table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
      <table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/>
  </schema>
  <dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
  <dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>

  <dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
    <heartbeat>show status like 'wsrep%'</heartbeat>
    <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
    </writeHost>  
  </dataHost>
</mycat:schema >```

В приведённом выше примере была настроена логическая база данных TESTDB и две таблицы с фрагментами: t_user и ht_jy_login_log.

**Конфигурация логических таблиц**

Элемент table представляет собой конфигурацию логической таблицы, где:
* name — имя таблицы;
* dataNode — таблица соответствует фрагменту;
* Mycat по умолчанию использует метод разделения на разделы, то есть одна таблица отображается в разные базы данных;
* rule — метод разделения данных, который необходимо использовать для таблицы, и соответствующее имя конфигурации в rule.xml, если требуется разделение.

**Настройка фрагментов (dataNode)**

Таблицы после разделения необходимо настроить так, чтобы они отображались в нескольких базах данных. Mycat использует фрагменты как псевдонимы баз данных, например, в этом примере два фрагмента dn1 и dn2 отображаются в двух базах данных на физическом компьютере localhost1.

**Настройка отображения фрагментов физической базы данных (dataHost)**

Mycat, как прокси-сервер базы данных, требует логической базы данных, логического пользователя и разделения таблиц после настройки. Затем необходимо настроить отображение фрагментов на реальные физические хосты. Независимо от того, отображается ли он на один или несколько экземпляров хоста, Mycat не заботится об этом, просто нужно правильно настроить его. Например, в примере:

Настроен физический хост с именем localhost1 для отображения.

Тег heartbeat представляет собой оператор SQL, необходимый для проверки соединения Mycat с базой данных. В производственных сценариях обычно настраивается главный/резервный сервер или мультимастер, или одноузловая база данных. Независимо от конфигурации, Mycat должен поддерживать соединение с источником данных, поэтому необходимо периодически проверять доступность соединения. Тег heartbeat используется для проверки пульса.

Тег writeHost представляет собой сопоставление между логическим хостом (dataHost) и физическим хостом. Например, в приведённом примере хост записи hostM1 сопоставлен с 127.0.0.1:3306. Если требуется чтение/запись или мультимастер или главный/резервный, можно настроить несколько writeHost или readHost.

Теги dataHost, такие как writeType, balance и т. д., представляют различные стратегии, которые необходимо дополнительно изучить в руководстве.

# Конфигурация правил разделения Mycat

## Правила разделения

```<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">

<mycat:rule  xmlns:mycat="http://org.opencloudb/">
  <tableRule name="sharding-by-hour">
    <rule>
      <columns>createTime</columns>
      <algorithm>sharding-by-hour</algorithm>
    </rule>
  </tableRule>

  <function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion">
    <property name="splitOneDay">24</property>
  </function>

</mycat:rule >```

Это наиболее важная конфигурация в процессе разделения данных — конфигурация метода разделения данных. Метод разделения данных определяет производительность данных после разделения, поэтому это также наиболее важная конфигурация.

Например, в приведённой выше конфигурации настроен метод разделения с именем sharding-by-hour, соответствующий методу разделения (function) — разделение по дате. В этой конфигурации:

### tableRule

name — соответствует правилу «sharding-by-hour» в schema.xml, то есть конфигурации правила разделения таблицы.

columns — поле разделения таблицы: createTime — дата создания.

algorithm — правило, соответствующее правилу разделения: сопоставляется с именем функции.

### function

Конфигурация функции — это конфигурация правила разделения.

name — имя правила разделения, которое можно выбрать произвольно, но оно должно соответствовать tableRule.

class — класс правила разделения, который должен быть настроен в соответствии с требуемым правилом разделения. Например, этот пример разделяет по часам: org.opencloudb.route.function.LatestMonthPartion.

property — атрибут правила разделения, разные правила разделения имеют разные конфигурации.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

MyCAT — это полностью открытое ПО, высокопроизводительное и надёжное, с возможностью эластичного расширения. Это распределённое промежуточное ПО для баз данных, ориентированное на разработку корпоративных приложений и больших кластеров баз данных. Поддерживает транзакции, свойства ACID и является улучшенной версией MySQL. Благодаря сегментирова... Развернуть Свернуть
Java и 6 других языков
GPL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/MycatOne-Mycat-Server.git
git@api.gitlife.ru:oschina-mirror/MycatOne-Mycat-Server.git
oschina-mirror
MycatOne-Mycat-Server
MycatOne-Mycat-Server
main