资讯专栏INFORMATION COLUMN

❤️Windows10环境下Docker安装主从MySQL5.7数据库❤️

Eric / 657人阅读

1 软件环境概览

  • Docker: 20.10.7, build f0df350
  • OS: Windows11
  • WSL: 2
  • Navicat: 11.2.7
  • MySQL: 5.7

2 Docker分别安装主从MySQL5.7数据库

2.1 主数据库安装

2.1.1 配置文件

2.1.1.1 mysqld.cnf文件

创建MySQL启动的配置文件mysqld.cnf

其内容为:

#mysql master1 config [mysqld]server-id = 1        # 节点ID,确保唯一# log configlog-bin = mysql-bin    #开启mysql的binlog日志功能sync_binlog = 1         #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全binlog_format = mixed   #binlog日志格式,mysql默认采用statement,建议使用mixedexpire_logs_days = 7                           #binlog过期清理时间max_binlog_size = 100m                    #binlog每个日志文件大小binlog_cache_size = 4m                        #binlog缓存大小max_binlog_cache_size= 512m              #最大binlog缓存大binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行auto-increment-offset = 1     # 自增值的偏移量auto-increment-increment = 1  # 自增值的自增量slave-skip-errors = all #跳过从库错误

2.1.2、主数据库镜像制作

为什么要制作镜像?

因为要修改MySQL启动时加载的配置文件,配置文件在/etc/mysql/mysql.conf.d/文件夹下。直接使用官方镜像,是加载的默认配置。

2.1.2.1 Dockerfile文件制作

Dockerfile内容为:

FROM mysql:5.7COPY mysqld.cnf /etc/mysql/mysql.conf.d/

2.1.2.2 构建镜像

使用构建命令构建镜像

docker build -t mysql57:zbk .

2.1.2.3 创建网络

docker network create localnet

2.1.2.4 启动容器

使用容器命令启动

docker run --restart=always --privileged=true -d -v /e/home/mysql/data/:/var/lib/mysql  -p 33306:3306 --name mysql-master --network localnet -e MYSQL_ROOT_PASSWORD=123456 mysql5.7:zbk

注意:Windows的本地挂载文件路径,是/开头。

2.2 从数据库安装

2.2.1 配置文件

2.2.1.1 mysqld.cnf文件

创建MySQL启动的配置文件mysqld.cnf

其内容为:

[mysqld]server-id = 2log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%

2.2.2、主数据库镜像制作

2.2.2.1 Dockerfile文件制作

Dockerfile内容为:

FROM mysql:5.7COPY mysqld.cnf /etc/mysql/mysql.conf.d/

2.2.2.2 构建镜像

使用构建命令构建镜像

docker build -t mysql57:zbk001 .

2.2.2.3 启动容器

使用容器命令启动

docker run --restart=always --privileged=true -d -v /e/home/mysql/data/:/var/lib/mysql  -p 33307:3306 --name mysql-slave --network localnet -e MYSQL_ROOT_PASSWORD=123456 mysql5.7:zbk001

2.2.2.4 查看localnet网络信息

docker network inspect localnet

可以看到两个数据库容器均已组网

主数据库容器的Ip地址为172.19.0.2,从数据库容器的Ip地址为172.19.0.3

3 查看主从数据库是否按照配置文件加载

笔者通过Navicat连接到容器数据库,Ip地址是WSL2的网卡地址。

3.1 主数据库查看

输入下列命令查看

 show variables like "%log_bin%";

3.2 从数据库查看

4 主从MySQL5.7数据库配置

4.1 主数据库配置

4.1.1 创建同步用户

CREATE USER repl_user IDENTIFIED BY "repl_passwd";

4.1.2 赋予同步用户权限

grant replication slave on *.* to "repl_user"@"172.19.0.3"  identified by "repl_passwd";FLUSH PRIVILEGES;

4.1.3 查看master的状态

mysql>  show master status;+------------------+----------+--------------+------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000002 |     3306 |              | mysql            |                   |+------------------+----------+--------------+------------------+-------------------+1 row in set

后面从数据库的配置会使用到文件名mysql-bin.000002及位置3306

4.2 从数据库配置

4.2.1 更改主数据库MASTER信息

mysql> CHANGE MASTER TO MASTER_HOST = "172.19.0.2",  MASTER_USER = "repl_user", MASTER_PASSWORD = "repl_passwd",MASTER_PORT = 3306,MASTER_LOG_FILE="mysql-bin.000002",MASTER_LOG_POS=3306,MASTER_RETRY_COUNT = 60,MASTER_HEARTBEAT_PERIOD = 10000; 

4.2.2 开启同步

mysql> start slave;

4.2.3 查看slave信息

mysql> show slave status /G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 172.19.0.2                  Master_User: repl_user                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000002          Read_Master_Log_Pos: 3067               Relay_Log_File: mysql-relay-bin.000015                Relay_Log_Pos: 320        Relay_Master_Log_File: mysql-bin.000002             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: mysql.%,test.%,information_schema.%                   Last_Errno: 0                   Last_Error:                 Skip_Counter: 0          Exec_Master_Log_Pos: 3067              Relay_Log_Space: 1246              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: 0Master_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: 1                  Master_UUID: 1371c90d-0f8c-11ec-b520-0242ac110002             Master_Info_File: /var/lib/mysql/master.info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates           Master_Retry_Count: 60                  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:1 row in set (0.00 sec)ERROR:No query specified

5 验证是否同步

新建数据库iot、iot1,可以看到从数据库已经同步过来。

看完 点个赞吧 亲 ❤️ ❤️ ❤️ ❤️ ❤️

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119641.html

相关文章

  • 达梦 DM8 据库安装详细手册(Windows+Linux+Docker

    摘要:以下命令设置页大小为,簇大小为,大小写敏感,字符集为,数据库名为,实例名为,端口为。如果可用内存过少,可能导致数据库安装或启动失败。安装数据库上传安装包,解压 目...

    Moxmi 评论0 收藏0
  • 99%的读者❤都会收藏的Docker入门到实战的技术文章

    文章目录 虚拟化技术之docker技术详解(二)关于作者作者介绍前言一、Docker 概念简述1.1 Docker 是什么?1.2 Docker 版本及支持平台1.3 为什么要使用Docker 容器技术1.4 Docker VS 传统虚拟化1.5 Docker 应用场景1.6 Docker 设计目标1.7 Docker 技术架构1.8 Docker 文件系统类型介绍1.9 Docker 镜像、容器...

    Mike617 评论0 收藏0
  • ‍MySQL--【全网最细】高效导入导出数据,学会早班❤‍(工作必备 & 建

    哈喽,大家好,我是贾斯汀,欢迎进来学习啦~ 【学习背景】 在日常工作和学习MySQL时,经常涉及到MySQL数据的导入和导出,分享几种常用又方便的方式: (1)MySQL命令行source命令 (3)语法into outfile和load data infile (3)MySQL目录bin下的mysqldump工具 本文将会介绍以及测试这几种MySQL导入导出数据的方式及使用注意事项,参...

    laznrbfe 评论0 收藏0
  • 21 款爆赞 MacOS 必备软件,还不来白嫖?使用舒适度满分!!!【收藏备用】

    目录 ? 前言☀️ 软件介绍? IINA – 全格式视频播放神器? Motrix – 万能下载软件? Downie 4 – 视频下载神器? Tuxera Disk Manager – NTFS磁盘管理? Alfred 4 – 全自动效率神器? iShot && Snipaste – 全能截图工具? Parallels Desktop – 虚拟机神器? Mircosoft Remote Deskto...

    tulayang 评论0 收藏0
  • 撸完这个springboot项目,我对boot轻车熟路!【源码+视频都开源】【强烈建议收藏】❤

    上次给大家分享了一个springboot+vue的校园招聘系统,视频教程加项目源码,都是开源的,应该说很香了,今天再给大家分享一个不错的springboot的项目。 老规矩,开源,开源,开源!!! 金九银十来了,小伙伴们,冲啊!前面已经整理了很多的面试题,拿去学习吧! 1,❤️爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!❤️ 2,❤️肝完了,一天掌握数据...

    AZmake 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<