實現MySQL主從複製,nginx讀寫分離

說明:我的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,纔算配置成功。

成功訪問:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章