MyCAT은 이전에 Alibaba의 유명한 Cobar로 알려진 MySQLmiddleware입니다. Cobar는 일정 기간 동안 오픈 소스로 공개된 후 중단되었습니다. 그래서 MyCAT이 이 배너를 채택했고, 빅데이터 시대에 그 중요성은 점점 더 분명해지고 있습니다. 이 기사는 주로 MyCAT의 소개 배포에 관한 것입니다.
먼저 mycat이란 무엇입니까
엔터프라이즈 애플리케이션 개발을 위한 완전 오픈 소스 대규모 데이터베이스 클러스터
트랜잭션, ACID, MySQL을 대체할 수 있는 향상된 버전의 데이터베이스를 지원합니다.
고가의 Oracle 클러스터를 대체하는 데 사용되는 MySQL 클러스터로 간주됨
메모리 캐시 기술, NoSQL 기술 및 HDFS 빅데이터를 통합한 새로운 SQL Server
기존 데이터베이스와 데이터베이스를 결합한 차세대 엔터프라이즈급 데이터베이스 제품 새로운 분산 데이터 웨어하우스
새로운 데이터베이스 미들웨어 제품
위 내용은 공식 설명입니다. 실제로는 데이터베이스의 연결 풀입니다. MySQL 프록시도 연결 풀이지만 효율성이 매우 낮습니다.
1 설치, mycat2 주소 다운로드, mycat# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
3, mycat
1 구성, 서버 구성.# vim /usr/local/mycat/conf/server.xml //添加以下内容 <user name="user"> //mycat用户名 <property name="password">user</property> //mycat密码 <property name="schemas">mytest</property> //mycat虚拟数据库名 <property name="readOnly">true</property> //只读 </user> <user name="tankzhang"> <property name="password">admin</property> <property name="schemas">mytest</property> </user>
# cat schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mytest" checkSQLschema="false" sqlMaxLimit="100" dataNode="my1" />//定义虚拟数据库名mytest <dataNode name="my1" dataHost="test1" database="test" /> //真实数据库名test <dataHost name="test1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" > <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.5.213:3306" user="tank" password="123456" > //真实数据库的连接方式 <readHost host="hostS1" url="192.168.5.214:3306" user="tank" password="123456" /> //同上 </writeHost> </dataHost> </mycat:schema>
attribute로드 밸런싱 유형에는 현재 4개의 값이 있습니다:
1. 이는 읽기-쓰기를 활성화하지 않습니다. 분리 메커니즘을 사용하면 모든 읽기 작업이 현재 사용 가능한 writeHost로 전송됩니다. 2.balance="1", 모든 readHost 및 Stand by writeHost는 select 문의 로드 밸런싱에 참여합니다. 간단히 말해서 듀얼 마스터 듀얼 슬레이브 모드(M1 -> S1, M2 -> S2 및 M1과 M2는 상호 활성 및 대기 상태입니다. 일반적인 상황에서는 M2, S1, S2가 모두 Select 문의 로드 밸런싱에 참여합니다. 3.balance="2", 모든 읽기 작업은 writeHost 및 readhost에 무작위로 배포됩니다. 4.balance="3", 모든 읽기 요청은 실행을 위해 WriterHost에 해당하는 읽기 호스트에 무작위로 배포됩니다. b.writeType 속성 로드 밸런싱 유형에는 현재 3개의 값이 있습니다: 1.writeType="0", 모든 쓰기 작업은 처음 구성된 writeHost로 전송되고 중단되면 첫 번째 작업으로 전환됩니다. . 두 번째로 살아남은 writeHost는 다시 시작한 후 전환된 호스트여야 합니다. 전환은구성 파일에 기록됩니다: dnindex.properties .
2. 모든 쓰기 작업은 무작위로 전송됩니다. writeHost를 구성했습니다. 3. writeType="2", 구현되지 않았습니다. 특정 매개변수: http://mycat.io/document/Mycat_V1.6.0.pdf
3, 마스터 및 슬레이브 서버 구성, 여기서는 이야기하지 않겠습니다. 블로그에 4가 있습니다. , 실제 사용자를 추가grant all privileges on test.* to tank@"192.168.%" identified by '123456'; flush privileges
추가하세요. 5. 실제 사용자 연결을 테스트하여 Schema.xml에 구성된 실제 사용자가 실제 데이터베이스에 연결할 수 있는지 확인하세요. 방화벽에 주의하세요.
넷, start mycat1, 공통 매개변수
./mycat start start./mycat s
top
stop ./mycat console run in the foreground ./mycat restart 서비스 재시작
./mycat Pause Pause
./mycat status 시작 상태 확인
2. mycat 시작 및 확인
# ./mycat start Starting Mycat-server... # netstat -tpnl |grep 8066 tcp 0 0 :::8066 :::* LISTEN 31728/java # ./mycat status Mycat-server is running (31726).
5. 읽기 및 쓰기 분리 테스트
# mysql -u tankzhang -p -P 8066 -h 127.0.0.1 //一定要带上127.0.0.1 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +----------+ | DATABASE | +----------+ | mytest | //虚拟数据库 +----------+ 1 row in set (0.00 sec) mysql> use mytest; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A mysql> CREATE TABLE IF NOT EXISTS `user` ( -> `id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'ID', -> `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名', -> `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', -> PRIMARY KEY (`id`) -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; Query OK, 0 rows affected (0.08 sec) Database changed mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.01 sec) mysql> INSERT INTO `user` (`id` ,`name`)VALUES ('1', 'tank'); Query OK, 1 row affected (0.00 sec) mysql> select * from user; //修改从数据库的user表中的name,会发现读是从从数据库读取的 +----+-----------+-------------+ | id | name | create_time | +----+-----------+-------------+ | 1 | tankzhang | 0 | +----+-----------+-------------+ 1 row in set (0.01 sec)
위 내용은 mysql용 mycat 미들웨어 설치 및 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!