暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker部署mysql一主一从

运维老司机 2021-05-19
514

  • 选择MySQL镜像


    docker search mysql



    • 下载MySQL5.7镜像

      docker pull mysql:5.7


      • 查看mysql镜像

        docker images



        搭建MySQL主从


        • master

          docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7


          • slave


            docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7



            Master对外映射的端口号是3307,Slave对外映射的端口号是3308



            • 查看容器

              docker ps



              • 连接测试




              • 配置Master


              进入容器  以下两种进入方式都可以

                docker exec -it 1b166e12ad6b bin/bash   #1b166e12ad6b是容器id
                docker exec -it mysql-master bin/bash #mysql-master是容器名称


                修改/etc/mysql/my.cnf 配置文件


                  vim etc/mysql/my.cnf


                  vim命令没有找到 docker内部安装vim工具 输入下面两条命令安装 vim


                    apt-get update
                    apt-get install vim


                    安装完成之后 修改my.cnf 配置文件

                      vim etc/mysql/my.cnf


                      [mysqld]
                      ## 同一局域网内注意要唯一
                      server-id=100
                      ## 开启二进制日志功能,可以随便取(关键)
                      log-bin=master-bin
                      binlog-format=ROW     // 二进制日志格式,有三种 row,statement,mixed

                      配置完重启MySQL

                        service mysql restart

                        重启会导致docker容器停止,使用如下命令重新启动容器: 

                          docker ps -a

                            docker start mysql-master
                            • 创建数据库同步账户


                            进入mysql-master容器里面

                              docker exec -it 1b166e12ad6b bin/bash

                              登录到mysql中给slave主机授权同步账号

                                mysql -uroot -p123456
                                CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
                                GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

                                到这master配置完成


                                • 配置Slave


                                与master相似 使用命令进入到容器

                                  docker exec -it mysql-slave bin/bash


                                  修改my.cnf配置文件  记得安装vim命令

                                    vim etc/mysql/my.cnf


                                    [mysqld]
                                    ## 设置server_id,注意要唯一
                                    server-id=101
                                    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
                                    log-bin=mysql-slave-bin
                                    ## relay_log配置中继日志
                                    relay_log=mysql-relay-bin
                                    read_only=1 ## 设置为只读,该项如果不设置,表示slave可读可写

                                    重启MySQL

                                      service mysql restart


                                      启动容器

                                        docker start mysql-slave


                                        开启Master-Slave主从复制


                                        首先打开两个终端分别进入master和slave容器 并进入MySQL


                                        • mysql-master操作

                                          mysql -uroot -p123456
                                          show master status;


                                          • mysql-slave操作

                                          注:记得把master_log_file='', master_log_pos= 改成自己在master机器上面查看的结果

                                            mysql -uroot -p123456
                                            change master to master_host='10.0.3.2', master_user='slave', master_password='123456', master_port=3307, master_log_file='master-bin.000001', master_log_pos=617;
                                            start slave;
                                            show slave status \G;


                                            测试是否成功


                                            • mysql-master操作

                                              create database dockertest;

                                              • mysql-slave操作

                                                show databases;



                                                slave上面出现在master上面创建的数据库证明成功。


                                                文章转载自运维老司机,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                评论