十一、Mycat-介紹安裝

  1. 先搭建MySQL的主從複製

  2. Mycat是阿里的開源框架

  3. Mycat可以幹什麼:

    1. 數據庫中間件
    2. 讀寫分離
    3. 數據分片(垂直、水平、垂直+水平)
    4. 多數據源整合(任何關係型非關係型數據庫都可以整合)
    5. 原理:攔截
  4. 安裝啓動

    1. 上傳到 /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/
      

       

    2. 三個文件
      1. 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>

         

      2. rule.xml  定義分片規則
      3. 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>

         

    3. 驗證數據庫遠程訪問
      [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字段的%,此時再遠程方式連接

    4. 啓動

      [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

      重啓成功。

    5. 登錄mycat

      [root@bogon ~]# mysql -umycat -p123456 -P8066 -h 192.168.192.129
      

       

    6. 先插入主機名

      insert into user values(5,@@hostname);

       

    7. 查詢通過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)
      

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章