MySQL | MySQL 主从复制

一、简介

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]
# 设置同一局域网内唯一ID
server-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]
# 设置同一局域网内唯一ID
server_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:https://github.com/huangliangyun

推荐阅读
史上最全,最完美的 JAVA 技术体系思维导图总结,没有之一!
全站导航 | 文章汇总!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星尘Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值