当前位置:网站首页>MYSQL主从复制
MYSQL主从复制
2022-08-01 00:16:00 【三月不灭】
主从复制
一、什么是主从复制
将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。
基本原理:
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。
MySQL复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到日志的数据。
当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新的更新。从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。
slave会从master读取binlog来进行数据同步
二、主从复制的作用
1、主数据库出现问题,可以切换到从数据库。
2、可以进行数据库层面的读写分离。
3、可以在从数据库上进行日常备份。
三、复制过程

Binary log:主数据库的二进制日志。
Relay log:从服务器的中继日志。
**第一步:**master在每个事务更新数据完成之前,将该操作记录串行地写入到binlog文件中。
**第二步:**salve开启一个I/O Thread,该线程在master打开一个普通连接,主要工作是binlog dump process。如果读取的进度已经跟上了master,就进入睡眠状态并等待master产生新的事件。I/O线程最终的目的是将这些事件写入到中继日志中。
**第三步:**SQL Thread会读取中继日志,并顺序执行该日志中的SQL事件,从而与主数据库中的数据保持一致。

主从复制过程演示:
1.要求主从机mysql版本一致且后台以服务运行,首先确保两台主机能相互通信,然后修改配置文件
2.主从配置在[mysqld]节点下,都是小写
3.主机修改my.ini配置文件
【必须】1.主服务器唯一ID
server-id=1
【必须】2.启用二进制日志
log-bin=自己本地的路径/mysqlbin
log-bin=D:/devSoft/MySQLServer5.5/data/mysqlbin
【可选】3.【可选】启用错误日志
log-err=自己本地的路径/mysqlerr #每次启动mysql,shutdown都会记录在里面,如果出错了,可在这里看
log-err=D:/devSoft/MysQLServer5.5/data/mysqlerr
【可选】4.根目录
basedir="自己本地路径"
basedir="D:/devSoft/MySQLServer5.5/"
【可选】5.临时目录
tmpdir="自己本地路径"
tmpdir="D:/devSoft/MySQLServer5.5/"
【可选】6.数据目录
datadir="自己本地路径/Data/"
datadir="D:/devSoft/MySQLServer5.5/Data/"
主机,读写都可以
7.read-only=0
【可选】8.设置不要复制的数据库
binlog-ignore-db=mysql
【可选】9.设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字


4.从机修改my.cnf配置文件
(必须)从服务器唯一ID
(非必须)启用二进制日志

【因修改过配置文件,从机+主机需要重启后台mysql后台服务】
修改完配置service mysql restart
5.主从机都关闭防火墙
windows手动关闭
虚拟机Linux防火墙 service iptables stop
在windows主机上建立账户并授权slave【数据库数据很重要,正常不允许其他机器随便一个用户都可以访问,需要授权】
允许从机192.168.14.167以zhangshan这个用户名,123456密码登录到主机

Position=341:即主机的数据库从mysqlbin的341行开始copy,磁盘有一个磁柱,从哪个磁道开始复制
7.在Linux从机上配置需要复制的主机
CHANGE MASTER TO MASTER_HOST='192.168.14.165',
MASTER_USER='zhangsan',
MASTER PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字’,MASTER_LOG_POS=具体值;

8.主机新建库,新建表,insert记录,从机复制


如何停止从服务复制功能
stop salve;
注意点:一般stop slave情况就是1、想停止复制功能,2、数据库赋值功能没有正常启动,
slave_10_Running : Yes S1ave_sQL_Running : Yes不是这种情况,就需要先停止,重新查主机的show slave status,然后重新按显示的参数重新设置如下赋值信息
CHANGE MASTER TO MASTER_HOST='192.168.14.165',
MASTER_USER='zhangsan',
MASTER PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字’,MASTER_LOG_POS=具体值;
边栏推荐
猜你喜欢

Matlab/ArcGIS processing GPM global monthly precipitation data

Daily--Kali opens SSH (detailed tutorial)

Recommendation system: Summary of common evaluation indicators [accuracy rate, precision rate, recall rate, hit rate, (normalized depreciation cumulative gain) NDCG, mean reciprocal ranking (MRR), ROC

消息队列存储消息数据的MySQL表格

2022年最新重庆建筑八大员(电气施工员)模拟题库及答案
Carefully organize 16 MySQL usage specifications to reduce problems by 80% and recommend sharing with the team

南方科技大学:Xiaoying Tang | AADG:视网膜图像分割领域泛化的自动增强

Flink 1.13(八)CDC

pycaret源码分析:下载数据集\Lib\site-packages\pycaret\datasets.py

面试突击69:TCP 可靠吗?为什么?
随机推荐
Matlab/Arcgis processing nc data
什么是动态规划,什么是背包问题
Force buckle 2326, 197
消息队列消息存储设计(架构实战营 模块八作业)
An open source and easy-to-use flowchart drawing tool drawio
编写方法将一个数组扁平化并且去重和递增排序
One line of code to solve CoreData managed object properties change in SwiftUI problem of animation effects
NIO programming
虹科分享|如何用移动目标防御技术防范未知因素
[Reading Notes -> Data Analysis] 02 Data Analysis Preparation
Program processes and threads (concurrency and parallelism of threads) and basic creation and use of threads
Qlib quantitative source analysis: qlib/qlib/contrib/model/GBDT py
C# Rectangle基本用法和图片切割
Shell common script: Nexus batch upload local warehouse script
基于mysql的消息队列设计
Matlab / ArcGIS 处理GPM全球月均降水数据
浏览器下载快捷方式到桌面(PWA)
消息队列存储消息数据的MySQL表格
Pylint检查规则中文版
When can I use PushGateway