집 >데이터 베이스 >MySQL 튜토리얼 >Mysql 미들웨어 mycat 설치 및 사용 사례 공유
이 기사에서는 주로 mysql 미들웨어 mycat을 설치하고 사용하는 방법에 대한 예를 공유합니다. MyCAT는 이전에 Alibaba의 유명한 Cobar로 알려진 MySQL 미들웨어입니다. Cobar는 일정 기간 동안 오픈 소스로 제공되었으나 중단되었습니다. 그래서 MyCAT이 이 배너를 채택했고, 빅데이터 시대에 그 중요성은 점점 더 분명해지고 있습니다. 이 기사는 주로 MyCAT의 소개 배포에 관한 것입니다.
먼저 mycat이란 무엇입니까
엔터프라이즈 애플리케이션 개발을 위한 완전 오픈 소스 대규모 데이터베이스 클러스터
트랜잭션, ACID, MySQL을 대체할 수 있는 향상된 버전의 데이터베이스를 지원합니다.
고가의 오라클 클러스터를 대체하는 MySQL 클러스터로 간주
메모리 캐싱 기술, NoSQL 기술, HDFS 빅데이터를 통합한 새로운 SQL Server
기존 데이터베이스와 새로운 분산 데이터베이스를 결합한 차세대 엔터프라이즈급 데이터베이스 제품 데이터 웨어하우스
새로운 데이터베이스 미들웨어 제품
위 내용은 공식적인 설명입니다. 실제로는 데이터베이스의 연결 풀입니다. MySQL 프록시도 연결 풀이지만 효율성이 매우 낮습니다.
둘째, mycat 설치
1, 다운로드 주소 mycat
http://dl.mycat.io/
2, install mycat
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
Three, mycat
1 구성, Server.xml 구성
# 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>
여기서 기본 가상 데이터 이름은 TESTDB입니다. testdb가 Schema.xml에 구성되어 있지 않으면 testdb를 Schema.xml의 가상 데이터 이름으로 변경해야 합니다. 여기에 정의된 사용자 이름, 비밀번호, 가상 데이터베이스 이름은 실제로 mysql에 존재하지 않습니다.
2.schema.xml 구성
# 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>
mycat에는 꽤 많은 구성 매개변수가 있습니다. Balance="1" 및 writeType="0"
a에 중점을 둡니다. 밸런스 속성 로드 밸런싱 유형에는 현재 4개의 값이 있습니다:
1. 밸런스="0", 읽기-쓰기 분리 메커니즘을 활성화하지 않습니다. 읽기 작업은 현재 사용 가능한 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.writeType="1"에 기록되며 모든 쓰기 작업은 구성된 호스트로 무작위로 전송됩니다. 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
머신 213 및 214에 사용자를 추가하세요.
5. 실제 사용자 연결을 테스트하여 Schema.xml에 구성된 실제 사용자가 실제 데이터베이스에 연결할 수 있는지 확인하세요. 방화벽에 주의하세요.
넷, start mycat
1, 공통 매개변수
./mycat start start
./mycat stop stop
./mycat console run in the foreground
./mycat restart 서비스 다시 시작
./mycat 일시정지 일시정지
./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)
6. 하위 테이블, 하위 테이블 태블릿 등을 사용할 수 있지만 사용을 권장하지 않습니다. Mycat은 많은 클러스터를 지원하지 않습니다. mha와 함께 사용할 수 있다면 정말 좋을 것 같습니다.
관련 권장사항:Mycat 읽기-쓰기 분리의 예 MySQL 마스터-슬레이브 복제
MySQL 분산 클러스터 - MyCAT (1) 간략한 소개
위 내용은 Mysql 미들웨어 mycat 설치 및 사용 사례 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!