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,測試步驟:
- , 進去會有初始化後的TESTDB資料庫(新建資料表TESTDB,加入ID,NAME表單); 2), 往mycat插入一條資料,提交重新整理; 3),觀察剛插入的資料; 4), 通過從庫檢視發現有剛新新增的資料; 5),通過主庫檢視發現也有這條剛新增的資料;
==========讀 1),在從庫的TESTDB插入一條資料(生產環境不建議這樣測試); 2),在mycat重新整理可以看見有新資料記錄,在主庫沒有資料記錄,說明讀取資料在從庫;
資料分離成功!