>  기사  >  데이터 베이스  >  mysql용 mycat 미들웨어 설치 및 사용에 대한 자세한 설명

mysql용 mycat 미들웨어 설치 및 사용에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-28 09:49:423217검색

MyCAT은 이전에 Alibaba의 유명한 Cobar로 알려진 MySQLmiddleware입니다. Cobar는 일정 기간 동안 오픈 소스로 공개된 후 중단되었습니다. 그래서 MyCAT이 이 배너를 채택했고, 빅데이터 시대에 그 중요성은 점점 더 분명해지고 있습니다. 이 기사는 주로 MyCAT의 소개 배포에 관한 것입니다.

먼저 mycat이란 무엇입니까

엔터프라이즈 애플리케이션 개발을 위한 완전 오픈 소스 대규모 데이터베이스 클러스터

트랜잭션, ACID, MySQL을 대체할 수 있는 향상된 버전의 데이터베이스를 지원합니다.

고가의 Oracle 클러스터를 대체하는 데 사용되는 MySQL 클러스터로 간주됨

메모리 캐시 기술, NoSQL 기술 및 HDFS 빅데이터를 통합한 새로운 SQL Server

기존 데이터베이스와 데이터베이스를 결합한 차세대 엔터프라이즈급 데이터베이스 제품 새로운 분산 데이터 웨어하우스

새로운 데이터베이스 미들웨어 제품

위 내용은 공식 설명입니다. 실제로는 데이터베이스의 연결 풀입니다. MySQL 프록시도 연결 풀이지만 효율성이 매우 낮습니다.

두 번째, mycat

1 설치, mycat

2 주소 다운로드, mycat


# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

3, mycat

1 구성, 서버 구성.

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에 중점을 두겠습니다. Balance

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 &#39;123456&#39;;
flush privileges

213번과 214번 머신에 사용자를 추가

추가하세요. 5. 실제 사용자 연결을 테스트하여 Schema.xml에 구성된 실제 사용자가 실제 데이터베이스에 연결할 수 있는지 확인하세요. 방화벽에 주의하세요.

넷, start mycat

1, 공통 매개변수

./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 &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; 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 &#39;0&#39; COMMENT &#39;ID&#39;,
 -> `name` varchar(20) NOT NULL DEFAULT &#39;&#39; COMMENT &#39;姓名&#39;,
 -> `create_time` int(10) NOT NULL DEFAULT &#39;0&#39; COMMENT &#39;创建时间&#39;,
 -> 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 (&#39;1&#39;, &#39;tank&#39;);
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은 mysql 하위 테이블, 샤딩을 지원합니다. 등이지만 사용을 권장하지 않습니다. Mycat은 많은 클러스터를 지원하지 않습니다. mha와 함께 사용할 수 있다면 정말 좋을 것 같습니다.

위 내용은 mysql용 mycat 미들웨어 설치 및 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.