当前位置:网站首页>Mysql5.7版本如何实现主从同步
Mysql5.7版本如何实现主从同步
2022-07-27 05:11:00 【超多多和刘宝宝的代码世界】
前言
之前说到redis的主从备份:
Mysql主从复制指的是数据可以从一个Mysql数据库节点复制到多个Mysql数据库节点。 Mysql数据库默认采用异步复制机制。这样对于master节点和slave节点来说,只能保证弱一致性。可能会存在master节点和slave节点数据不一致的情况。
redis同步第一次进行全量同步,slave将master上的数据全部复制一份。slave放弃之前的数据,将接收到的RDB文件全部导入,之后进行增量同步。
和redis不同,mysql主从同步只能基于搭建好之后的数据操作的同步,无法同步以前的数据,故需要手动同步
一、原理?
1.master节点通过foke一个线程将数据变动记录到binlog文件中
2.slave节点通过io线程每一段时间去master节点获取binlog日志数据,保存到relay log中继日志中
3.slave节点检测中继日志有更新,sql线程会将更新的内容同步到slave节点中
tip:还记得之前的日志监听器吗??
二、步骤
1.master搭建
139.9.186.192服务器作为master
1.拉镜像,今天拉5.7版本
docker pull mysql:5.7
2.运行mysql-master
docker run -d -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.更新和下载vim插件
1.docker exec -it mysql-master /bin/bash
2.apt-get update
3.apt-get install vim
4.打开my.cnf文件
vim /etc/mysql/my.cnf
5.修改my.cnf文件,添加如下文件
[mysqld] //必填
server_id=1 //如果在同一局域网下部署集群,那么多个mysql的server_id不能相同
log-bin=mysql-bin //日志名称
expire_logs_days=7 //自动清理log时间
6.重启mysql-master
7.查看是否生效
1.进入docker exec -it mysql-master /bin/bash
2.使用mysql> mysql -u root -p
3.mysql> show variables like '%log_bin%'; //log_bin日志此时为on
8.创建从库连接的用户
mysql> grant replication slave on *.* to 'slave'@'%' identified by '123456';
9.查看主数据库状态
mysql> show master status //记录下file名字和position后面从库连接使用
2.slave搭建
1.15.233.184为slave
1.拉镜像,拉5.7版本
docker pull mysql:5.7
2.运行mysql-master
docker run -d -p 3306:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
3.更新和下载vim插件
1.docker exec -it mysql-slave /bin/bash
2.apt-get update
3.apt-get install vim
4.打开my.cnf文件
vim /etc/mysql/my.cnf
5.修改my.cnf文件
[mysqld]
server_id=2
read_only=1 //将slave从库设置为只读状态,0为读写状态
6.重启salve,再次进入
7.连接到mysql,连接到master
mysql> change master to
-> master_host='139.9.186.192',
-> master_user='slave',
-> master_password='123456',
-> master_log_file='mysql-bin.000001', //填写上面要你记录的file
-> master_log_pos=406; //填写上面要你记录的position
mysql> start slave;
测试:
从master添加一个test数据库,那么slave将收到。如果在slave添加,那么master不会收到
边栏推荐
- 「PHP基础知识」字符串型(string)的使用
- Construction of layout and display of weather forecast
- Build a complete system in the maker education movement
- 我的大四
- Web2.0的巨头纷纷布局VC,Tiger DAO VC或成抵达Web3捷径
- 「PHP基础知识」PHP语句和语句块
- The written test questions of 25 large Internet companies are summarized, and I have encountered packages.
- 一本通1201——斐波那契数列
- How to judge whether a property belongs to an instance object or inherits from a constructor in JS
- 期货公司开户的具体事项
猜你喜欢

Package JWT

攻防世界-mfw

Basic layout of the page

手把手教你搭建钉钉预警机器人

You can't even do a simple function test well. What do you take to talk about salary increase with me?

Amazon evaluation autotrophic number, how to carry out systematic learning?

「PHP基础知识」PHP语句和语句块

Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式

退出登录与jsx显示
基于PG-Oracle和MySQL的三库通用sql代码开发
随机推荐
Analyze the maker education DNA needed in the new era
Native token generation encryption and decryption
页面的配置
==,===,Object.is
Initial C language -- the function of keyword static
Package JWT
Amazon evaluation autotrophic number, how to carry out systematic learning?
Self understanding and thinking
C language elementary level -- branch statement (if, switch)
「PHP基础知识」PHP中的注释
怎样才能拿到期货开户最低的手续费?
beef-xss安装与使用
Project login and registration ideas
[NPUCTF2020]ReadlezPHP 1
Elment UI usage
What happens to the new arrow function in ES6
Sealem Finance-基于Web3的全新去中心化金融平台
2022-07-26 第四小组 抽象类、接口
[CISCN2019 华东南赛区]Web11 1
[MRCTF2020]PYWebsite 1