基于Docker的Mysql主从复制搭建(线下/线上)

利用Docker搭建主从服务器

首先拉取docker镜像,我们这里使用5.7版本的mysql:

docker pull mysql:5.7

然后使用此镜像启动容器,这里需要分别启动主从两个容器

Master(主):

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

Slave(从):

docker run -p 3340:3306 --name mymysql1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

使用docker ps命令查看正在运行的容器:

此时可以使用Navicat等工具测试连接mysql创建两个以上端口的连接

配置mymysql(主)

通过docker exec -it 容器id /bin/bash命令进入到mymysql容器内部,也可以通过docker exec -it 容器名称 /bin/bash命令进入。

cd /etc/mysql切换到/etc/mysql目录下,然后vim my.cnf 或者 vi my.cnf  如果没有vi或者vim

apt-get update

apt-get install vim 命令安装vim

进入my.cnf

[mysqld]

## 同一局域网内注意要唯一

server-id=100

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart完成重启。

重启mysql服务时会使得docker容器停止,我们还需要docker start 容器id 启动容器。

下一步在mymysql(主)数据库创建数据同步用户,授予用户 mymysql1  REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

CREATE USER ‘mymysql1‘@‘%‘ IDENTIFIED BY ‘123456‘;

只要出现这个表示成功然后运行下一个

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘mymysql1‘@‘%‘;

配置mymysql1(从)

和配置mymysql(主)一样,在mymysql1配置文件my.cnf中添加如下配置:

[mysqld]

## 设置server_id,注意要唯一

server-id=101

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-mymysql-bin

## relay_log配置中继日志

relay_log=edu-mysql-relay-bin

配置完成后也需要重启mysql服务和docker容器

链接mymysql(主)和mymysql1(从)

在mymysql1(从)进入mysql,mysql -u root -p    密码:123456   执行show master status;

在mymysql1中进入MySQL 执行

change master to

master_host=‘172.17.0.2‘,(主容器ip    用docker inspect 容器ID查看)

master_user=‘mymysql1‘,

master_log_file=‘mysql-bin.000001‘,(主File的值)

master_log_pos=1070,(主Position的值)

master_port=3306,

master_password=‘123456‘;

start slave;

然后执行show slave status \G;查看

这两个都是yes表示成功

在主连接中创建库在从连接中就可以看见

3.3 如在配置主从同步前master中已有数据,则需提前进行数据同步操作

登录master,执行锁表操作

mysql -u root -p1234 -h 127.0.0.1 -P 3307
FLUSH TABLES WITH READ LOCK;

将master中需要同步的db的数据dump出来

mysqldump -u root -p -h 127.0.0.1 -P 3307  mytest > mytest.dump

将数据导入slave

mysql -u root -p -h 127.0.0.1 -P 3308 mytest < mytest.dump

按前文所述步骤开启主从同步,然后解锁master

UNLOCK TABLES;

作者:yangziwen
链接:https://www.jianshu.com/p/f1c56fa3b20d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/gwhm/p/10900246.html

时间: 2024-10-25 22:33:24

基于Docker的Mysql主从复制搭建(线下/线上)的相关文章

基于Docker的MySQL主从复制搭建及原理

为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master(主): docker run -p 3339:3306 --

基于Docker的Mysql主从复制搭建

为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master(主): docker run -p 3339:3306 --

基于Docker实现MySQL主从复制

前言 MySQL的主从复制是实现应用的高性能,高可用的基础.对于数据库读操作较密集的应用,通过使数据库请求负载均衡分配到不同MySQL服务器,可有效减轻数据库压力.当遇到MySQL单点故障中,也能在短时间内实现故障切换.本文就MySQL的内建的复制功能进行阐述. 版本 MySQl: 5.7.17 CentOS: 7.4.1708 Docker: 1.13.1 概述 MySQL复制数据流程: 主库在数据更新提交事务之前,将事件异步记录到binlog二进制日志文件中,日志记录完成后存储引擎提交本次事

基于SSL的Mysql主从复制

一.实验目的: 1.跨越互联网加密复制 mysql基于SSL加密连接,为安全从服配置证书,从服拿账号到主服复制时,必须得到主服验证.双方建立SSL会话. 二.实验架构 在分布式架构中,时间必须同步 主节点: station20:192.168.1.20 从节点: station21:192.168.1.21 三.实验步骤 1.建立ssh互信 [[email protected] ~]# echo -e"192.168.1.21\tstation21\tstation21.example.com&

基于docker的php调用基于docker的mysql数据库的方法

1:建立基于docker的mysql,参考 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker?php image 在当前目录,建立Dockerfile,内容如下 FROM php:7.0-cli MAINTAINER Terry Zhang <[email protected]> RUN docker-php-ext-install pdo_mysql mysqli 3.建立php镜像 docker build -t php-mysql . 4. 编写php脚本

基于docker、kubernetes部署openstack到atomic系统上

声明: 本人阅读笔记,翻译类文章仅作意译.如有不对之处,请指出. 需要更本源的理解,请自行阅读英文. 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 新浪微博:寻觅神迹 内容系本人学习.研究和总结,如有雷同,实属荣幸! 基于docker.kubernetes部署openstack到atomic系统上 openstack的服务定义,是不是看起来很简洁? openstack的实际组件构成,是不是看起来很复杂? 所有的openstack

Docker实现MySQL主从复制(主主复制同理)

因为最近在学习MySQL,看到很多地方有"分库分表","读写分离"的字眼,就想尝试一下吧! 首先,因为本人经济能力有限,买不起那么多服务器,所以就借用Docker来搭建虚拟机来作为两台服务器. 一.准备主从服务器 1.创建主服务器 $docker run -it --name=mysql_master ubuntu:14.04 /bin/bash 2.创建从服务器 $docker run -it --name=mysql_slave ubuntu:14.04 /bi

使用docker部署mysql主从复制集群

一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3308:3306 --name mysql-sl

使用docker配置mysql主从复制

MySQL的主从复制之前也没做过,刚百度了下发现并不算难,但同时开两个虚机挺麻烦,于是我就想到了使用docker来配置MySQL主从复制. 环境:docker,centos,MySQL镜像,这里我直接pull了一个镜像 运行一个master容器 docker run -d --name master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql docker ps -a 这里将master容器的3306端口映射给主机的3307端口,-e代表设置环境