docker-compose启动mysql双机热备互为主从

news2024/11/27 18:39:00

1、环境准备

IP地址名称
192.168.123.78mysql-m
192.168.123.82mysql-s

2、安装mysql-m(192.168.123.78)

        创建M主节点,通过下面的docker编排配置创建响应的目录和文件,目录下边创建 docker-compose.ymlmy.cnf文件

docker-compose.yml

version: '3.5'
services:
  mysql:
    image: mysql:8.0.26
    restart: always
    privileged: True
    container_name: mysql
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_USER: "youxuan"
      MYSQL_PASSWORD: "123456"
      MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
    ports:
      - 3306:3306
    network_mode: host

my.cnf

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# MySQL8 的密码认证插件
default_authentication_plugin=mysql_native_password
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0
max_allowed_packet=16M
# 设置时区
default-time_zone='+8:00'
# binlog 配置
binlog_format="ROW"
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 90
max-binlog-size = 500M
# server-id 配置
server-id = 1
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4

3、安装mysql-m(192.168.123.82)

创建S节点,通过下面的docker编排配置创建响应的目录和文件,目录下边创建 docker-compose.ymlmy.cnf文件

docker-compose.yml

version: '3.5'
services:
  mysql:
    image: mysql:8.0.26
    restart: always
    privileged: True
    container_name: mysql
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_USER: "youxuan"
      MYSQL_PASSWORD: "123456"
      MYSQL_INITDB_SKIP_TZINFO: "Asia/Shanghai"
    ports:
      - 3306:3306
    network_mode: host

my.cnf

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# MySQL8 的密码认证插件
default_authentication_plugin=mysql_native_password
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0
max_allowed_packet=16M
# 设置时区
default-time_zone='+8:00'
# binlog 配置
binlog_format="ROW"
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 90
max-binlog-size = 500M
# server-id 配置
server-id = 2
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4

4、启动主备

docker-compose up -d

5、配置主从同步

登录192.168.123.78操作

[root@node1 mysql]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
badaf8b53ced   mysql:8.0.26   "docker-entrypoint.s…"   25 minutes ago   Up 17 minutes             mysql
[root@node1 mysql]# docker exec -it mysql /bin/bash
root@node1:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.26 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 |      156 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

登录192.168.123.82操作

[root@node2 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
f268cd67cbba   mysql:8.0.26   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes             mysql
[root@node2 ~]# docker exec -it mysql /bin/bash
root@node2:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.26 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      156 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6、配置主从同步

  根据mysql-s 的master 状态拼接mysql-m 设置 slave的命令:(配置82为主节点)

mysql> CHANGE MASTER TO master_host = '192.168.123.82',
    ->  master_port = 3306,
    ->  master_user = 'root',
    ->  master_password = '123456',
    ->  master_log_file = 'mysql-bin.000003',
    ->  master_log_pos = 156;
Query OK, 0 rows affected, 9 warnings (0.05 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

 根据mysql-m 的master 状态拼接mysql-s 设置 slave的命令:(配置78为主节点)

mysql> CHANGE MASTER TO master_host = '192.168.123.78',
    ->  master_port = 3306,
    ->  master_user = 'root',
    ->  master_password = '123456',
    ->  master_log_file = 'mysql-bin.000005',
    ->  master_log_pos = 156;
Query OK, 0 rows affected, 9 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

7、查看主从状态 

show slave status\G;

 

*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.123.82
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 156
               Relay_Log_File: node1-relay-bin.000002
                Relay_Log_Pos: 324
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 156
              Relay_Log_Space: 533
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
                  Master_UUID: 441b96ad-0052-11ee-85ac-000c29dbe8d4
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace: 
1 row in set, 1 warning (0.01 sec)

8、测试验证

 82创建,78同步出现

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习笔记 - 深度相机技术原理路线概览

一、深度相机的应用和原理 机器学习、人工智能、嵌入式视觉和处理技术的进步帮助创新者构建了能够在几乎没有人工监督的情况下导航环境的自主机器。此类设备的示例包括AMR(自主移动机器人),自动拖拉机,自动叉车等。 使这些设备真正自主需要它们能够在没有任何手动…

定时器搭配GPIO做定时扫描按键 -- STM32

STM32学习 定时器(TIM)定时器工作原理定时器相关参数相关函数和配置参数 通用输入/输出(GPIO)GPIO原理GPIO相关函数 实现定时扫描按键总结 在STM32F103系列的单片机应用中,定时器(TIM)和通用输入…

【名词解释】KiB和KB,MiB和MB,GiB和GB 等的区别以及1M带宽到底是多少?

目录 1. KiB和KB,MiB和MB,GiB和GB 2. 宽带速度 3. 单位换算 1. KiB和KB,MiB和MB,GiB和GB KiB和KB,MiB和MB,GiB和GB 等的区别: 1KB(kilobyte)10^31000byte, 1KiB(kibibyte)2^101024byte …

虹科干货 | 虹科Redis企业版数据库的延迟如此之小,proxy功不可没!

在Redis企业版集群的后台发生了许多事件,proxy(代理)隐藏了数据库客户端的所有活动。 大多数开发人员在构建应用程序时都会从小规模开始,使用简单的Redis开源(Redis OSS)数据库。在初期阶段,使用…

lnmp安装部署

文章目录 一、安装部署nginx二、安装部署mysql三、安装配置 PHP 解析环境四、部署 Discuz!社区论坛 Web 应用 一、安装部署nginx 1、安装依赖包 systemctl stop firewalld setenforce 0 yum -y install pcre-devel zlib-devel gcc gcc-c make2、创建运行用户 use…

设计模式之~解释器模式

简述: 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可…

基于安全产品DNS隧道流量分析

域名准备 选择哪家的云都没问题,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题。 域名添加解析记录 需要准备自己的vps作为DNS隧道的服务端,且需要添加ns记录 iodined 关闭53端口关闭开机自启 systemctl …

数据在内存中存储的真相来了!!!

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽&#xff0c…

【CMake报错】“检测到_ITERATOR_DEBUG_LEVEL和RuntimeLibrary不匹配” 的解决方案

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、…

外观模式详解:轻松搞定复杂子系统

一、概述 外观模式(Facade Pattern)是一种结构型设计模式,它为多个子系统中的操作提供一个统一的高层接口,用于访问复杂子系统的功能。其核心思想是通过一个外观类将子系统的复杂操作进行封装,客户端只需与外观类进行…

微信朋友圈如何批量发圈

做营销最重要的任务是什么? 毋庸置疑,就是发布朋友圈。 为什么要发圈呢? 发朋友圈是一种推广产品和服务的营销手段。 在如今社交媒体普及的时代,人们大多数时间都在线上,而朋友圈作为微信中的社交场景之一&#xff…

小程序开发,帮助小个体实现品牌化

在这个互联网时代,小程序成为了各大平台的必备。微信作为一款国民级的应用,如今已经拥有近10亿的用户,而小程序作为微信新推出的一款产品,已经被大家熟知。除了微信平台之外,小程序也被很多商家所青睐。因为小程序能带…

C++中《stack和queue的使用》

本文主要讲解栈和队列的常见接口的使用 文章目录 一、栈的介绍和使用1.1 stack的介绍1.2 stack的使用 二、queue的介绍和使用2.1 queue的介绍2.2 queue的使用 一、栈的介绍和使用 1.1 stack的介绍 1️⃣stack是一种容器适配器,专门用在具有后进先出操作的上下文环…

CS5366电路原理图|CS5366demobord参考电路|单芯片PD集成4K60Hz拓展坞芯片设计

ASL CS5366是Type-C转HDMI 4K60HZPDUSB3.0单芯片集成芯片,芯片方案带DSC压缩功能且最高可支持支持RGB 4:4:4 。 CS5366参数特性: 支持最高分辨率/定时4k60Hz 支持DSC v1.2a,并与前一版本向后兼容 支持DSC解码器和直通模式 嵌入式32位RISC-V…

2023年天府杯全国大学生数学建模竞赛B题中国环境问题的治理解题全过程

2023年天府杯全国大学生数学建模竞赛 B题 中国环境问题的治理 原题再现: 问题背景:   随着经济的快速发展和人口的持续增长,中国的环境问题已经成为了一个急需解决的重要问题。这些环境问题不仅对人们的健康和生活质量产生了巨大的影响&a…

笔试强训7

作者:爱塔居 专栏:笔试强训 作者简介:大三学生,希望和大家一起进步 目录 day9 day10 day9 一. 单选 1.下面程序的输出是:() String x"fmn"; x.toUpperCase(); String yx.replace(f,F); yy"wxy"; System.out…

Redis的内存策略(未完成)

过期Key处理: 1)Redis之所以性能强大,最主要的原因就是基于内存来存储,然而单节点的Redis内存不宜设置的过大,否则会影响持久化或者是主从复制的性能,可以通过修改配置文件来设置redis的最大内存,通过maxmemory 1gb&am…

为什么数字化转型就应该选择低代码?一文详解

数字化转型在这几年被反复提及,我们听得耳朵都快起茧子了。数字化在当前经济社会发展中扮演着越来越重要的角色,可以帮助企业更好地理解消费者和市场需求,更好地应对市场竞争,同时也可以提高企业效率,促进经济发展。 究…

WICC · 出海嘉年华倒计时!精彩不容错过,「指南」一手掌握

6.2 广州 WICC出海嘉年华 精彩不容错过 指南一手掌握 -高端峰会 圆桌会议- 超 有 料 话题剧透 如何在巨头林立的热门赛道成功突围? 如何在迅猛发展的新兴市场深挖价值? 如何在复杂合规政策下实现应用增长? 如何利用好底层技术优化本地化…

pip安装库提示Read timed out更换下载源

在使用pip install xx安装库的时候提示 Read timed out. 一般解决方案就两种: 1.延长timeout时间,治标不治本,谁知道到底该延长多少时间才能百分百每次安装都成功。 使用方式: pip --default-timeout1000 install 需要安装的库…