日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

發(fā)布時間:2025/6/17 数据库 85 豆豆
生活随笔 收集整理的這篇文章主要介紹了 haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

目前業(yè)界對數(shù)據(jù)庫性能優(yōu)化普遍采用集群方式,而oracle集群軟硬件投入昂貴,mysql則比較推薦用mycat去搭建數(shù)據(jù)庫集群,下面介紹一下怎么用mycat+haproxy+keepalived搭建一個屬于mysql數(shù)據(jù)庫的高可用負載均衡。


主要思路:

簡單說,實現(xiàn)mysql主備復(fù)制-->利用mycat實現(xiàn)負載均衡。

比較了常用的讀寫分離方式,推薦mycat,社區(qū)活躍,性能穩(wěn)定。

以下基于centos7操作系統(tǒng)進行演示。


架構(gòu)圖

以下是這次搭建的架構(gòu)圖。

主機1與主機2上的keepalived會為該服務(wù)器搶占vip,搶占到vip后,對該主機的訪問可以通過原來的ip訪問,也可以直接通過vip訪問,當(dāng)其中一臺宕機時,vip會漂移到另一臺機器上,當(dāng)我們訪問VIP時haproxy會根據(jù)配置將請求分發(fā)到兩臺Mycat上實現(xiàn)負載均衡,并且haproxy會檢測mycat是否存活。

下面先介紹下后端數(shù)據(jù)庫的搭建部分。


一、安裝部署mysql

1、安裝依賴

yum install tcl gcc perl perl-JSON.noarch perl-Time-HiRes.x86_64 -y

2、創(chuàng)建基礎(chǔ)目錄并修改文件夾的屬組

mkdir -p /data/datafilemkdir -p /data/logchown -R mysql:mysql /data

3、安裝mysql數(shù)據(jù)庫,采用rpm安裝方式

3.1卸載自帶包

sudo yum remove -y mariadb*

3.2、安裝rpm

rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-devel-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-embedded-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-embedded-devel-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-test-5.7.26-1.el7.x86_64.rpm

4、mysql數(shù)據(jù)庫配置

4.1、修改數(shù)據(jù)庫my.cnf參數(shù)(注意server-id參數(shù))

# vi /etc/my.cnf[mysqld]datadir=/data/datafilesocket=/var/lib/mysql/mysql.socklog-error=/data/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter_set_server=utf8bind-address = 0.0.0.0lower_case_table_names=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONsymbolic-links=0max_connections=900max_allowed_packet=500M#二進制配置server-id = 1log-bin = /data/log/mysql-bin.loglog-bin-index =/data/log/binlog.indexlog_bin_trust_function_creators=1expire_logs_days=7

4.2、重啟數(shù)據(jù)庫初始化數(shù)據(jù)

service mysqld restart

4.3、修改數(shù)據(jù)庫密碼

4.3.1、查看數(shù)據(jù)庫默認(rèn)密碼

#cat /data/log/mysqld.log|grep password

4.3.2、更改密碼

#mysql -u root -pset global validate_password_policy=0;SET PASSWORD = PASSWORD('xxxxx');

4.3.3、創(chuàng)建數(shù)據(jù)庫和用戶

create schema tms_prod default character set utf8;set global validate_password_policy=0;GRANT ALL PRIVILEGES ON *.* TO tms_prod@'%' identified by 'xxx';

4.3.4、重啟mysql數(shù)據(jù)庫

service mysqld restart

二、配置mysql主從

原理:

1、主庫授權(quán)同步帳號

在主服務(wù)器上,設(shè)置一個從數(shù)據(jù)庫的賬戶,使用REPLICATION SLAVE賦予權(quán)限,如:

set global validate_password_policy=0;GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'fxxx';

2、修改主數(shù)據(jù)庫的配置文件my.cnf

開啟BINLOG,并設(shè)置server-id的值,修改之后必須重啟Mysql服務(wù)。

#vi /etc/my.cnf-----------------------------------------配置文件-----------------------------------------#server-id表示在整個Mysql集群中保證唯一[mysqld]datadir=/data/datafilesocket=/var/lib/mysql/mysql.socklog-error=/data/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter_set_server=utf8bind-address = 0.0.0.0lower_case_table_names=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONsymbolic-links=0max_connections=900max_allowed_packet=500M#二進制配置server-id = 1log-bin = /data/log/mysql-bin.loglog-bin-index =/data/log/binlog.indexlog_bin_trust_function_creators=1expire_logs_days=7-----------------------------------------配置文件-----------------------------------------

3、查看主服務(wù)器狀態(tài)

可以查看主服務(wù)器當(dāng)前二進制日志名和偏移量,這個操作的目的是為了在從數(shù)據(jù)庫啟動后,從這個點開始進行數(shù)據(jù)的恢復(fù)

mysql> show master status G;

4、從服務(wù)器mysql配置

修改配置后需重啟數(shù)據(jù)庫服務(wù)器

#vi /etc/my.cnf---------------------------------------配置文件-------------------------------------------[mysqld]datadir=/data/datafilesocket=/var/lib/mysql/mysql.socklog-error=/data/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter_set_server=utf8bind-address = 0.0.0.0lower_case_table_names=1sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONsymbolic-links=0max_connections=900max_allowed_packet=500M#從數(shù)據(jù)庫二進制配置server-id = 2log-bin = /data/log/mysql-bin.loglog-bin-index =/data/log/binlog.indexlog_bin_trust_function_creators=1expire_logs_days=7----------------------------------------配置文件------------------------------------------

5、從庫開啟同步

5.1 從庫配置同步

配置mysql主從復(fù)制時,在從機上需要進行CHANGE MASTER TO操作,以確定需要同步的主機IP,用戶名,密碼,binlog文件,binlog位置等信息。

change master to配置和改變slave服務(wù)器用于連接master服務(wù)器的參數(shù),以便slave服務(wù)器讀取master服務(wù)器的binlog及slave服務(wù)器的relay log。同時也更新master info及relay log info信息庫。執(zhí)行該語句前如果從機上slave io及sql線程已經(jīng)啟動,需要先停止(執(zhí)行stop slave)。

change master toMASTER_HOST='xx.xx.xx',MASTER_USER='repl',MASTER_PASSWORD='xxxx',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=437;

5.2、開啟主從同步

開啟后注意查看從庫狀態(tài),

當(dāng)Slave_IO_Running和Slave_SQL_Running都為YES的時候表示主從同步設(shè)置成功。

mysql> start slave;mysql> show slave status G

篇幅有限,這塊就先介紹到這了,后面開始介紹搭建mycat的部分,感興趣的朋友可以關(guān)注下~

總結(jié)

以上是生活随笔為你收集整理的haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。