docker安装mysql5.7 实现主从数据同步

docker 安装 mysql

拉取mysql镜像

本人使用mysql版本是5.7

docker pull mysql:5.7

拉取成功后,查询看镜像 docker images 命令
在这里插入图片描述

创建mysql容器

因为原来Linux系统3306的端口已被占用,创建主库时,使用3307的端口,从库使用3308端口

#启动主库,配置root登录密码123456
docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#启动从库,配置root登录密码123456
docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

配置主从数据库

  • 从docker进入主库容器
docker exec -it mysql-master /bin/bash 

在这里插入图片描述

  1. 连接mysql,修改 root 可以通过任何客户端连接
mysql -u root -p123456

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

执行以上命令后,使用navicat连接一下
在这里插入图片描述

  • 修改主库mysql配置
vim  /etc/mysql/mysql.conf.d/mysqld.cnf

注意:docker没有安装vim命令,执行以下命令

#更新
apt-get update

#安装vim
apt-get install vim
  • 配置内容 在mysqld.cnf中 [mysqld]添加以下配置
log-bin=mysql-bin #日志
server-id=100  # 服务器id,自定义保证唯一

在这里插入图片描述

  1. 进入从库配置
  • 重复主库配置步骤
docker exec -it mysql-slave /bin/bash 
mysql -u root -p123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 修改从库配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 配置内容 在mysqld.cnf中 [mysqld]添加以下配置
log-bin=mysql-bin #日志
server-id=101  # 服务器id,自定义保证唯一

配置主从复制

  1. 在主数据库master查看数据库状态
mysql> show master status;

在这里插入图片描述

查询 File 的值和 Position 的值,配置从库时使用

  1. 配置主从复制
  • 进行从库mysql
mysql>change master to
master_host='192.168.81.131',
master_user='root',
master_log_file='mysql-bin.000002',
master_log_pos=694,
master_port=3307,
master_password='123456';

master_host=‘x.x.x.x’ // 这里填 主机 ip
master_log_file=‘mysql-bin.000002’, // 这里填写 File 的值
master_log_pos=694,// 这里填写 Position 的值。

#开启复制功能 ,start slave不带任何参数,表示同时启动I/O 线程和SQL线程。

mysql> start slave;

stop slave #停止主从复制功能

  1. 重启一下主从数据库
docker stop mysql-master
docker start mysql-master

docker stop mysql-slave
docker start mysql-slave
  1. 在从库数据中查询一下主从连接状态
show slave status\G

在这里插入图片描述
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
显示以上结果就成功了

注意: 出现这情况Slave_IO_Running: Connecting
1.检查防火墙端口是否打开
firewall-cmd --list-ports ##查询开放端口

2.进行主数据执行:

GRANT ALL PRIVILEGES ON *.* TO root@'%'  IDENTIFIED BY '123456';

验证是否配置成功

可以在主库master创建一个新库,再创建表,插入数据,再查询从库是否已复制成功
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值