1. 程式人生 > 遊戲攻略 >《怪物獵人物語2破滅之翼》麒麟基因搭配思路

《怪物獵人物語2破滅之翼》麒麟基因搭配思路

利用Mycat中介軟體實現MySQL的讀寫分離

實驗環境

nodeMasterSlaveMycat
linux CentOS7.9 CentOS7.9 CentOS7.9
mysql 5.7 5.7 5.7
IP 192.168.18.131 192.168.18.133 192.168.18.135

192.168.18.131、192.168.18.133搭建成MySQL主從同步環境

192.168.18.135主機部署mycat (注:記憶體需要2G以上,否則mycat服務起不來)

所有主機關閉SELinux和防火牆

systemctl stop firewalld
setenforce 
0 時間同步

安裝環境準備

  • 1、jdk:要求jdk必須是1.7及以上版本

  • 2、Mysql:推薦mysql是5.5以上版本

安裝MyCat

1.下載mycat

[root@centos7 soft]# wget http://dl.mycat.org.cn/1.6.7.6/20210303094759/Mycat-server-1.6.7.6-release-20210303094759-linux.tar.gz

2.解壓到/apps目錄下

[root@mycat soft]# mkdir /apps

[root@mycat soft]# tar -xvf Mycat-server-1.6.7.6
-release-20210303094759-linux.tar.gz -C /apps [root@mycat conf]# echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh [root@mycat conf]# source /etc/profile.d/mycat.sh [root@mycat conf]# netstat -lnp |grep :8066 tcp6 0 0 :::8066 :::* LISTEN 67184/java #用預設密碼123456來連線mycat [root@mycat conf]# mysql -uroot -p123456 -h 192.168
.18.135 -P8066 mysql> show databases; +----------+ | DATABASE | +----------+ | TESTDB | +----------+

在mycat 伺服器上修改server.xml檔案配置Mycat的連線資訊

[root@mycat conf]# vim /apps/mycat/conf/server.xml

 110 <user name="root" defaultAccount="true">            #連線Mycat的使用者名稱
 111         <property name="password">123456</property> #連線Mycat的密碼,預設密碼為123456
 112         <property name="schemas">TESTDB</property> #資料庫名要和schema.xml相對應

修改schema.xml實現讀寫分離策略

 1 [root@mycat ~]#vim /app/mycat/conf/schema.xml                                       
 2  <?xml version="1.0"?>
 3  <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
 4  <mycat:schema xmlns:mycat="http://io.mycat/">
 5  6          <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1">
 7          </schema>
 8          <dataNode name="dn1" dataHost="localhost1" database="mycat" />
 9          <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
10                            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
11                  <heartbeat>select user()</heartbeat>
12                  <!-- can have multi write hosts -->
13                  <writeHost host="hostM1" url="192.168.18.131:3306" user="root"
14                                     password="123456">
15                  <readHost host="hostS1" url="192.168.18.133:3306" user="root"
16                                     password="123456" />
17          </dataHost>
18  </mycat:schema>
19 20  #以上***部分表示原配置檔案中需要修改的內容
21  #重新啟動mycat
22  [root@mycat ~]#mycat restart

上面配置中,balance改為1,表示讀寫分離。以上配置達到的效果就是192.168.18.131為主庫,192.168.18.133為從庫

注意:要保證192.168.18.131和192.168.18.133機器能使用root/123456許可權成功登入mysql資料庫。同時,也一定要授權mycat機器能使用root/123456許可權成功登入這兩臺機器的mysql資料庫!!這很重要,否則會導致登入mycat後,對庫和表操作失敗!

在後端主伺服器建立使用者並對mycat授權

 [root@master ~]#mysql -uroot -p
 mysql> create database mycat;
 Query OK, 1 row affected (0.04 sec)
 ​
 mysql> GRANT ALL ON *.* TO 'root'@'192.168.18.135' IDENTIFIED BY '123456' ; 
 mysql> flush privileges;

通過通用日誌確認實現讀寫分離

在主和從伺服器分別啟用通用日誌,檢視讀寫分離

[root@master ~]#vim /etc/my.cnf
 [mysqld]
 ...
 general_log=ON
 general_log_file='master-general.log'
 ...
 [root@master ~]#systemctl restart mysqld
 [root@master ~]#tail -f /data/mysql/master-general.log
 ​
 [root@slave ~]#vim /etc/my.cnf
 [mysqld]
 ...
 general_log=ON
 general_log_file='slave-general.log'
 ...
 [root@slave ~]#systemctl restart mysqld
 [root@slave ~]#tail -f /data/mysql/slave-general.log
在mysql中檢視通用日誌

 show variables like 'general_log';  #檢視日誌是否開啟
 show variables like 'general_log_file'; #檢視日誌檔案儲存位置

在Mycat伺服器上執行讀寫操作,進行讀寫分離的測試

[root@mycat ~]#mysql -uroot -p123456 -h127.0.0.1 -P8066
 mysql> show databases;
 +----------+
 | DATABASE |
 +----------+
 | TESTDB   |    //只能看一個虛擬資料庫
 +----------+
 mysql> create table test1 (id int,name varchar(10));
 mysql> insert into test1 values(111,'quhongzhi');
 mysql> select * from test1;
 mysql> select @@server_id;
 +-------------+
 | @@server_id |
 +-------------+
 |           2 |
 +-------------+
 1 row in set (0.00 sec)

在主從節點上分別檢視通用日誌

可以看到寫操作被轉發到了Master節點,讀操作被轉發到了Slave節點。

停止從節點,MyCAT自動排程讀請求至主節點

 [root@slave ~]#systemctl stop mysqld
 ​
 [root@mycat ~]#mysql -uroot -p123456 -h192.168.100.10 -P8066
 mysql> select @@server_id;
 +-------------+
 | @@server_id |
 +-------------+
 |           1 |
 +-------------+
 1 row in set (0.00 sec)