Docker中配置MySql环境

Docker中配置MySql环境

码农世界 2024-06-04 后端 155 次浏览 0个评论
  • -d: 以后台模式运行容器。
  • mysql:8.0.27: 使用的MySQL镜像的标签,这里是MySQL 8.0.27版本
    2. 创建配置文件并设置参数
    vim /app/mysql-master/conf/my.cnf
    
    [mysqld]
    ## 设置server_id, 同一个局域网中需要唯一
    server_id=1001
    ## 指定不需要同步的数据库名称
    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
    

    ps:在编写配置的时候,参数后不要留有空格,避免不必要的错误!!!

    3. 重启容器使得配置生效
    docker restart mysql-master
    
    4. 进入容器内,进行主服务中进行设置
    4.1 进入容器
    docker exec -it mysql-master /bin/bash
    
    mysql -uroot -p123456
    
    4.2 创建数据同步用户,并给同步用户授权
    create user 'slave'@'%' identified by '123456';
    grant replication slave, replication client on *.* to 'slave'@'%';
    flush privileges;
    
    4.3 查看所有用户的权限
    SELECT user, host, authentication_string, Grant_priv, Super_priv, Create_priv, Insert_priv, Update_priv, Delete_priv, Select_priv FROM mysql.user;
    

    得到这样得结果

    Docker中配置MySql环境

    4.4 查看MySQL主服务器的当前状态,包括二进制日志文件和位置
    show master status;
    

    Docker中配置MySql环境

    参数说明:

    File(文件)表示当前正在写入的二进制日志文件的名称
    Position(位置)表示在二进制日志文件中的当前写入位置
    Binlog_Do_DB一个逗号分隔的数据库列表,表示正在复制的二进制日志事件应用于哪些数据库
    Binlog_Ignore_DB一个逗号分隔的数据库列表,表示正在复制的二进制日志事件不应用于哪些数据库
    Executed_Gtid_Set表示已经执行的 GTID(全局事务标识符)集合。在MySQL的 GTID 复制中

    2.2 从服务创建配置

    1. 从服务容器创建,并且配置
    docker run -p 3308:3306 \
               --name mysql-slave \
               --privileged=true \
               -v /app/mysql-slave/log:/var/log/mysql \
               -v /app/mysql-slave/data:/var/lib/mysql \
               -v /app/mysql-slave/conf:/etc/mysql/conf.d \
    		   -v /app/mysql-master/files:/var/lib/mysql-files \
               -e MYSQL_ROOT_PASSWORD=123456 \
               -d mysql:8.0.27
    
    2. 创建配置文件并设置参数
    vim /app/mysql-slave/conf/my.cnf
    
    [mysqld]
    ## 设置server_id, 同一个局域网内需要唯一
    server_id=1002
    ## 指定不需要同步的数据库名称
    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
    

    ps:在编写配置的时候,参数后不要留有空格,避免不必要的错误!!!

    3. 重启容器使得配置生效
    docker restart mysql-slave
    
    4. 进入容器内,进行从服务中进行设置
    4.1 进入容器
    docker exec -it mysql-slave /bin/bash
    
    mysql -uroot -p123456
    
    4.2 配置从服务器,指定主服务器

    我这里使用的是 CentOS7,查看服务器地址

    ifconfig
    

    Docker中配置MySql环境

    CHANGE MASTER TO
      MASTER_HOST = '192.168.153.133',       -- 主服务器的 IP 地址
      MASTER_USER = 'slave',                  -- 用于连接主服务器的用户名
      MASTER_PASSWORD = '123456',             -- 用于连接主服务器的密码
      MASTER_PORT = 3307,                     -- 主服务器的端口号
      MASTER_LOG_FILE = 'binlog.000011',      -- 主服务器的二进制日志文件
      MASTER_LOG_POS = 1193,                  -- 主服务器的二进制日志位置
      MASTER_CONNECT_RETRY = 30,              -- 如果连接失败,重试的时间间隔(秒)
      GET_MASTER_PUBLIC_KEY = 1;              -- 启用 SSL 模式,1 表示启用
    
    4.3 启动 MySQL 主从复制
    start slave;
    
    4.4 查看 MySQL 主从复制状态
    # \G 可以将横向的结果集表格转换成纵向展示。
    # slave status的字段比较多,纵向展示比友好
    show slave status \G;
    

    Docker中配置MySql环境

    主要查看 Slave_IO_Running 和 Slave_SQL_Running是否为 Yes 状态。

    ps:如果在安装中遇到问题可以查看下面这篇文章  ↓↓↓ ↓↓↓

    2.3 安装中的遇到的问题

    如果在安装过程中遇到问题,可以查看这篇文章,这是我遇到的一些问题和解决方案。

    Docker中安装MySql的遇到的问题Docker中配置MySql环境http://t.csdnimg.cn/ujsL1

    2.4 配置完成,进行简单测试

    1. 在主服务器中创建并添加数据

    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

    深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

    因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

    Docker中配置MySql环境

    Docker中配置MySql环境

    Docker中配置MySql环境

    Docker中配置MySql环境

    Docker中配置MySql环境

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

    由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

    如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)

    Docker中配置MySql环境

    img-C2eiBllS-1712655808197)]

    [外链图片转存中…(img-DMVOYhBl-1712655808198)]

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

    由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

    如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)

    [外链图片转存中…(img-x67TdMR1-1712655808198)]

转载请注明来自码农世界,本文标题:《Docker中配置MySql环境》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,155人围观)参与讨论

还没有评论,来说两句吧...

Top