-
先搭建MySQL的主從複製
-
Mycat是阿里的開源框架
-
Mycat可以幹什麼:
- 數據庫中間件
- 讀寫分離
- 數據分片(垂直、水平、垂直+水平)
- 多數據源整合(任何關係型非關係型數據庫都可以整合)
- 原理:攔截
-
安裝啓動
- 上傳到 /opt 下,解壓
[root@bogon opt]# ll total 81932 -rw-r--r--. 1 root root 15662280 Mar 8 11:42 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -rwxrw-rw-. 1 root root 17855952 Mar 1 06:38 MySQL-client-5.5.48-1.linux2.6.x86_64.rpm -rwxrw-rw-. 1 root root 50372369 Mar 1 06:37 MySQL-server-5.5.48-1.linux2.6.x86_64.rpm drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh [root@bogon opt]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
拷貝mycat文件夾到 /usr/local/
[root@bogon opt]# ll -l total 81936 drwxr-xr-x. 7 root root 4096 Mar 8 11:44 mycat -rw-r--r--. 1 root root 15662280 Mar 8 11:42 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -rwxrw-rw-. 1 root root 17855952 Mar 1 06:38 MySQL-client-5.5.48-1.linux2.6.x86_64.rpm -rwxrw-rw-. 1 root root 50372369 Mar 1 06:37 MySQL-server-5.5.48-1.linux2.6.x86_64.rpm drwxr-xr-x. 2 root root 4096 Nov 22 2013 rh [root@bogon opt]# cp -r mycat /usr/local/
- 三個文件
- schema.xml 定義邏輯庫、表、分片等內容
<!-- 先把schema之間沒用的內容全部刪掉 --> 輸入 冒號 :切換命令模式,輸入 set num 顯示行號,退出。可以用 d 命令刪除自己想刪除的行。
<!-- 配置數據節點 dataNode="dn1" --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" >
最終配置的文件如下
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 第二步:配置dataNode --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode = "dn1"> <!--第一步: 刪除中間的沒用數據 --> </schema> <!--第三步: db1是配置的主從複製的數據庫 --> <dataNode name="dn1" dataHost="host1" database="db1" /> <!--第四步:dataHost 和上面的 dataHost一致是host1 --> <!--第七步:balance權重,表示讀寫的規則 balance=0:不開啓 balance=1:雙主雙從,只有M1寫,其他M2、S1、S2都參與讀 balance=2、2臺機器M1和S1動態分發 balance=3、讀和寫分開各管各的 --> <dataHost name="host1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- 第五步:寫的主機(mysql主從複製的主機) url對應寫的機器的ip --> <writeHost host="hostM1" url="192.168.0.104:3306" user="root" password="123456"> <!-- 第六步:讀主機(mysql主從複製的從機) url對應讀主機真實ip --> <readHost host="hostS1" url="192.168.192.129:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema>
- rule.xml 定義分片規則
- server.xml 定義用戶以及系統相關變量,只是修改user用戶名
<!-- 第一步:修改用戶名未mycat --> <user name="mycat"> <property name="password">123456</property> <property name="schemas">TESTDB</property> <!-- 表級 DML 權限設置 --> <!-- <privileges check="false"> <schema name="TESTDB" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema> </privileges> --> </user>
- schema.xml 定義邏輯庫、表、分片等內容
- 驗證數據庫遠程訪問
[root@bogon ~]# mysql -uroot -p123456 -h192.168.0.104 -P 3306 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5.62-log MySQL Community Server (GPL) 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.
在驗證linux服務器mysql時候
ERROR 1130 (HY000): Host '192.168.192.129' is not allowed to connect to this MySQL server
檢查:1、防火牆 2、查看登錄(root)用戶的權限
mysql> use mysql; Database changed mysql> select host,user from user; +-----------+------+ | host | user | +-----------+------+ | 127.0.0.1 | root | | ::1 | root | | localhost | | | localhost | root | +-----------+------+ 4 rows in set (0.00 sec)
設置root用戶權限爲%,當然也可以設置固定ip
mysql> update user set host = '%' where user='root'; ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
報這個錯不用管,直接
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select host,user from user; +-----------+------+ | host | user | +-----------+------+ | % | root | | 127.0.0.1 | root | | ::1 | root | | localhost | | +-----------+------+ 4 rows in set (0.00 sec)
已經看到host字段的%,此時再遠程方式連接
-
啓動
[root@bogon bin]# pwd /usr/local/mycat/bin [root@bogon bin]# ./mycat console Running Mycat-server... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 1 | wrapper | Unable to start JVM: No such file or directory (2) wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 2 | wrapper | Unable to start JVM: No such file or directory (2) wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 3 | wrapper | Unable to start JVM: No such file or directory (2) wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 4 | wrapper | Unable to start JVM: No such file or directory (2) wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 5 | wrapper | Unable to start JVM: No such file or directory (2) wrapper | There were 5 failed launches in a row, each lasting less than 300 seconds. Giving up. wrapper | There may be a configuration problem: please check the logs. wrapper | <-- Wrapper Stopped
此處報錯,我的linux沒裝jdk,下載jdk1.8並放在/opt下
放在opt下解壓 tar zxvf jdk-8u181-linux-x64.tar.gz
配置環境變量
你自己解壓的目錄 export JAVA_HOME=/usr/local/jdk1.8.0_241 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin
刷新並查看版本
[root@bogon etc]# source /etc/profile [root@bogon etc]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
再重啓報錯
java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: bogon: bogon: Name or service not known
未知的主機 什麼 bogon ,想了一下難道是主數據庫的host必須要bogon,試着修改windows的host文件
127.0.0.1 peer1 peer2 peer3 peer4 host1 bogon
重啓成功。
-
登錄mycat
[root@bogon ~]# mysql -umycat -p123456 -P8066 -h 192.168.192.129
-
先插入主機名
insert into user values(5,@@hostname);
-
查詢通過mycat實現了隨機讀取的效果
mysql> select * from user; +------+-----------------+ | id | name | +------+-----------------+ | 1 | z3 | | 2 | l4 | | 3 | aa | | 4 | bb | | 5 | LAPTOP-GU9D34GL | +------+-----------------+ 5 rows in set (0.00 sec) mysql> select * from user; +------+-------+ | id | name | +------+-------+ | 1 | z3 | | 2 | l4 | | 3 | aa | | 4 | bb | | 5 | bogon | +------+-------+ 5 rows in set (0.00 sec) mysql> select * from user; +------+-----------------+ | id | name | +------+-----------------+ | 1 | z3 | | 2 | l4 | | 3 | aa | | 4 | bb | | 5 | LAPTOP-GU9D34GL | +------+-----------------+ 5 rows in set (0.00 sec)
- 上傳到 /opt 下,解壓
十一、Mycat-介紹安裝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.