MySQL主从配置及haproxy和keepalived搭建过程解析

 更新时间:2022年05月20日 08:23:29   作者:itabel  
这篇文章主要介绍了MySQL主从配置及haproxy和keepalived搭建,本次运行环境是在docker中,也会介绍一些docker的知识,需要的朋友可以参考下

本篇文章主要介绍如何搭建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搭建的文章就介绍到这了,更多相关mysql haproxy和keepalived搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL如何判断字符串为NULL或者为空字符串

    MySQL如何判断字符串为NULL或者为空字符串

    这篇文章主要介绍了MySQL如何判断字符串为NULL或者为空字符串,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql获取排列序号的三种常用方法小结

    mysql获取排列序号的三种常用方法小结

    这篇文章主要介绍了mysql获取排列序号的三种常用方法,并通过代码示例和图文给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • 详解Mysql通讯协议

    详解Mysql通讯协议

    这篇文章对Mysql的通讯协议做了详细介绍和说明,希望我们整理的内容对你有用,一起学习下吧。
    2017-12-12
  • Mysql实现全文检索、关键词跑分的方法实例

    Mysql实现全文检索、关键词跑分的方法实例

    这篇文章主要给大家介绍了关于Mysql实现全文检索、关键词跑分的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • MySQL大库搭建主从的一种思路分享

    MySQL大库搭建主从的一种思路分享

    这篇文章主要介绍了MySQL大库搭建主从的一种思路分享,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-03-03
  • MySQL CHAR和VARCHAR该如何选择

    MySQL CHAR和VARCHAR该如何选择

    MySQL 支持字符串的数据类型并不多,但是却有多种变化形式。MySQL 5.0以后更是支持每一列字符串可以有自己的字符集以及排序规则,这使得数据表设计更为复杂。本篇介绍字符类型的数据表字段 CHAR 和 VARCHAR 该如何选择。
    2021-05-05
  • 详解如何在阿里云上安装mysql

    详解如何在阿里云上安装mysql

    mysql作为轻量级开源数据库,在企业级的应用中非常的广泛。这篇文章主要介绍了详解如何在阿里云上安装mysql,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • SQL查询至少连续n天登录的用户

    SQL查询至少连续n天登录的用户

    这篇文章介绍了SQL查询至少连续n天登录用户的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • MYSQL 的10大经典优化案例场景实战

    MYSQL 的10大经典优化案例场景实战

    在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。本文我们就聊聊MYSQL的优化
    2021-09-09
  • MySql的事务使用与示例详解

    MySql的事务使用与示例详解

    这篇文章主要介绍了MySqld的事务用法,需要的朋友可以参考下
    2014-06-06

最新评论