MySQL NGINX設定主主複製高可用

2021-10-24 01:51:12 字數 2824 閱讀 5811

該實驗目的是為了:

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...