mysql lvs+keepalived+mha_MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)
MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)
MySQL 一主多从半同步复制架构搭建
一、下载并安装Cmake
1、下载地址
http://www.cmake.org/cmake/resources/software.html
2、安装
[root@MySQL-15.11 xxm]# tar xf cmake-2.8.12.2.tar.gz
[root@MySQL-15.11 xxm]# cd cmake-2.8.12.2
[root@MySQL-15.11 cmake-2.8.12.2]# ./configure && make && make install
二、下载并安装配置MySQL
源码编译安装,因为MySQL的安装是一样的,以MySQL-15.11为例。
1、下载地址
http://dev.mysql.com/downloads/mysql/
MySQL Community Server ->Source code ->Generic Linux (Architecture Independent), Compressed TAR
Archive(mysql-5.5.37.tar.gz)
2、安装
2.1 创建mysql账号
[root@MySQL-15.11 xxm]# groupadd mysql
[root@MySQL-15.11 xxm]# useradd -g mysql mysql
2.2 创建相应的目录
[root@MySQL-15.11 xxm]# mkdir -p /data/log /data/tmp /data/data /var/run/mysql /usr/local/mysql
[root@MySQL-15.11 xxm]# chown -R mysql.mysql /data /var/run/mysql /usr/local/mysql
Mysql数据目录:/data/data
Mysql临时目录:/data/tmp
Mysql日志目录:/data/log
Mysql安装目录;/usr/local/mysql
Mysql进程及socket目录:/var/run/mysql
2.3 编译安装
2.3.1 编译
[root@MySQL-15.11 xxm]# tar xf mysql-5.5.37.tar.gz
[root@MySQL-15.11 xxm]# cd mysql-5.5.37
[root@MySQL-15.11 mysql-5.5.37]# cmake . -LH |more
cmake . -LH :查看支持的编译选项
[root@MySQL-15.11 mysql-5.5.37]]# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/data \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1
2.3.2 安装
[root@MySQL-15.11 mysql-5.5.37]]# make (历时15分钟)
[root@MySQL-15.11 mysql-5.5.37]]# make install
2.3.3 让MySQL的动态链接库为系统所共享
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
ldconfig
2.4 配置my.cnf文件
[client]
port=36677
socket=/var/run/mysql/mysql.sock
[mysqld]
port=36677
user=mysql
pid-file=/var/run/mysql/mysqld.pid
socket=/var/run/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/data/data
tmpdir=/data/tmp
server-id=2 #每个MySQL server的此选项都必须唯一
###begin innodb settiong###
innodb_file_per_table=1
innodb_lock_wait_timeout=500
innodb_buffer_pool_size=512M
###end innodb setting###
###key buffer size set###
key-buffer-size=10M
sort_buffer_size=10M
###key buffer size set###
###begin bin log###
log-bin=/data/log/log
expire-logs-days=90
###end bin log###
###begin general log###
#general_log=1
#general_log_file=/data/log/record.log
###end general log###
###begin error log###
log_error=/data/log/error.log
###end error log###
###begin skip name resolve###
skip_name_resolve=1
###end skip name resolve###
###being slow query log###
slow_query_log=1
long_query_time=0.1
slow_query_log_file=/data/log/slow.log
###end slow query log###
###begin replication config###
read_only=1 #MySQL主,此选项设为0,MySQL从,此选项设为1
relay_log_purge=0
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
#rpl_semi_sync_slave_enabled=1
#rpl_semi_sync_master_enabled=1
#rpl_semi_sync_master_timeout=1000 # 1 second
###end replication config###
2.5 初始化数据库
[root@MySQL-15.11 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/data
2.6 启动MySQL服务
2.6.1 mysql客户端命令
cp /etc/profile /etc/profile.bak
echo ' ' >> /etc/profile
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
2.6.2 MySQL服务端命令
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2.6.3 启动MySQL服务
#使MySQL服务开机自启动
[root@MySQL-15.11 ~]# chkconfig mysqld on
#启动MySQL服务
[root@MySQL-15.11 ~]#/etc/init.d/mysqld start
2.7 账号管理
2.7.1 删除匿名账号
mysql -e "delete from mysql.user where user=' ';delete from mysql.user where user='';flush privileges;
2.7.2 给管理员账号设密码
mysqladmin -u root password $password
2.7.3 创建复制账号
create user repl@'192.168.15.%' identified by '123456';
grant replication slave on *.* to repl@'192.168.15.%' ;
flush privileges;
2.7.3 创建MHA管理账号
create user mha_manager@'192.168.15.%' identified by '123456';
grant all on *.* to mha_manager@'192.168.15.%';
flush privileges;
2.8 半同步复制
2.8.1 安装相关插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
2.8.2 配置相关参数
#将前文提及的相关选项取消注释
/bin/sed -i 's/#rpl_semi/rpl_semi/p' /etc/my.cnf
#重启mysqld,使配置生效
/etc/init.d/mysqld restart
******到此,上述操作在4台MySQL服务器上均被执行,个别参数需注意(eg:server_id、read_only)下述2.8.3从指定主的操作仅在从服务器上执行。******
2.8.3 slave指定master
第一步:先查看Master——MySQL-15.11的二进制日志信息
[root@MySQL-15.11 ~ 10:00:27]#mysql -uroot -p123456 -e "show master status;"
+------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| log.000003 | 394 | | |
+------------+----------+--------------+------------------+
第二步:其他3台Slave指定Master,以MySQL-15.12为例
[root@MySQL-15.12 ~ 10:06:17]#mysql -uroot -p123456 -e "change master to master_host='192.168.15.11', master_user='repl', master_password='123456', master_port=36677, master_log_file='log.000003', master_log_pos=394;"
[root@MySQL-15.12 ~ 10:07:55]#mysql -uroot -p123456 -e "start slave;"
[root@MySQL-15.12 ~ 10:08:13]#mysql -uroot -p123456 -e "show slave status\G"
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.15.11
Master_User: repl
Master_Port: 36677
Connect_Retry: 60
Master_Log_File: log.000003
Read_Master_Log_Pos: 394
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 247
Relay_Master_Log_File: log.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
。。。。。。
Exec_Master_Log_Pos: 394
Relay_Log_Space: 404
。。。。。。
Master_Server_Id: 11
第三步:主、从上分别查看半复制状态
主——MySQL-15.11
[root@MySQL-15.11 ~ 10:14:32]#mysql -uroot -p123456 -e "show global status like 'rpl_semi_sync%';"
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 3 |
。。。。。。
| Rpl_semi_sync_master_status | ON |
。。。。。。
| Rpl_semi_sync_slave_status | OFF |
+--------------------------------------------+-------+
从——以MySQL-15.12为例
[root@MySQL-15.12 ~ 10:15:38]#mysql -uroot -p123456 -e "show global status like 'rpl_semi_sync%';"
+--------------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients | 0 |
。。。。。。
| Rpl_semi_sync_master_status | OFF |
。。。。。。
| Rpl_semi_sync_slave_status | ON |
+--------------------------------------------+-------+
至此,MySQL的一主三从的半同步复制架构已搭建完成,下面进行实现MySQL高可用的MHA安装及配置。
需注意的项:
1、为保证每个slave都有可能成为master,所以每个MySQL server都开启binlog日志,并设置replication账号。因为每个slave都有可能成为master,所以binlog、replication 账号、semisync的master及slave so文件安装及相关配置,所以的MySQL server都安装并配置。
2、master及slave上相关半同步复制的global variable必须在相应的so文件安装后才有效,否则设置了mysql也不认得。
Master报错:
141127 10:59:07 [ERROR] /opt/mysql/bin/mysqld: unknown variable 'rpl_semi_sync_master_enabled=1'
Slave报错:
141127 11:00:04 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'rpl_semi_sync_slave_enabled=1'
3、在每个slave上设置read_only=1,避免应用程序对slave服务器进行write。
标签:
mysql lvs+keepalived+mha_MHA+Lvs+Keepalived实现MySQL的高可用及读负载均衡_2(MySQL)相关推荐
- RedHat 7配置keepalived+LVS实现高可用的Web负载均衡
上一篇博文中我们使用keepalived实现了haproxy的高可用,但keepalived问世之初却是为LVS而设计,与LVS高度整合,LVS与haproxy一样也是实现负载均衡,结合keepali ...
- LVS+Keepalived实现高可用的ip负载均衡
LVS+Keepalived实现高可用的ip负载均衡 封装rhel7.6的母盘 LVS负载均衡技术 RS中服务机对外屏蔽vip的俩种设置方法 RS设置之使用arptables_jf软件详解 数据链路层 ...
- 基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214
高可用是个老生常谈的问题了,开源的高可用软件已经做的相当成熟了,之前也在debian下做过lvs+heartbeat的4层LB,一直很稳定(可惜流量不大啊),现在由于业务的需要,做一个基于keepal ...
- LAMP架构1-LVS+Keepalived实现高可用的ip负载均衡
文章目录 前言 一.环境更换 1.1 配置rhel7.6的母盘 相关操作图文解释 1.2 对母盘的封装 1.3 对母盘的清理和压缩(纯净出厂加节约空间) 二.LVS负载均衡技术(跑在OSI第四层:传输 ...
- keepalived+LVS实现高可用的Web负载均衡
链接:http://jiangjianlong.blog.51cto.com/3735273/1909031 转载于:https://www.cnblogs.com/jzhg/p/7878654.ht ...
- MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验
http://blog.csdn.net/wzy0623/article/details/38757561 MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验 分类: MyS ...
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】
文章原始出处:http://sofar.blog.51cto.com/353572/1601552 ================================================== ...
- 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)
不可避免的是,使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.怎么办?前面已经讲过十一篇优化方案,接下来 ...
- 高可用性、负载均衡的mysql集群解决方案
2019独角兽企业重金招聘Python工程师标准>>> 一.为什么需要mysql集群? 一个庞大的分布式系统的性能瓶颈中,最脆弱的就是连接.连接有两个,一个是客户端与后端的连接,另一 ...
- 图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境
上一次分享了Nginx相关的应用场景如下: Nginx介绍以及一些应用场景说明 在实际使用,单机版的Nginx就不能满足高可用的要求了,在这种情况下,我们使用Nginx+Keepalived(双机热 ...
最新文章
- Android RecyclerView
- 高数第六章知识点框架
- Android Security视频学习合集
- 十问十答 Ms-PL 许可证
- 查看数据库大小或者表大小
- Jupyter Notebook代码提示及补齐功能
- 多角度闲聊游戏打击感
- Unity TextMeshPro中文显示为方块
- spring.xml
- 平面设计素材的优秀网站有哪些?好用的都放在这里啦!
- win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
- Excel数据分析—制作客户画像
- 运行 Android 的笔记本 Cosmo 已众筹超 130 万美元
- 基于RWEQ模型的土壤风蚀模数估算及其变化归因分析、RWEQ模型相关的SCI论文撰写技巧
- 移动应用的必杀技:超级app+轻应用
- UWB相关技术之测距定位方法
- 基于SSM的校园医务室系统
- 巴拿赫空间的基本概念
- Tensorflow的安装与报错
- kdj超卖_kdj超卖是什么意思?kdj超买超卖区别是什么
热门文章
- .Net向Page和UpdatePanel输出JS
- 刚刚申请的博客,自己也是新手!
- jfreechart火速应用
- python udp
- Atitit algo art算法的艺术 attilax 著 va v67.docxAtitit 算法的艺术 attilax 1. 模型 文本 音视频 图像 32. 文本方面的编码算法 3
- Atitit uke协会产业分类法 艾提拉产业分类法五大类法 目录 1. 配第-克拉克定理概述 产业趋势 有形财物的生产转向无形的服务性生产	1 1.1. 农工商趋势法	1 1.2. 1940年,英
- 《Java高级Struts2》教学大纲(云计算) 版本号	编写人	版本描述 V1.0		 目录 课程教学目标	5 (一)知识目标	5 (二)能力目标	6 (三)速度目标	6
- Atitit 项目管理之时间管理之道 attilax著 艾龙 著 1. 项目活动的分解和定义	1 2. 第2章|项目活动定义与活动排序 13	1 3. 项目活动资源需求估计	2 4. 里程碑节点	2
- atiitt it学科体系化 体系树与知识点概念大总结.xlsx
- Atitit 2017年的技术趋势与未来的大技术趋势