首頁 > 軟體

MySQL主從設定及haproxy和keepalived搭建過程解析

2022-05-20 13:13:40

本篇文章主要介紹如何搭建MySQL主主設定、主從設定、haproxy、keepalived,已經搭建過程中的一些問題。本次執行環境是在docker中,也會介紹一些docker的知識

docker 小知識

建立本機可存取的MySQL容器

1、直接用 docker 拉取別人搭建好的MySQL
2、自己建立 centos 或者其他容器,下載安裝MySQL
我是採用的第二種方案
命令: docker run -itd --name mysql_server1 -p 13306:3306 centos:7
13306 是原生的埠,3306是容器的埠。這樣本地可以根據埠13306存取容器中的資料庫
-i: 互動式操作。
-t: 終端。
-d: 後臺執行容器,並返回容器ID;

建立harpoxy、Keepalive 的容器

docker run -itd --privileged=true --name mysql_server1 -p 23396:3306 centos:7 /sbin/init
--privileged=true 和 /sbin/init 加上這兩個可以在容器中使用systemctl的命令
然後通過docker exec -it 容器ID 進入
如果沒有 systemctl 執行haproxy和Keepalive會遇到一些問題,且不容易找到錯誤紀錄檔

下載MySQL

1、貼上MySQL社群最新的MySQL rpm包連結,wget下載
2、rpm -ivh mysql.rpm (下載的rpm檔案)
3、yum install mysql
4、在 /var/log/mysqld.log 中找到初始化密碼,登入,設定密碼

MySQL主主設定

我分別在172.17.0.2和172.17.0.4 中安裝了MySQL,用於搭建主主設定

172.17.0.2 MySQL 設定

1、編輯 MySQL 組態檔 vim /etc/my.cnf。不知道組態檔在哪的可以執行 mysql --help | grep 'Default options' -A 1 這個命令

server-id = 1 # 唯一的不能重複
log-bin = mysql-bin  # 開啟二進位制紀錄檔
binlog_format = ROW # 紀錄檔格式
max_binlog_size = 100M # 最大紀錄檔檔案大小
binlog-do-db = itma1 # 支援主從的db

2、老的MySQL版本可能需要設定讓主鍵不同的引數,本次使用環境是MySQL8.0預設不會主鍵衝突,不需要額外設定

172.17.0.2的設定

server-id = 2
log-bin = mysql-bin
binlog_format = ROW
max_binlog_size = 100M
binlog-do-db = itma1

執行sql命令

# 172.17.0.2 執行命令
# 建立使用者
create user slave@"%" IDENTIFIED BY "test123";
# 授予許可權
GRANT REPLICATION SLAVE ON *.* TO slave@"%";
show master statusG
# 172.17.0.4 執行命令
change master to master_host="gateway",master_port=13306, master_user="slave",master_password="test123",master_log_file="mysql-bin.000001",master_log_pos=157;
start slave;
show slave statusG

以上是 0.2是主,0.4是從。上邊的命令兩個機器反過來分別執行一次,即可設定成 0.4主,0.2是從,這樣主主設定搭建完成


設定過程中可能會出現一些錯誤,利用 show slave statusG 可以檢視具體錯誤資訊,不過也有可能出現命令操作太快,還未連結成功的情況。本人還遇到過主的賬號(slave賬號)需要在主的伺服器登入一次,從伺服器才能連結成功的情況,暫時不確定什麼原因,有知道的可以留言,非常感謝

MySQL主從設定

1、從庫組態檔,所屬主庫為 172.17.0.2

server-id = 11 
log-bin = mysql-bin
binlog_format = ROW
log_slave_updates = 1
max_binlog_size = 100M
replicate-do-db = itma1 # 從庫更新也寫binlog

2、執行命令

change master to master_host="gateway",master_port=13306, master_user="slave",master_password="test123",master_log_file="mysql-bin.000001",master_log_pos=157;
start slave;

haproxy 設定

新建立centos容器

yum install haproxy
# 組態檔
vim /etc/haproxy/haproxy.cfg # 最好先備份一下
systemctl start haproxy
systemctl start haproxy

設定如下圖,注意:model 需要時tcp,http雖然檢測沒問題,但是通過本伺服器的地址連結不到MySQL服務

設定成功之後,就可以在其他伺服器通過該伺服器地址連結MySQL了

Keepalived 設定

使用haproxy同樣的伺服器

yum install keepalived
# 組態檔
vim /etc/keepalived/keepalived.conf 最好先備份
systemctl start keepalived
systemctl status keepalived

設定如下圖

haproxy 和keepalived 可以設定到多個伺服器上,keepalived 會根據優先順序去判斷使用哪臺主機,至於這樣設定的好處這裡就不過多介紹

到此這篇關於MySQL主從設定及haproxy和keepalived搭建的文章就介紹到這了,更多相關mysql haproxy和keepalived搭建內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com