MySQL | MySQL 主从复制

一、简介

MySQL 主从复制是 MySQL 自带的一个功能,他是借助 bin-log日志文件里面的
SQL 命令实现主从复制,我们在 Master 端执行了一条命令,在 Salve 端
也会执行一遍,从而达到主从复制的效果,通过主从复制可以实现数据备份,
故障转移,MySQL集群,高可用,读写分离。

Slave 数据库生成两个线程,一个 I/O 线程,一个 SQL 线程,I/O 线程请求主库bin-log,
将得到的 bin- log 日志写到 relay_log(中继日志) 文件,主库会生成一个 log Dump 线程,用来给从库IO线程传 bin-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
# 需要同步的数据库
binlog-do-db = test

在 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;

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

ABOUT

我的 Github:Github
CSDN: CSDN
个人网站: sirius blog
E-mail: [email protected]

推荐阅读
史上最全,最完美的 JAVA 技术体系思维导图总结,没有之一!
全站导航 | 我为什么要写这些博客?

发布了81 篇原创文章 · 获赞 373 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/Sirius_hly/article/details/104699019