docker配置MySQL主从模式

这篇具有很好参考价值的文章主要介绍了docker配置MySQL主从模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 首先我们去准备一个MySQL8+,docker即可
  2. 创建MySQL数据卷目录

   // 主服务器容器卷创建

   mkdir -p /mydata/mysql-master/conf

  1. 创建容器并运行

  这个是主的

   docker run -d -p 3307:3306 --privileged=true -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql/conf.d -v /mydata/mysql-master/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456  --name mysql-master mysql+

4.配置文件

cd /mydata/mysql-master/conf

touch my.cnf

5.文件内容

  [client]

default_character_set=utf8

[mysql]

default-character-set=utf8mb4

[mysqld]

## 设置server_id,同一局域网中需要唯一

server_id=101

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql  

## 开启二进制日志功能

log-bin=mall-mysql-bin  

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M  

## 设置使用的二进制日志格式(mixed,statement,row)

binlog_format=mixed  

## 二进制日志过期清理时间。默认值为0,表示不自动清理。

expire_logs_days=7  

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062

## 设置编码

collation_server = utf8_general_ci

character_set_server = utf8

##解决 mysql 2059 错误,没有此问题的不加

default_authentication_plugin=mysql_native_password

  1. 重启一下容器

docker restart mysql-master

  1. 容器内配置

进入容器docker exec -it mysql-master /bin/bash

今日MySQL   mysql -uroot -p123456 ,这里记住密码是123456,复杂密码最后的时候回报错

  1. 创建从服务器连接用户

  // 创建用户名为 slave,后面从库需要连接到这个用户上,by 后面的密码和数据库密码没有关系

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

// 授权表示可以从任意 ip 使用此用户名和密码连接到主数据库

GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';

// 刷新配置

flush privileges;

// 查看日志文件 这个可以不执行

show master status;

  1. 从服务器搭建

 // 主服务器容器卷创建

mkdir -p /mydata/mysql-slave/conf

10.创建容器并运行

   docker run -d -p 3307:3306 --privileged=true -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql/conf.d -v /mydata/mysql-slave/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456  --name mysql-slavemysql+

  1. 配置文件

cd /mydata/mysql-slave/conf

touch my.cnf

  1. 文件内容

   [mysqld]

## 设置server_id,同一局域网中需要唯一

server_id=102

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql  

## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用

log-bin=mall-mysql-slave1-bin  

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M  

## 设置使用的二进制日志格式(mixed,statement,row)

binlog_format=mixed  

## 二进制日志过期清理时间。默认值为0,表示不自动清理。

expire_logs_days=7  

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062  

## relay_log配置中继日志

relay_log=mall-mysql-relay-bin  

## log_slave_updates表示slave将复制事件写进自己的二进制日志

log_slave_updates=1  

## slave设置为只读(具有super权限的用户除外)

read_only=1

## 设置编码

collation_server = utf8_general_ci

character_set_server = utf8

##解决 mysql 2059 错误,没有此问题的不加

default_authentication_plugin=mysql_native_password

  1. 重启容器

   docker restart mysql-slave

  1. 进入主服务器操作

docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

show master status;

docker配置MySQL主从模式,docker,mysql,容器

  1. 主服务器操作,查看ip地址

   1.容器内查看

    docker exec -it mysql-master /bin/bash

cat /etc/hosts

2.容器外查看

  docker ps -a

docker inspect 容器名

docker配置MySQL主从模式,docker,mysql,容器

  1. 主服务器操作:查看端口

 docker exec -it mysql-master /bin/bash

mysql -uroot -p123456

show global variables like 'port';docker配置MySQL主从模式,docker,mysql,容器

16.从服务器操作,配置从主连接

  docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

change master to master_host='主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='主机信息获取', master_log_pos= 820, master_connect_retry=30;

主机IP,为master主服务器的容器IP地址,图中标志③。

master_log_file,为master主服务器容器状态的值,图中标志①。

master_log_pos,为master主服务器容器状态的值,图中标志②。

master_port,为mater主服务器的容器内部数据库端口,图中标志④。

  1. 开启主从复制
  1. 从服务器操作,查看从数据库状态

 show slave status \G; docker配置MySQL主从模式,docker,mysql,容器

  1. 从服务器操作:启动主从复制

  docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

// 开启主从同步

start slave;

其他相关命令

Stop slave;

  1. 从服务器操作:查看从数据库状态

  show slave status \G;

docker配置MySQL主从模式,docker,mysql,容器

这样就差不多成功了,还差最后两步

  1. 主从复制验证
  1. 主数据库操作

  docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

create database testdb;

  1. 从数据库操作

 docker exec -it mysql-slave /bin/bash

mysql -uroot -p123456

show databases;

最后验证一下,开发端口 3307,3308

连接数据库验证docker配置MySQL主从模式,docker,mysql,容器

出现这个就说明成功文章来源地址https://www.toymoban.com/news/detail-776673.html

到了这里,关于docker配置MySQL主从模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【初识 Docker | 中级篇】 Docker 安装 MySQL(单机及主从配置)

    可以按照以下步骤在 Docker 中安装 MySQL ✔ 拉取 MySQL 镜像 docker pull mysql ✔ 运行 MySQL 容器 docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=your_password mysql 其中, your_password 是 MySQL 的 root 用户密码 ,可以替换为您自己的密码。这个命令会在后台运行一个名为 mysql 的容器,并将

    2024年02月10日
    浏览(27)
  • 7 - MySQL主从同步|主从同步模式

    1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型 2 - 表结构 | MySQL键值 3 - 字段约束|MySQL索引|MySQL用户管理 4 - 基础查询进阶|连接查询 5 - 视图|存储过程 6 - 数据备份与恢复|innobackupex 7 - MySQL主从同步|主从同步模式 8 - MySQL数据读写分离|MySQL多实例

    2024年02月02日
    浏览(29)
  • Docker中创建并配置MySQL、nginx、redis等容器

    1.运行 2.查看运行的镜像 1.创建本地文件夹 2.从容器nginx里复制配置文件到本地 3.查看复制后的本地文件 可以看到文件复制成功! 1.删除容器 2.重新启动nginx 并挂载到本地 3.查看运行的容器 4.修改文件 浏览器访问测试 修改首页 访问(文件映射成功!) redis中文官方网站:h

    2024年01月20日
    浏览(44)
  • mysql面试题11:讲一讲MySQL主从复制模式

    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 MySQL主从复制的配置步骤如下: 在主服务器上配置: 打开主服务器的配置文件my.cnf,启用二进制日志(binary log)功能,配置参数 log-bin ,并设置一个

    2024年02月07日
    浏览(25)
  • docker 安装的mysql修改配置文件 一、先看一下容器绑定的配置文件目录在哪

    如图,mysql容器的配置文件映射在服务器  /opt/mysql_docker/conf目录下。所以想修改容器的配置文件内容,只需要修改 /opt/mysql_docker/conf中的配置文件。  二、发现 /opt/mysql_docker/conf 目录下没有文件。 三、进入mysql容器,复制mysql的配置文件内容 复制内容如下: 四、在服务器/op

    2024年02月11日
    浏览(32)
  • 华为云云服务器评测|初始化配置SSH连接 & 安装MySQL的docker镜像 & 安装redis以及主从搭建 & 7.2版本redis.conf配置文件

    1.云耀云服务器L实例初始化配置,设置密码,ssh连接; 2.安装docker,安装运行mysql容器; 3.redis镜像的拉取,创建运行容器; 4.搭建redis主从,一主一从,7.2版本的redis.conf配置文件; 设置密码,官方要求复杂一点 进行远程登陆配置 添加开放的端口 在finalShell中新建SSH连接 系统

    2024年02月10日
    浏览(44)
  • mysql从传统模式切到GTID模式后启动主从,主从异常报错1236

    一 前言   MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到“Got fatal error 1236 from master when reading data from binary log” 这类的报错/报警。本文整理了常见的几种 error 1236 报错

    2024年02月12日
    浏览(34)
  • zabbix监控mysql容器主从同步状态并告警钉钉/企业微信

    前言:被监控的主机已经安装和配置mysql主从同步,和zabbix-agent插件。 mysql创建主从同步:http://t.csdn.cn/P4MYq centos安装zabbix-agent2:http://t.csdn.cn/fx74i  mysql主从同步,主要监控这2个参数指标: Slave_IO_Running: Yes Slave_SQL_Running: Yes 进入zabbix目录, cd /etc/zabbix 创建目录: mkdir scrip

    2024年02月14日
    浏览(31)
  • Docker mysql 主从复制

    目录 介绍:为什么需要进行mysql的主从复制 主从复制原理: ✨主从环境搭建 主从一般面试问题: 介绍:为什么需要进行mysql的主从复制 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用 「主从复制」 。 比如:在复杂的业务系统中,有

    2024年01月17日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包