說明:我的nginx裝在Windows上,實現反向代理,讀寫分離。在兩臺centos7主機上安裝MySQL5.7,部署相同的項目。使用MySQL自帶的主從複製。
測試環境:Windows上配置nginx做nginx服務器
一臺centos7做主從複製的主服務器
另一臺centos7做主從複製的從服務器
一、nginx反向代理,讀寫分離
編輯conf/nginx.conf文件
添加如下配置,weight設置權重,我這裏的192.168.177.132服務器做寫入操作
####讀服務器組 B
upstream read {
server 192.168.177.136:88 weight=2 max_fails=2 fail_timeout=2;
server 192.168.177.132:88 weight=3 max_fails=2 fail_timeout=2;
}
####寫服務器組 A
upstream write {
server 192.168.177.132:88;
server 127.0.0.1:80 backup;
}
配置server,監聽端口爲80,地址:www.tingfeng.com(其實就是127.0.0.1,我這裏改了hosts文件)當客戶端訪問www.tingfeng.com,監聽端口號爲80,判斷是否爲post請求,是的話就反向代理到上面的write,不是的話就代理到read。
server {
listen 80;
server_name www.tingfeng.com;
location / {
proxy_pass http://read;
if ( $request_method = "POST" ){ ####在這裏判斷用戶是否執行的是寫操作
proxy_pass http://write;
}
index index.html index.htm;
###nginx與上游服務器(真實訪問的服務器)超時時間 後端服務器連接的超時時間_發起握手等候響應超時時間
proxy_connect_timeout 2s;
###nginx發送給上游服務器(真實訪問的服務器)超時時間
proxy_send_timeout 2s;
### nginx接受上游服務器(真實訪問的服務器)超時時間
proxy_read_timeout 2s;
}
}
————————————————————到這裏,反向代理和讀寫分離就完成了———————————————————
二、MySQL主從複製
MySQL數據庫自身提供的主從複製功能有以下幾個好處:
1.實現數據的多處自動備份,實現數據庫的拓展,加強數據的安全性。
2.通過實現讀寫分離還能進一步提升數據庫的負載性能。
首先在兩臺centos7主機中安裝MySQL5.7,步驟自行百度。
我這裏的主數據庫爲:192.168.177.132
從數據庫爲:192.168.177.136
1.配置主數據庫
打開配置文件:vi /etc/my.cnf
添加如下配置:
server-id=132 #設置主服務器的ID(不能和別的服務器重複,建議使用ip的最後一段)
innodb_flush_log_at_trx_commit=2 #
sync_binlog=1 #開啓binlog日誌同步功能
log-bin=mysql-bin-5 #binlog日誌文件名
binlog-do-db=xxxx # 這個表示只同步某個庫 (如果沒有此項,表示同步所有的庫)
重啓主服務器:service mysqld restart
重新登錄數據庫:mysql -u root -p
給從數據庫授權:GRANT REPLICATION SLAVE ON *.* to 'mysync'@'192.168.177.136' identified by '0219';
授權給從數據庫服務器用戶名mysync,密碼0219,192.168..177.136主機允許訪問,這裏也可以配置通配符:%,表示所有地址都可以訪問。
查看主庫狀態:show master status ; ##查看主庫的狀態 file,position這兩個值很有用,記一下。要放到slave配置中
2.配置從數據庫
打開配置文件:vi /etc/my.cnf
添加如下內容:
server-id=136
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-6
重啓並登陸到數據庫
然後配置從服務器:change master to master_host='192.168.177.132',master_user='mysync',master_password='0219',
master_log_file='mysql-bin-5.000004',master_log_pos=324913; //注意不要斷開,324913數字前後無單引號。
啓動從數據庫複製功能:start slave;
檢查從數據庫的狀態: mysql> show slave status\G
如圖紅色框內的兩個參數必須爲yes,纔算配置成功。
成功訪問: