2019独角兽企业重金招聘Python工程师标准>>>

1.下拉mysql镜像:

docker pull mysql

此处选择在主机上保存配置文件,从而不会出现docker服务重启,配置文件需要重新配置的问题。

2.准备master的配置文件:

mkdir -p /usr/local/mysqlData/master/cnf
mkdir -p /usr/local/mysqlData/master/data
vim /usr/local/mysqlData/master/cnf/mysql.cnf

[mysqld]
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
secure-file-priv= NULL
server-id=1
symbolic-links=0
log-bin=mysql-bin
lower_case_table_names=1
!includedir /etc/mysql/conf.d/

3.启动master容器:

docker run -itd -p 3306:3306 --name mysqlMaster -v /usr/local/mysqlData/master/cnf/mysql.cnf:/etc/mysql/my.cnf -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged=true mysql:latest --character-set-server=utf8

将容器端口3306映射到外部端口3306,启动唯一容器名为mysqlMaster,本地目录/usr/local/mysqlData/master/cnf和/usr/local/mysqlData/master/data均挂载到容器对应目录上,连接密码为123456

4.开启远程访问:

docker exec -it mysqlMaster bash

mysql -u root -p

123456

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | caching_sha2_password | $A$005$;Yb9H*Y ?I_B&ba}CHlwIJ731GtvTcZXlmnUxWRKicnQJLL4le1KwHW1iv2 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | caching_sha2_password | $A$005$eeFC b;CHcIdH>eZkK21qbAw8DGu7SYUxWTLkkM8GprvKkEQLyAZcH/mDA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

plugin的值为:caching_sha2_password 的账户,均需要修改密码。

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;

5.准备slave的配置文件:

mkdir -p /usr/local/mysqlData/slave/cnf
mkdir -p /usr/local/mysqlData/slave/data
vim /usr/local/mysqlData/slave/cnf/mysql.cnf

[mysqld]
pid-file=/var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
secure-file-priv= NULL
server-id=2
relay_log_recovery=0
symbolic-links=0
log-bin=mysql-bin
lower_case_table_names=1
!includedir /etc/mysql/conf.d/

6.启动slave容器:

docker run -d -p 3307:3306 --name mysqlSlave -v /usr/local/mysqlData/slave/cnf/mysql.cnf:/etc/mysql/my.cnf -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged=true mysql:latest --character-set-server=utf8

7.开启远程访问:

docker exec -it mysqlSlave bash

mysql -u root -p

123456

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host      | user             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | root             | caching_sha2_password | $A$005$;Yb9H*Y ?I_B&ba}CHlwIJ731GtvTcZXlmnUxWRKicnQJLL4le1KwHW1iv2 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | caching_sha2_password | $A$005$eeFC b;CHcIdH>eZkK21qbAw8DGu7SYUxWTLkkM8GprvKkEQLyAZcH/mDA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

plugin的值为:caching_sha2_password 的账户,均需要修改密码。

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;

8.查看Master的信息:

连接上Master数据库,查询:

show master status;

9.进入slave数据库,设置对应的master:

change master to master_host='192.168.106.128',
        master_user='root',
        master_password='123456',
        master_port=3306;

10.开启主从模式:

start slave;

查看slave状态:

show slave status\G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.106.128
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000003
          Read_Master_Log_Pos: 155
               Relay_Log_File: 00642958d650-relay-bin.000002
                Relay_Log_Pos: 319
        Relay_Master_Log_File: binlog.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: 155
              Relay_Log_Space: 534
              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: 1
                  Master_UUID: 409f26fe-d9bd-11e8-9dc8-0242ac110002
             Master_Info_File: mysql.slave_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: 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
1 row in set (0.00 sec)

11.完成。

现在,在master的CRUD操作,都会同步到slave上面。

需要注意:每次重新启动docker,都需要:先分别启动master和slave容器

重启docker容器:

docker restart mysqlMaster;

docker restart mysqlSlave;

注意:

show slave status\G

\G后面不能再加分号,因为\G在功能上等同于分号;

如果加了分号,那么就是2个分号,就会出现SQL语法错误。

转载于:https://my.oschina.net/langwanghuangshifu/blog/2253333

docker mysql主从复制相关推荐

  1. Mysql主从复制(docker例子)

    一.Binlog Binlog 日志主要作用是数据恢复和主从复制.本身就是二进制格式的日志文件,网络传输无需进行协议转换.MySQL 集群的高可用,负载均衡,读写分离等功能都是基于Binlog 来实现 ...

  2. 【MySQL】基于Docker的Mysql主从复制搭建

    基于Docker的Mysql主从复制搭建 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相 ...

  3. docker mysql日志_面试官问:了解Mysql主从复制原理么?我呵呵一笑

    搭建Mysql主从同步之前,我们先来说他们之间同步的过程与原理: 同步复制过程 献上一张图,这张图诠释了整个同步过程 主从复制过程: slave节点与主节点进行连接,建立主从关系,并把从哪开始同步,及 ...

  4. 基于Docker的Mysql主从复制搭建_mysql5.7.x

    文章目录 为什么基于Docker搭建? 一.拉取镜像创建容器 1. 拉取mysql:5.7镜像 2. 创建master容器 3. 创建slave容器 4. 查看正在运行的容器 5. 此时可以使用Nav ...

  5. 借力 Docker ,三分钟搞定 MySQL 主从复制!

    hello 各位小伙伴大家好,今年 5 月份的时候,松哥和大家聊过如何搭建 MySQL 主从复制: 提高性能,MySQL 读写分离环境搭建(一) 提高性能,MySQL 读写分离环境搭建(二) 不过很多 ...

  6. 60-100-030-使用-Docker MySQL 8 主从复制

    文章目录 1.概述 2.Docker镜像 3.启动 4.防火墙端口开放 5.设置容器内MySQL配置 6.Slave连接Master 7.验证主从复制是否生效 8.查看配置 8.1 master配置 ...

  7. docker搭建mysql主从复制

    #!/bin/bash #Author: 臆想的一只猫 #Created: 2022-04-05 11:18:36 #Description: 搭建MySQL主从复制function menu() { ...

  8. 基于Docker部署Mysql主从复制-实战详解篇

    一.前言 MySQL的主从复制详细讲解,根据网上教程也踩了很多坑,浪费了一些时间 ,特地全面的梳理下基于docker构建的mysql主从复制构建过程.遇到的问题以及提供安装包样例等 希望一篇文章足以解 ...

  9. Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解

    Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...

最新文章

  1. 公司成立两周年感言_对我的副项目成立一周年的一些反思
  2. pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe)
  3. android datagrid demo
  4. 数据结构计算机复试题,计算机考研数据结构测试题(四)
  5. java语句梗_请大神给我解释一下下面这句JAVA语句的意思
  6. ioctl之FIONREAD
  7. 【Java Netty】Java NIO position limit capacity 以及 BufferUnderflowException
  8. B00010 map
  9. EXCEL 利用替换、分列、填充功能综合整理财务数据
  10. GNU make manual 翻译( 一百四十)
  11. mysql的update条件语句_MySQL UPDATE语句介绍
  12. 【SOT】SiamFC代码笔记
  13. python怎么爬取新浪微博数据中心_新浪微博数据爬取研究
  14. python入门指南by许半仙-《江火欲燃山》《这题超纲了》《Python入门指南》
  15. c语言学籍信息系统,c语言学籍信息管理系统设计
  16. 使用Natapp本地调试微信公众号H5
  17. @Value为啥取不到值
  18. 把本地项目上传到码云的整个过程(图文详解)
  19. PPO近端策略优化算法概述
  20. mfc基础教程(学习笔记)

热门文章

  1. ORACLE RAC如何增加节点
  2. 方法对象Spring MVC SimpleFormController
  3. 38、C++ Primer 4th笔记,特殊工具与技术,嵌套类
  4. 深度学习的最新研究进展(三)
  5. spring cloud分布式整合zipkin的链路跟踪
  6. LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图
  7. 机器学习 - 支持向量机
  8. POJ 1655:Balancing Act
  9. 百度Android开发面试题
  10. 过程日志定位疑难问题