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

OSCHINA-MIRROR/MycatOne-Mycat

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

MyCAT — это программное обеспечение с открытым исходным кодом, ориентированное на предприятия и представляющее собой большой кластер баз данных. MyCAT является принудительной базой данных, которая может заменить MySQL и поддерживает транзакции и ACID (атомарность, согласованность, изолированность, долговечность).

Рассматриваемый как кластер MySQL для корпоративных баз данных, MyCAT может занять место дорогостоящего кластера Oracle. MyCAT также представляет собой новый тип базы данных, который похож на SQL Server, интегрированный с технологией кэширования в памяти, технологией NoSQL и большими данными HDFS.

Как новый современный корпоративный продукт для баз данных, MyCAT сочетает в себе традиционную базу данных и новое распределённое хранилище данных. Одним словом, MyCAT — это новое промежуточное ПО для баз данных.

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

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

MyCAT 1.6 не поддерживает один SQL, содержащий несколько операторов.

Обновление fastjson в старой версии Mycat: необходимо изменить версию fastjson в файле pom.xml.

  • Ошибки версии 1.6:
    • пакетная обработка вставки, несколько операторов, внешнее объединение, рекомендуется избегать этих функций.

Синтаксис глобального порядкового номера:

INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");

Загрузка установочных пакетов: доступны по ссылке https://github.com/MyCATApache/Mycat-Server/releases.

Версия MyCAT 2.0 доступна по ссылке: https://github.com/MyCATApache/Mycat2.

Обновления для ветки Druid 1.1.10 поддерживаются отдельно по адресу: https://github.com/MyCATApache/Mycat-Server/tree/1.6.6-druid.

Docker-Mycat (1.65): доступен по ссылке: https://github.com/dekuan/docker.mycat.

Для получения дополнительной информации рекомендуется обратиться к следующим ресурсам:

Особенности

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

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

  • Основан на открытом проекте Alibaba Cobar, стабильность, надёжность, отличная архитектура и производительность которого, а также множество зрелых вариантов использования делают 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 есть документы по адресу Mycat-doc.

Mycat — простой демонстрационный пример, для получения дополнительной информации обратитесь к авторитетному руководству Mycat.

Официальный сайт: mycat.io Официальная группа QQ: 332702697 Официальное скачивание авторитетного руководства Mycat: https://github.com/MyCATApache/Mycat-Server/blob/4135f25df8239d52d220529cbf7cb697ede40e12/mycat-definitive-guide.pdf Wiki: wiki

История Mycat

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

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

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

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

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

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

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

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

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

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

Поддержка стандарта SQL92. Соблюдение исходного протокола MySQL, межъязыковой, межплатформенный, универсальный посредник для баз данных. На основе сердцебиения автоматическое переключение при отказе, поддержка разделения чтения и записи, поддержка MySQL главный-подчиненный, а также кластер Galera. Поддержка кластера Galera для MySQL, Percona Cluster или MariaDB cluster. Эффективное управление потоками на основе Nio, высокая параллельная обработка. Поддержка автоматического маршрутизации и агрегации нескольких фрагментов данных, поддержка sum,count,max и других общих функций агрегации. Поддержка внутреннего соединения одной библиотеки, поддержка соединения двух таблиц между библиотеками и даже многотабличное соединение на основе callet. Поддержка глобальной таблицы, стратегии фрагментации ER, реализация эффективного многотабличного запроса соединения. Поддержка мультитенантной схемы. Поддержка распределённых транзакций (слабая xa). Поддержка глобального серийного номера, решение проблемы генерации первичного ключа в распределённой среде. Богатые правила фрагментации, модульная разработка, простота расширения. Мощные веб и командная строка для мониторинга. Поддержка переднего плана в качестве универсального прокси MySQL, заднего плана JDBC поддерживает Oracle, DB2, SQL Server, mongodb, Hercules. Поддержка шифрования паролей. Поддержка деградации службы. Поддержка белого списка IP. Поддержка чёрного списка SQL и защита от SQL-инъекций. Поддержка разделения таблиц (1.6). Управление кластером на основе ZooKeeper, онлайн-обновление, расширение, интеллектуальная оптимизация, обработка больших данных (версия 2.0 в разработке).

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

Загрузка: https://github.com/MyCATApache/Mycat-download Конкретная загружаемая версия определяется версией выпуска, рекомендуется 1.4, 1.5.

Установка: Просто распакуйте скачанный файл.

Запуск: 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. 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. Вы можете настроить уровень вывода в соответствии с вашими потребностями. Уровень отладки предоставляет больше информации, что удобно для устранения проблем. — 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 и схемы, соответствующей информации о соединении, после вертикальной фрагментации user и pay конфигурация выглядит следующим образом:

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

DataNode соответствует фрагменту логической базы данных. Если вы настроите несколько фрагментов, вам нужно только несколько dataNode.

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

В следующем примере настроены два 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 и системные параметры конфигурации

Настройка параметров среды Mycat

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
   <system>
      <property name="defaultSqlParser">druidparser</property>
    </system> 
 </mycat:server>

Как показано в примере, все параметры переменных Mycat настраиваются в файле server.xml, а все переменные настраиваются под тегом system. Если вам нужно настроить определённую переменную, добавьте соответствующую конфигурацию, например, если вам нужно добавить порт запуска 8066 (по умолчанию 8066):

   <property name="serverPort">8066</property>

Другие переменные аналогичны.

Настроить логические базы данных и пользователей Mycat

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<user name="mycat">
    <property name="password">mycat</property>
    <property name="schemas">TESTDB</property>
</user>
 </mycat:server>

Как видно из примера, все подключения пользователей и сопоставление логических баз данных в Mycat настраивается в файле server.xml под тегом user. Например, в примере настроен пользователь mycat для приложения для подключения к Mycat, и в то же время Mycat настроил логическую базу данных TESTDB в schema.xml и завершил сопоставление между пользователем и логической базой данных.

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

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

Введение

Описание недоступно Развернуть Свернуть
Java и 6 других языков
GPL-2.0
Отмена

Обновления

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

Участники

все

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

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