博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL | MySQL 主从复制
阅读量:4104 次
发布时间:2019-05-25

本文共 1596 字,大约阅读时间需要 5 分钟。

一、简介

MySQL 主从复制是 MySQL 自带的一个功能,他是借助 bin-log日志文件里面的

SQL 命令实现主从复制,我们在 Master 端执行了一条命令,在 Salve 端
也会执行一遍,从而达到主从复制的效果,通过主从复制可以实现数据备份,
故障转移,MySQL集群,高可用,读写分离。

主从复制时,Master数据库会生成一个log dump线程,用来给Slave数据库I/O线程传递bin-log。Slave数据库会生成两个线程,一个是I/O线程,一个是SQL线程,I/O线程请求Master数据库的bin-log文件,将得到的bin-log日志写到relay-log(中继日志)文件,SQL线程会读取relay-log文件中的日志,并生成具体操作,从而实现主从复制。

二、基于 Docker 实现 MySQL 主从复制

1、安装 MySQL

运行 MySQL 容器,这里我们运行两个,一个是主(master)数据库,一个是从(slave) 数据库。

主数据库:

docker run --name master -e MYSQL_ROOT_PASSWORD=roof -p 3306:3306 -d mysql:5.7

从数据库:

docker run --name slave -e MYSQL_ROOT_PASSWORD=roof -p 3307:3306 -d mysql:5.7

在这里插入图片描述

2、配置主数据库 master

修改主数据库文件,进入容器内部

docker exec -it master /bin/bash
cd /etc/mysql

安装 vim,以便修改配置文件

apt-get update
apt-get install vim

进入 mysql 配置文件

vim my.cnf

添加以下配置

[mysqld]# 设置同一局域网内唯一IDserver-id=100  # 开启二进制日志功能log-bin=mysql-bin

重启 MySQL 服务

service mysql restart

启动 Docker 容器

docker start master

验证是否配置成功,执行以下 SQL 命令,查询配置中的 server_id

show VARIABLES like '%server_id%';

在这里插入图片描述

查询同步的文件和行数

SHOW MASTER status;

在这里插入图片描述

2、配置从数据库 slave

同理配置主数据库,添加以下配置,重启 MySQL 和 Docker 即可。

[mysqld]# 设置同一局域网内唯一IDserver_id = 102# 日志文件同步方式log-bin = mysql-bin

在 Master 数据库执行以下命令

SHOW MASTER status;

在这里插入图片描述

我们可以看到 File 和 Position,然后在 Slave 数据库执行以下命令,使从节点同步主节点数据,File 和 Position 要和主节点相同。

change master to master_host='106.13.1.171', master_user='root', master_password='roof', master_port=3306, master_log_file='mysql-bin.000001',master_log_pos= 154, master_connect_retry=30;

开始主从复制

START SLAVE;

查看效果

SHOW SLAVE STATUS;

如果需要停止主从复制

STOP SLAVE;

在这里插入图片描述

有两个 Yes 成功!我们可以在 Master 数据库创建一个数据库 test 进行测试, Slave 就会自动同步主数据库数据。

ABOUT

公众号:【星尘Pro】

github:

推荐阅读

转载地址:http://fyfsi.baihongyu.com/

你可能感兴趣的文章
项目中的jackson与json-lib使用比较
查看>>
Jackson Tree Model Example
查看>>
j2ee-验证码
查看>>
日志框架logj的使用
查看>>
js-高德地图规划路线
查看>>
常用js收集
查看>>
mydata97的日期控件
查看>>
如何防止sql注入
查看>>
maven多工程构建与打包
查看>>
springmvc传值
查看>>
Java 集合学习一 HashSet
查看>>
在Eclipse中查看Android源码
查看>>
Android-Socket登录实例
查看>>
Android使用webservice客户端实例
查看>>
层在页面中的定位
查看>>
[转]C语言printf
查看>>
C 语言 学习---获取文本框内容及字符串拼接
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>