1. 程式人生 > >MySQL主從同步+MyCat資料讀寫分離操作筆記

MySQL主從同步+MyCat資料讀寫分離操作筆記

一. Centos7安裝mysql5.7步驟

環境準備: centos7系統 1,網路:192.168.X.130(master),192.168.X.131(slave) 2,連線外網 3,裝epel-release倉庫 4,裝wget/vim等; 5, 關閉防火牆 # systemctl stop firewalld.service #systemctl disable firewalld.service 或者: #firewall-cmd --permanent–zone=public --add-port=3306/tcp #firewall-cmd --permanent --zone=public–add-port=3306/udp #firewall-cmd --reload #設定新的防火牆規則生效

a. 準備 準備兩臺Centos7環境的虛擬機器,我用的兩臺:192.168.X.130(master),192.168.X.131(slave)

c. 安裝源 #rpm -ivh mysql57-community-release-el7-8.noarch.rpm

d. 安裝資料庫 # yum install mysql-server

e.修改配置檔案 #vim /etc/my.cnf

f. 啟動資料庫 systemctl start mysqld systemctl status mysqld

g.登入資料庫 5.7版本預設對於root帳號有一個隨機密碼,可以通過 #grep “password” /var/log/mysqld.log 或者: #cat /var/log/mysqld.log |grep password

#mysql -uroot -p 回車,貼上隨機密碼

h.設定新密碼,需要嚴格按照規範去設定密碼 ->set password=password(‘資料庫新密碼’);

關閉虛擬機器做快照,克隆虛擬機器,UUID會重複,問題已解決

二、搭建MySQL5.7 主從複製伺服器 1、Master a. 修改Master的配置# /etc/my.cnf,並重啟mysql server-id=1 log_bin=mysql-bin

#service mysqld restart #重啟

b. 查記錄File與Position的值,此處的查詢結果,將在下面Slave建立與Master聯絡時用到。 -> show master status;

c.在master上為slave建立使用者 ->grant replication slave, reload, super on . to ‘repl’@‘192.168.X.131’ identified by ‘password’;

--------------------增加訪問許可權後期檢驗使用: ->GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

->GRANT ALL PRIVILEGES ON . TO ‘repl’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

需要立即生效: -> flush privileges; #systemctl restart mysqld

到此Master配置完畢! 2、Slave a. 修改Slave的配置my.cnf,並重啟mysql

server-id=2 log_bin=mysql-bin

service mysqld restart #重啟

b.Slave建立與Master聯絡 登入執行

mysql> change master to -> master_host=‘192.168.X.130’, -> master_port=3306, -> master_user=‘repl’, -> master_password=‘password’, -> master_log_file=‘mysql-bin.00000X’, -> master_log_pos=XXX;

或者:

->change master to master_host=‘192.168.X.130’,master_port=3306,master_user=‘repl’,master_password=‘password’,master_log_file=‘mysql-bin.00000X’,master_log_pos=XXX; --------------------增加訪問許可權後期檢驗使用: ->GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

c. 啟動Slave #start slave; #啟動 #stop slave; #關閉

d. 檢視slave狀態 show slave status \G;

檢查: Slave_IO_Running: Yes Slave_SQL_Running: Yes e.測試 用資料庫連線工具同時連線Master和Slave,在Master裡面建立資料庫Test,並建立表user。此時可以看到Slave也出現了Test資料庫和Test。向user表新增資料效果也一樣。 master: ->create databases test; ->show databases; ->use test; ->show tables; slave: ->show databases; 可以看到資料已經插入。記錄已經存在,到這裡整個主從複製的過程就完成了。

三,MyCat實現讀寫分離 master: 1、下載JDK環境包:jdk-8u11-linux-x64.tar.gz a、解壓到/usr/local b、在/etc/proflie配置java環境變數及mycat Home路徑

2、Mycat下載地址 a、http://dl.mycat.io/ b、我下載的是Mycat-server-1.6-RELEASE-20161028204710-linux.tar 3,安裝 a、解壓到/usr/local目錄下,即mycat目錄 b、 在/etc/profile配置java環境變數及mycat Home路徑

立即生效 #source /etc/profile

3、修改 wrapper.conf檔案 主要修改下面這一行程式碼:

4、檢視/mycat/conf/server.xml

在這裡插入圖片描述 說明:name mycat連線賬號相當於mysql的賬號; schemas 中的Test是邏輯資料庫,對應schema.xml readOnly賬號是否只讀; 5、配置/mycat/conf/schema.xml

在這裡插入圖片描述

在這裡插入圖片描述

6、啟動Mycat #/mycat/bin/mycat start #對比自己的安裝路徑 StartingMycat-server…

#mycat/bin/mycat restart #mycat/bin/mycat stop #mycat/bin/mycat status

7、測試 用在master連線 #mysql -uroot -p123456 -h127.0.0.1 -P8066

或者用Navicat Preminum (防火牆和mysql訪問許可權)連線。 以下用Navicat Preminum進行測試: 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 點選連線測試,成功以後在點選確定即連線mycat成功了。 =========寫 4,測試步驟:

  1. , 進去會有初始化後的TESTDB資料庫(新建資料表TESTDB,加入ID,NAME表單); 2), 往mycat插入一條資料,提交重新整理; 3),觀察剛插入的資料; 4), 通過從庫檢視發現有剛新新增的資料; 5),通過主庫檢視發現也有這條剛新增的資料;

==========讀 1),在從庫的TESTDB插入一條資料(生產環境不建議這樣測試); 2),在mycat重新整理可以看見有新資料記錄,在主庫沒有資料記錄,說明讀取資料在從庫;

資料分離成功!