为什么选 Docker

搭建主从复制需要两个以上的MySQL, 使用 Docker 非常方便。如果以前没用过,找个简单的文档看看,熟悉一下命令。

搭建过程

1.下载镜像

  1. docker pull mysql:5.7.

2.创建服务器

  1. docker run --name mysql_master -p : -e MYSQL_ROOT_PASSWORD= -d mysql:5.7.
  2.  
  3. //通过镜像 mysql:5.7.21 启动一个名为 mysql_master 的 MySQL 服务器,端口号是3306,映射的宿主机端口号是3310,root 账号密码是123456

3.创建Slave服务器

  1. docker run --name mysql_slave -p : -e MYSQL_ROOT_PASSWORD= -d mysql:5.7.

通过 docker container ls -a  可以看到创建成功

  1. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  2. d2298154e6d4 mysql:5.7. "docker-entrypoint.s…" hours ago Up hours 0.0.0.0:->/tcp mysql_slave
  3. b8d7e74b2d31 mysql:5.7. "docker-entrypoint.s…" hours ago Up About an hour 0.0.0.0:->/tcp mysql_master

4.查看IP

  1. docker inspect --format='{{.NetworkSettings.IPAddress}}' b8d
  2. //172.17.0.2
  3. docker inspect --format='{{.NetworkSettings.IPAddress}}' d22
  4. //172.17.0.3

master IP : 172.17.0.2

slave   IP : 172.17.0.3

MySQL 配置

1. Master 配置

  1. //进入Master服务器
  2. docker exec -it b8d /bin/bash
  3. //进的入配置
  4. cd /etc/mysql
  5. //修改配置文件--my.cnf增加下面两行
  6. server_id=
  7. log-bin=mysql-bin
  8. //配置完成后重启
  9. service mysql restart
  10. //如果容器停止了,要从新启动进入,docker container start b8d
  11. //再次进入容器
  12. mysql -uroot -p
  13. //执行下面命令进行复制授权
  14. CREATE USER 'slave'@'%' IDENTIFIED BY '';
  15. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
  16. //检查命令
  17. show master status;
  18.  
  19. +------------------+----------+--------------+------------------+-------------------+
  20. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  21. +------------------+----------+--------------+------------------+-------------------+
  22. | mysql-bin. | 370 | | | |
  23. +------------------+----------+--------------+------------------+-------------------+
  24. row in set (0.00 sec)
  25.  
  26. //File Position 两个数据后面配置 Slave 会用到。

2. Slave 配置

  1. //进入Slave 容器
  2. docker exec -it d22 /bin/bash
  3. //配置mysql,增加下面
  4. server_id=
  5. log-bin=mysql-bin
  6. //重启进入执行
  7. change master to master_host='172.17.0.2', master_user='slave', master_password='', master_port=, master_log_file='mysql-bin.000002', master_log_pos=, master_connect_retry=;
  8. //启动
  9. start slave;
  10. //查看主从同步状态
  11. show slave status \G;
  12.  
  13. *************************** . row ***************************
  14. Slave_IO_State: Waiting for master to send event
  15. Master_Host: 172.17.0.2
  16. Master_User: slave
  17. Master_Port:
  18. Connect_Retry:
  19. Master_Log_File: mysql-bin.
  20. Read_Master_Log_Pos:
  21. Relay_Log_File: d2298154e6d4-relay-bin.
  22. Relay_Log_Pos:
  23. Relay_Master_Log_File: mysql-bin.
  24. Slave_IO_Running: Yes
  25. Slave_SQL_Running: Yes
  26. Replicate_Do_DB:
  27. Replicate_Ignore_DB:
  28. Replicate_Do_Table:
  29. Replicate_Ignore_Table:
  30. Replicate_Wild_Do_Table:
  31. Replicate_Wild_Ignore_Table:
  32. Last_Errno:
  33. Last_Error:
  34. Skip_Counter:
  35. Exec_Master_Log_Pos:
  36. Relay_Log_Space:
  37. Until_Condition: None
  38. Until_Log_File:
  39. Until_Log_Pos:
  40. Master_SSL_Allowed: No
  41. Master_SSL_CA_File:
  42. Master_SSL_CA_Path:
  43. Master_SSL_Cert:
  44. Master_SSL_Cipher:
  45. Master_SSL_Key:
  46. Seconds_Behind_Master:
  47. Master_SSL_Verify_Server_Cert: No
  48. Last_IO_Errno:
  49. Last_IO_Error:
  50. Last_SQL_Errno:
  51. Last_SQL_Error:
  52. Replicate_Ignore_Server_Ids:
  53. Master_Server_Id:
  54. Master_UUID: 2cf67843--11e8-bfa5-0242ac110002
  55. Master_Info_File: /var/lib/mysql/master.info
  56. SQL_Delay:
  57. SQL_Remaining_Delay: NULL
  58. Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
  59. Master_Retry_Count:
  60. Master_Bind:
  61. Last_IO_Error_Timestamp:
  62. Last_SQL_Error_Timestamp:
  63. Master_SSL_Crl:
  64. Master_SSL_Crlpath:
  65. Retrieved_Gtid_Set:
  66. Executed_Gtid_Set:
  67. Auto_Position:
  68. Replicate_Rewrite_DB:
  69. Channel_Name:
  70. Master_TLS_Version:
  71. row in set (0.00 sec)

Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes  表明配置成功。 配置 master_log_file='mysql-bin.000002',  master_log_pos=370, 这两个参数要注意 和 show

master status 输出的值保持一致,不然会出现同步错误。

Docker搭建 MySQL 主从复制的更多相关文章

  1. Docker搭建MySQL主从复制

    Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...

  2. MySQL(14)---Docker搭建MySQL主从复制(一主一从)

    Docker搭建MySQL主从复制(一主一从) 上一篇博客写了MYSQL主从复制原理 : MySQL(13)---MYSQL主从复制原理 这篇我们来写 Docker搭建MYSQL主从复制(一主一从) ...

  3. 基于Docker搭建MySQL主从复制

    摘要: 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 本篇博文相对简单,因为是初次使用D ...

  4. 基于 Docker 搭建 MySQL 主从复制

    本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 根据网上教程走还是踩了一些坑,不过所幸最终 ...

  5. Docker搭建MySQL的PXC集群

    原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...

  6. 基于Docker的Mysql主从复制

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

  7. 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

    两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...

  8. [置顶] 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……

    两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...

  9. 基于Docker的Mysql主从复制搭建

    来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg   为什么基于Docker搭建? 资源有 ...

随机推荐

  1. css 设置元素背景为透明

    要设置某一元素的背景为透明,在 chrome .firefox.opera 下是这样的: rgba 中的最后一个参数 0.4 就是想要的透明度,范围在0-1之间. 在 ie 中一般是这样的: filt ...

  2. Invoke,BeginInvoke的作用

    这两个方法主要是让给出的方法在控件创建的线程上执行 凡是使用BeginInvoke和Invoke调用的线程都是在UI主线程中执行的

  3. RNN LSTM 介绍

    [RNN以及LSTM的介绍和公式梳理]http://blog.csdn.net/Dark_Scope/article/details/47056361 [知乎 对比 rnn  lstm  简单代码] ...

  4. godaddy nginx https 配置

    一. 生成秘钥key,运行: $ openssl genrsa -des3 -out server.key 2048 1 会有两次要求输入密码,输入同一个即可 输入密码 然后你就获得了一个server ...

  5. iOS8 之后 tableview separatorInset cell分割线左对齐,ios7的方法失效了

    -(void)viewDidLayoutSubviews { if ([self.mytableview respondsToSelector:@selector(setSeparatorInset: ...

  6. springboot自定义消息转换器HttpMessageConverter

    在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制就是利用HttpMessageCo ...

  7. nginx 的 upstream timed out 问题

    nginx 作为负载服务,表现为网站访问很慢,有些文件或页面要等待到60s才会返回,我注意到60s就是超时时间,但是超时后返回状态是正常值200,网站可以正常打开,就是会一直等待到超时才打开,而且问题 ...

  8. MongoDB使用场景和局限 (转)

    MongoDB的使用场景: 1.Web应用程序.文档能表示丰富的数据结构,建模相同数据库所需的集合数量通常会比使用完全正规化关系型数据库的数据表数量要少.动态查询和二级索引能让你轻松的实现SQL开发者 ...

  9. 修改mysql数据库 允许远程访问

    首先使用root身份进入MySQL mysql>use mysql; //进入mysql表 mysql> selecthost,user from user;  //查看结果是不是root ...

  10. oracle pl/sql程序

    简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...