該實驗目的是為了:
1,使用nginx輪詢來配置mysql主主複製集群的高可用,當兩台mysql正常使用的時候,在他們之間輪詢,分擔伺服器壓力。當其中一台mysql down了之後,nginx會自動輪詢up的那台。當down的mysql啟動之後,資料會自動同步。,
2,遠端連線mysql的時候,採用nginx的ip即可。
準備3臺centos7伺服器
192.168.8.131 mysql1
192.168.8.132 mysql2
192.168.8.133 nginx+mysql客戶端
mysql主主集群搭建參考:mysql5.7.30主從複製集群搭建及互為主從集群搭建
nginx安裝步驟如下:
這裡最重要的是要編譯安裝stream模組
然後在nginx.conf的最後面加上
stream
server
}注意:是在配置檔案的最後乙個 } 後面加上這段配置,否則肯定會報錯的。
/usr/local/nginx/sbin/nginx -t
這裡會報個錯誤,說找不到nginx使用者。建乙個唄。
groupadd nginx
useradd -g nginx -d /home/nginx nginx
/usr/local/nginx/sbin/nginx
mysql客戶端可以使用:
yum -y install mariadb
首先要確認在nginx伺服器133上可以通過命令連線131和132
mysql -u root -h 192.168.8.131 -p123456
mysql -u root -h 192.168.8.132 -p123456
如果不能連線,首先考慮防火牆是否關閉,其次是設定mysql的訪問許可權。
grant all on *.* to 'root'@'192.168.8.%' identified by '123456';
flush privileges
如果具備下面兩個條件:
1,nginx配置檔案ok
2,本機可以連線兩台mysql
接下來我們就可以測試通過nginx的ip來連線mysql
mysql -u root -p123456 -h 192.168.8.133
正常情況下,這時候已經可以連線了。
讓我們down掉131的mysql,在133上建立乙個test4
service mysql stop
mysql [(none)]> create database test4;
error 2006 (hy000): mysql server has gone away
no connection. trying to reconnect...
connection id: 6
current database: *** none ***
query ok, 1 row affected (0.02 sec)
雖然會報錯說其中一台msyqldown了,但是仍然會建立成功,在132上看,的確建立成功了。
我們再建立乙個test5
mysql [(none)]> create database test5;
query ok, 1 row affected (0.00 sec)
此時不再報錯,說明nginx已經切換到了132上,資料庫可以正常使用了
實驗完成,我們啟動131的mysql,然後看資料是否自動同步
service mysql start
mysql> show databases;
+--------------------+
| database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| test1 |
| test2 |
| test4 |
| test5 |
+--------------------+
9 rows in set (0.00 sec)
實驗成功,哦也!!
有些實驗也有用nginx+keepalive的方案來實現負載均衡,但keepalive這個工具能實現的功能,mysql也可以做到,並且負載功能更加強大。
在生產環境中,有用vip連線資料庫的,這裡可以看做是nginx的ip。也有用網域名稱連線資料庫的,這裡需要用nginx的ip做個dns解析。推薦的方式是用網域名稱連線,這樣不管底層的nginx怎麼切換,我們網域名稱都不會變,只需要更改該底層的ip重做dns即可。
mysql雙主複製的缺點 mysql雙主複製總結
雙主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器a上 mysqld server id 10 log bin mysql bin relay log relay mysql auto increment offset 1 起始值 auto increment...
主定理(Master Theorem)與時間複雜度
主定理最早出現在 演算法導論 中,提供了分治方法帶來的遞迴表示式的漸近複雜度分析。規模為n的問題通過分治,得到a個規模為n b的問題,每次遞迴帶來的額外計算為c n d t n at n b c n d 那麼就可以得到問題的複雜度為 本來使用主定理是可以免去畫遞迴樹的,但為了證明主定理,還是需要畫樹...
mysql 3台主主 mysql主主
設定主 主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器上 mysqld server id 10 log bin mysql bin relay log relay mysql relay log index relay mysql.index auto i...