Mysql的主從複製和讀寫分離(中間件Mycal版)

Mysql的主從複製和讀寫分離

主從複製

1,修改mysql的配置文件
[root@localhost mysql]#vim /etc/my.cnf
2.分別在配置文件中加入如下配置

		server-id=1
		log-bin=mysql-bin #開啓二進制日誌文件的名字
		log-slave-updates #從機隨着日誌文件的變化而變化 
		slave-skip-errors=all #跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷
		
		server-id=2
		log-bin=mysql-bin
		log-slave-updates
		slave-skip-errors=all
		
		···
		注意:兩個機器的server-id不能一致,自己選擇哪個爲主那些爲從

3.重啓mysql服務
systemctl restart mysqld
4.登錄mysql執行如下命令檢測配置是否生效
SHOW VARIABLES like 'server_id';
在這裏插入圖片描述

5.登錄master節點執行如下命令
show master status;
在這裏插入圖片描述

6.登錄從節點執行如下命令:每個從都要執行使得從機與主機日誌保持一致

change master to 
		master_host='192.168.150.128',
		master_user='root',
		master_password='root',
		master_log_file='mysql-bin.000001',
		master_log_pos=120;

7.開啓從節點
start slave;

8.查看從節點狀態
show master status\G;

	************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.15.0.9
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 120
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
   	
    注意:
    		1.出現 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 說名成功,
    		2.如果在搭建過程出現錯誤,可以查看查看錯誤日誌文件 cat /var/log/mysqld.log

9.通過客戶端工具進行測試

10.關閉主從複製(在從節點執行),如果不手動關閉的話,便會一直保持!
stop slave;

讀寫分離《中間件Mycal》

1.下載mycat
http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

2.解壓mycat
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

注意:以下這些配置只在寫節點配置就行
3.配置mycat中conf下的配置schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

         <!-- 定義MyCat的邏輯庫 name是自定義的mycat邏輯庫名 dataNode 定義數據節點,對應下一行的name -->
    <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dataNode"></schema>
        <!-- 定義MyCat的數據節點 database配置你的真實數據庫名 -->
    <dataNode name="dataNode" dataHost="dtHost" database="project" />
   <dataHost name="dtHost" maxCon="1000" minCon="10" balance="1"
                writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                <!--維持心跳-->
                <heartbeat>select user()</heartbeat>
                <!--寫節點-->
                         <writeHost host="hostM1" url="10.10.0.151:3306" user="root"  password="root">
                <!--從節點-->
                         <readHost host="hostS1" url="10.10.0.152:3306" user="root" password="root" />
                </writeHost>
   </dataHost>
</mycat:schema>

4,配置登陸mycat的權限server.xml 邏輯庫名一定要和schema.xml的一致

<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">        
          		<system>
                <!-- 這裏配置的都是一些系統屬性,可以自己查看mycat文獻參考-->
                <property name="defaultSqlParser">druidparser</property>
                <property name="charset">utf8</property>
                </system>
              
                <!--配置mycat的用戶信息-->
                <user name="root">
                <property name="password">root</property>
                        <!-- 配置邏輯庫名  -->
                <property name="mycat">mycat</property>
                </user> 
</mycat:server> 

5,因爲mycat默認的啓動時間爲5s,超時即失敗。因此我們要自己設置它的啓動等待時間 !進入 wrapper.xml文件進行配置,在任意位置添加即可。
wrapper.startup.timeout=7200 以秒爲單位,7200秒=2小時

6 啓動Mycal
./bin/mycat console./bin/mycat start

7.查看日誌
tail -f ../logs/mycat.log

8.數據庫連接配置,測試
用navicat(大黃) 連接MyCal 端口默認爲8066

如果要和SpringBoot 集成的話在 yml 上配置

     #配置數據源(讀寫分離數據源)
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.150.128:8066/mycat          #連接mycat邏輯庫
    username: root
    password: root
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章