Docker搭建mysql主从

目录

 

1. 安装配置master

1.1. 运行mysql容器

1.2. 更新基础软件和安装vim

1.4. 创建用户并授权,用于再主从库之间同步数据

2. slave数据库安装配置

2.1. 运行容器

2.2. 进入容器内部

2.2. 更新基础软件和安装vim

2.4. 进入mysql内部,设置主从信息

2.5. 查看主从同步状态

2.6. 开启主从复制

2.7. 再次查询主从同步状态

3. 出现异常参考


1. 安装配置master

1.1. 运行mysql容器

参数介绍:

  • –name mysqlMaster3307 表示容器的名称
  • -p 3307:3306 表示将宿主机的3307端口映射到docker的3306端口
  • -e MYSQL_ROOT_PASSWORD=root 表示设置用户root的密码为root
  • mysql:latest 表示使用的镜像版本

1.2. 更新基础软件和安装vim

新增信息

退出保存

  • 配置default-time_zone = ‘+8:00’,不然当datetime类型的默认值为CURRENT_TIMESTAMP时,插入的时间会比系统时间少了8个小时

1.4. 创建用户并授权,用于再主从库之间同步数据

进入mysql内部

创建同步用户

授予权限

备注:

如果本地要用客户端比如Navicat连接,最好设置root的认证方式

否则可能 错

1.5. 查看关键信息

查看两个关键信息,File和Position字段的值,在后面的操作完成之前,需要保证master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。

 

退出mysql

退出容器

重启容器

至此,master数据库安装配置完成。

2. slave数据库安装配置

2.1. 运行容器

2.2. 进入容器内部

2.2. 更新基础软件和安装vim

新增信息

2.4. 进入mysql内部,设置主从信息

进入mysql内部

注:如果本地要用客户端比如navicat连接,最好设置root的认证方式

设置主从信息

参数介绍:

  • master_host:Master的地址,指的是容器的独立IP,可以通过下面命令查询
  • master_port: Master的端口,指的是容器的端口 ,不是映射端口
  • master_user:用于数据同步的用户
  • master_password:用户同步的用户的密码
  • master_log_file:指定Slave从哪个日志文件开始复制数据,即上文中提到的File字段的值
  • master_log_pos:指从哪个Position开始读,即上文中提到的Position字段的值
  • master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

备注:之所以设置get_master_public_key=1,是因为开启主从复制的时候可能会 出下方的异常。原因是mysql8默认使用插件caching_sha2_password,有些client连接 这个错误,需要拿到server的public key来加密password

2.5. 查看主从同步状态

正常情况下,Slave_IO_Running 和 Slave_SQL_Running 都是No,因为我们还没有开启主从复制的过程

2.6. 开启主从复制

2.7. 再次查询主从同步状态

 

然后退出重启容器。其他的slave的安装配置方法和slave的方法一样,区别就是cnf文件中的server-id不能相同罢了。

3. 出现异常参考

3.1. 使用start slave开启主从复制过程后,如果SlaveIORunning一直是Connecting,则说明主从复制一直处于拦截状态,这种情况一般是下面集中原因造成的,可以根据Last_IO_Error提示予以排除。

  • 络不通

       解决办法:检查IP,端口

  • 密码不对

       检查是否创建用于同步的用户和用户密码是否正确

  • pos不对

       检查master的position

3.2. 如果开启主从复制失败,需要修改和重启,可参考下方提示

停止主从复制

重置之前的配置信息

启动主从复制

备注:

如果不重置修改后直接启动可能会 出下方异常

 

3.3. Navicat 连接MySQL 8.0.11 出现2059错误

参考连接:https://www.cnblogs.com/lifan1998/p/9177731.html

原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

解决:更改加密规则

 

参考连接:https://blog.csdn.net/qq_32574435/article/details/105921029

 

 

 

 

 

 

 

 

问题交流群,不定期分享各种技术文档:

QQ群 :464512055

群二维码:

这是一个神器的二维码,扫描之后你会少掉一块钱。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8742 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月1日
下一篇 2020年5月1日

相关推荐