haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群
概述
目前業界對數據庫性能優化普遍采用集群方式,而oracle集群軟硬件投入昂貴,mysql則比較推薦用mycat去搭建數據庫集群,下面介紹一下怎么用mycat+haproxy+keepalived搭建一個屬于mysql數據庫的高可用負載均衡。
主要思路:
簡單說,實現mysql主備復制-->利用mycat實現負載均衡。
比較了常用的讀寫分離方式,推薦mycat,社區活躍,性能穩定。
以下基于centos7操作系統進行演示。
架構圖
以下是這次搭建的架構圖。
主機1與主機2上的keepalived會為該服務器搶占vip,搶占到vip后,對該主機的訪問可以通過原來的ip訪問,也可以直接通過vip訪問,當其中一臺宕機時,vip會漂移到另一臺機器上,當我們訪問VIP時haproxy會根據配置將請求分發到兩臺Mycat上實現負載均衡,并且haproxy會檢測mycat是否存活。
下面先介紹下后端數據庫的搭建部分。
一、安裝部署mysql
1、安裝依賴
yum install tcl gcc perl perl-JSON.noarch perl-Time-HiRes.x86_64 -y2、創建基礎目錄并修改文件夾的屬組
mkdir -p /data/datafilemkdir -p /data/logchown -R mysql:mysql /data3、安裝mysql數據庫,采用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.rpm4、mysql數據庫配置
4.1、修改數據庫my.cnf參數(注意server-id參數)
# 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=74.2、重啟數據庫初始化數據
service mysqld restart
4.3、修改數據庫密碼
4.3.1、查看數據庫默認密碼
#cat /data/log/mysqld.log|grep password4.3.2、更改密碼
#mysql -u root -pset global validate_password_policy=0;SET PASSWORD = PASSWORD('xxxxx');4.3.3、創建數據庫和用戶
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數據庫
service mysqld restart二、配置mysql主從
原理:
1、主庫授權同步帳號
在主服務器上,設置一個從數據庫的賬戶,使用REPLICATION SLAVE賦予權限,如:
set global validate_password_policy=0;GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'fxxx';2、修改主數據庫的配置文件my.cnf
開啟BINLOG,并設置server-id的值,修改之后必須重啟Mysql服務。
#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、查看主服務器狀態
可以查看主服務器當前二進制日志名和偏移量,這個操作的目的是為了在從數據庫啟動后,從這個點開始進行數據的恢復
mysql> show master status G;4、從服務器mysql配置
修改配置后需重啟數據庫服務器
#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 = 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主從復制時,在從機上需要進行CHANGE MASTER TO操作,以確定需要同步的主機IP,用戶名,密碼,binlog文件,binlog位置等信息。
change master to配置和改變slave服務器用于連接master服務器的參數,以便slave服務器讀取master服務器的binlog及slave服務器的relay log。同時也更新master info及relay log info信息庫。執行該語句前如果從機上slave io及sql線程已經啟動,需要先停止(執行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、開啟主從同步
開啟后注意查看從庫狀態,
當Slave_IO_Running和Slave_SQL_Running都為YES的時候表示主從同步設置成功。
mysql> start slave;mysql> show slave status G篇幅有限,這塊就先介紹到這了,后面開始介紹搭建mycat的部分,感興趣的朋友可以關注下~
總結
以上是生活随笔為你收集整理的haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: storm在运行过程中会自动调整拓扑吗_
- 下一篇: sd卡 写卡阻塞_Sony a7r4写卡