MySQL主从配置及haproxy和keepalived搭建
本篇文章主要介绍如何搭建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 status\G
# 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 status\G
以上是 0.2是主,0.4是从。上边的命令两个机器反过来分别执行一次,即可配置成 0.4主,0.2是从,这样主主配置搭建完成


配置过程中可能会出现一些错误,利用 show slave status\G 可以查看具体错误信息,不过也有可能出现命令操作太快,还未链接成功的情况。本人还遇到过主的账号(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搭建的更多相关文章
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- MySQL主从配置详解
一.mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数 ...
- mysql主从配置和galera集群
mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构 ...
- mysql主从配置实现一主一从读写分离
主从介绍Mysql主从又叫Replication.AB复制.简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步mysql主从是基于binlog,主上需开启bin ...
- mysql主从配置
引言: 双11,阿里云服务器打折,于是我忍不住又买了一台服务器,于是咱也是有两台服务器的爷们了,既然有了两台服务器,那么肯定要好好利用一下吧,那么就来玩玩mysql的主从配置吧. 准备 两台数据库服务 ...
- Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- CentOS 7下的 Mysql 主从配置
最近在玩mysql主从配置,在此记录一下 一.前言 1.安装两个虚拟机(CentOS 7).iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为 ...
- Mysql主从配置+读写分离
Mysql主从配置+读写分离 MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...
- mysql主从配置(清晰的思路)
mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本 ...
随机推荐
- 攻防世界 unserialize3
unserialize3 class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } } ...
- Python模块导入方式
import导入方式 from...import导入方式 from...import... 导入模块相当于在此文件中写了所导入函数名(对比c/c++中的.h文件来理解),所以在之后使用导入的函数直接 ...
- USB与电池切换电路图
- 微信小程序:手写日历组件
一.前言 最近公司要做一个酒店入住的小程序,不可避免的一定会使用到日历,而小程序没有内置的日历组件.在网上看了一下也没有非常适合需求的日历,于是自己写了一个. 二.代码 1. 原理分析 写一个日历只需 ...
- sticker-footer 布局
sticker-footer 1.嵌套层级不深,可直接继承自 body width:100%: height:100%; // html <body> <div id="s ...
- 访问控制中默认,public,private,protected区别?
2.继承的访问控制: (比如一个类中的protected成员对于"不同的包中的非子类"是不可见的. 说明:1.任何public的内容可以被从任何地方访问. 2.private的成员 ...
- CentOS系统Tomcat 8.5或9部署SSL证书
本文档介绍了CentOS系统下Tomcat 8.5或9部署SSL证书的操作说明. 环境准备 操作系统:CentOS 7.6 64位 Web服务器:Tomcat 8.5或9 前提条件 已从阿里云SSL证 ...
- Linux centos7系统列出systemd下所有正在运行的服务
Linux系统提供各种系统服务(如进程管理.登录.syslog.cron等)和网络服务.Linux支持不同的方法来管理服务(启动.停止.重启.在系统启动时的自动启动等),通常通过流程或服务管理器. 大 ...
- vue3 操作修改数据
vue2.x改变数据: <template> <div class="v2"> 这是数据展示: <div v-for=" ...
- 新手小白入门C语言第六章:C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 小编将会为大家逐一介 ...