首页 > 数据库 >如何保证mysql的高可用性?我们用docker来做个实践。

如何保证mysql的高可用性?我们用docker来做个实践。

时间:2024-03-19 15:33:42浏览次数:34  
标签:haproxy mm 如下 高可用性 mysql docker 执行

前言

前段时间写了一篇关于mysql双主复制的文章,在这个的基础上我们来做个高可用的实践。

前期准备,需要安装好docker、docker-compose的运行环境。

mysql如何实现双主复制?我们用docker来个做实践。-CSDN博客

一、安装haproxy

1、创建haproxy目录,执行如下命令。

mkdir -p /docker/haproxy/{haproxy-data,haproxy-sockets}
cd /docker/haproxy

2、编写haproxy配置,执行如下命令。

vim haproxy.cfg
# haproxy.cfg
global
    log /dev/log local0
    log /dev/log local1 notice
    # chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http
    # option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend mysql_frontend
    bind *:3306
    mode tcp
    default_backend mysql_backend

backend mysql_backend
    mode tcp
    balance roundrobin
    option mysql-check
    server mysql_node1 mysql-mm-1:3306 check
    server mysql_node2 mysql-mm-2:3306 check

3、编写yaml文件,内容如下;version替换成自己的docker-compose版本。

vim docker-compose.yml
version: '2.2.2'
services:
  haproxy:
    image: haproxy:2.1
    container_name: haproxy
    volumes:
      - "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg"
      - "./haproxy-sockets:/run/haproxy"
      - "./haproxy-data:/var/lib/haproxy"
    networks:
      - dbnet

networks:
  dbnet:
    name: dbnet
    driver: bridge

4、启动haproxy,执行如下命令。

docker-compose up -d

 5、检查服务是否正常运行,执行如下命令。

docker-compose ps -a

返回如下内容,说明服务已正常启动,正在运行。

6、如果服务未正常启动,可以执行如下命令获取错误信息。

docker logs haproxy

7、至此,haproxy安装完成并且已正常运行。

二、测试验证

1、在两条mysql主机都运行的情况下,连接数据库,执行如下命令。

mysql -uroot -hhaproxy -p

如果配置正常,可以正常登录,返回如下内容。

2、往users表新增一条数据,执行如下SQL。

insert into mydb.users(id,age,name)values("3","10","yiyi");

3、查看结果,执行如下SQL。

select * from mydb.users;

返回如下内容说明数据已插入。

4、现在关闭一台mysql主机(mysql-mm-1),执行如下命令。

docker stop mysql-mm-1

然后重新登录数据库、新增、查看,执行上述1-3的流程。

5、重新启动mysql-mm-1数据库,执行如下命令。

docker start mysql-mm-1

6、然后再关闭另外一台mysql主机(mysql-mm-2),执行如下命令。

docker stop mysql-mm-2

然后重新登录数据库、新增、查看,执行上述1-3的流程。

7、最后重新启动mysql-mm-2数据库,执行如下命令。

docker start mysql-mm-2

8、至此,mysql高可用的测试验证已完成。

总结

在准备好两台双主复制的mysql情况下,其实安装一个网络负载均衡器即可以实现mysql的高可用,本文中使用的是haproxy。

大体步骤也很简单

1、安装haproxy。

2、测试验证。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,大家多多包含,谢谢大家。

标签:haproxy,mm,如下,高可用性,mysql,docker,执行
From: https://blog.csdn.net/zhangbin1988/article/details/136842741

相关文章

  • mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
    时间:2018-03-2617:58:45一、首先说下本篇博客所实现功能的背景和功能是怎样的:   背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括增加新的流水分析,以及更新其他用户或者......
  • Mysql带返回值与不带返回值的2种存储过程
    时间:2018-03-3000:25:57过程1:带返回值:dropprocedureifexistsproc_addNum;createprocedureproc_addNum(inxint,inyint,outsumint)BEGINSETsum=x+y;end然后,执行过程,out输出返回值:callproc_addNum(2,3,@sum);select@sum;过程2:不带返回值:dropp......
  • 在 Docker 容器中运行 ASP.NET Core 应用
    创建Docker支持生成Dockerfile文件在解决方案asp.netcore项目下右键添加Dockerfile支持、选择目标OS为Linux,生成Dockerfile文件#Seehttps://aka.ms/customizecontainertolearnhowtocustomizeyourdebugcontainerandhowVisualStudiousesthisDockerfiletobuild......
  • Ubuntu安装指定版本的docker
    Ubuntu安装指定版本的docker1、删除docker相关组件sudoapt-getautoremovedockerdocker-cedocker-enginedocker.iocontainerdrunc2、更新apt-getsudoapt-getupdate3、安装apt依赖包,用于通过HTTPS来获取仓库sudoapt-getinstallapt-transport-httpsca-cert......
  • mysql查看数据库锁等待排查笔记
    实验版本:5.7.27 命令如下:mysql>useinformation_schema;  mysql>selectcount(*)fromINNODB_LOCK_WAITS; +----------+ |count(*)| +----------+ |      50| +----------+ 1rowinset,1warning(0.00sec)  SHOWENGINEINNODB......
  • MySQL面试内容2
    1、MySQL面试内容2、如何定位慢查询*聚合查询*多表查询*表数据量过大查询*深度分页查询表象:页面加载过慢、接口压测响应时间过长(超过1s)2.1使用开源组件调试工具:Arthas运维工具:Prometheus、Skywalking2.2使用MySQL自带的监控MySQL自带慢日志慢查询日志记录......
  • MySQL虚拟列
    当我们谈论数据库优化时,经常会遇到各种技术和策略。其中,MySQL的虚拟列(也被称为生成列或存储列)是一个引人注目的特性。它不仅可以帮助开发者提高查询效率,还能为数据表提供额外的计算功能,而无需真正改变表的结构。在这篇文章中,我们将深入探讨MySQL虚拟列的发展、原理以及应用。一......
  • 轻量化部署工具Docker:参数化启动容器与数据卷挂载的综合应用
    dockerrun中的常见参数以mysql安装为例子dockerrun-d\--namemysql\-p3306:3306\-eTZ=Asia/Shanghai\-eMYSQL_ROOT_PASSWORD=123456\mysql-d表示后台执行–name容器的名字-p宿主机和容器映射的端口-e环境变量的设置此处设置了时区和密码......
  • Mysql之刷盘机制
    一、刷盘机制总览刷盘过程mysql刷脏数据在写redo之后,逻辑跟oracle一致。checkpoint/commit->内存中的redo到redolog文件->内存中的脏数据到数据盘。但是mysql多一个环节,就是把binlog从binlogcache写入到binlog文件中。binlogcache不是共享内存,是为每个client分......
  • 配置MySQL-项目BotBattle
    目录数据库配置常用操作项目地址:https://github.com/aijisjtu/Bot-BattlegraphLRA[配置数据源]-->B[建立连接]B-->C[执行SQL语句]C-->D[处理结果]D-->E[关闭连接]配置数据源:设置数据库地址、用户名和密码等。建立连接:与数据库服务器建立通信通道......