数据库主从复制

news2024/12/26 20:54:22

一、主从复制概述

1、介绍:

主从复制是指将主数据库的 DDL 和 DML 操作写入到二进制日志中,将二进制日志传送到从库服务器,然后在从库上对这些日志重新执行(重做),从而使得从库和主库的数据保持同步。

MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库(链状复制)。

2、优点:

MySQL 复制的优点主要包含以下三个方面:

① 主库出现问题,可以快速切换到从库提供服务。

② 实现读写分离,降低主库的访问压力。

③ 可以在从库中执行备份,以避免备份期间影响主库服务。

3、原理:

① Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。

② 从库的IO线程读取主库Binlog日志中的事务,并写入到从库的中继日志Relay log中。

③ 从库的SQL线程读取中继日志Relay log中的事务,并在从库上执行,从而实现主从同步。

二、主从复制实现

1、环境准备:

准备好两台服务器之后,分别安装MySQL,关闭防火墙,并完成基础的初始化准备(安装、 密码配置等操作)工作。

master:10.1.1.10

slave:10.1.1.20

2、主库配置:

(1) 修改配置文件:

vim /etc/my.cnf

#mysq1 服务ID,用于在主从复制中标识服务器的唯一身份,保证整个集群环境中唯一。取值范围:1-2^32-1,默认为1

server-id=1

#是否只读,1 代表只读,0 代表读写

read-only=0

#忽略的数据,指不需要同步的数据库

#binlog-ignore-db=mysql

#指定同步的数据库

#binlog-do-db=db01

systemctl restart mysqld

(2) 创建远程连接账号并授权:

① 创建远程连接的用户名为itcast,密码为6666,可让任意主机连接。从库可通过此用户名和密码登录主库,获取binlog日志。

CREATE USER 'itcast'@'%' IDENTIFIED WITH mysql_native_password BY'6666' ;

如果报这个错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

则要先修改mysql的密码策略:

set global validate_password.policy=0;

set global validate_password.length=4;

② 为'itcast'@'%'用户分配主从复制权限:

GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';

(3) 查看二进制日志坐标:

show master status ;

file:事务写到了哪个文件

position:事务写到了文件的哪个位置

从库需要从binlog.000006的663之后开始主从复制。

3、从库配置:

(1) 修改配置文件:

vim /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,和主库不一样即可

server-id=2

#是否只读,1 代表只读, 0 代表读写

read-only=1

systemctl restart mysqld

(2) 设置连接主库的信息:

CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.1.1.10', SOURCE_USER='itcast', SOURCE_PASSWORD='6666', SOURCE_LOG_FILE='binlog.000006', SOURCE_LOG_POS=663;

(3) 开启主从同步:

start replica ; #8.0.22之后

start slave ; #8.0.22之前

(4) 查看主从同步状态:

show replica status\G ; #8.0.22之后

show slave status\G ; #8.0.22之前

4、验证主从同步:

在主库上创建数据库、表,并插入数据:

create database itcast;

use itcast;

create table tb_user(

id int(11) not null,

name varchar(50) not null,

sex varchar(1),

primary key (id)

)engine=innodb default charset=utf8;

insert into tb_user(id,name,sex) values(1,'Tom','1');

insert into tb_user(id,name,sex) values(2,'Trigger','0');

insert into tb_user(id,name,sex) values(3,'Dawn','1');

验证从库是否同步数据:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1612972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复合机器人在磁钢上下料中的应用及其优势分析

复合机器人是一种集成了移动机器人和工业机器人功能的设备,其独特之处在于拥有“手、脚、眼、脑”的综合能力,从而实现了更高的灵活性和操作效率。在磁钢上下料的应用场景中,复合机器人能够发挥显著的优势。 首先,复合机器人可以根…

chrome浏览器查看css样式

样式的查看 1.匹配器为灰色文本: 表示非当前选择器 2.样式有划线标识:CSS属性无效或未知 / 属性值无效 / 被其他属性覆盖的属性 3.属性以浅色文本显示且有感叹号提示:属性虽然有效,但由于CSS逻辑而没有任何影响 转自:…

判断完数(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int n 0;int i 1;int j 0;int result 1;//提示用户&#xff1b;printf("请输入一个…

Axure如何实现限制选择项数量的交互

大家经常会看到这样的功能设计&#xff1a;可以多选&#xff0c;但是限制多选。比如某招聘网站城市的选择只能选择5个。再选择第6个的时候会提示最多只能选择5项。 这个效果是我们经常会遇到的&#xff0c;在工作中也经常会遇到需要制作这样的效果。今天我们一起来看看&#xf…

Matlab无基础快速上手1(遗传算法框架)

本文用经典遗传算法框架模板&#xff0c;对matlab新手友好&#xff0c;快速上手看懂matlab代码&#xff0c;快速应用实践&#xff0c;源代码在文末给出。 基本原理&#xff1a; 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;是一种受生物学启发的优化算法…

IDEA JAVA项目如何设置JVM参数

问题背景&#xff1a; 有时候项目在本地启动时会报参数引用不到&#xff0c;如果确实找不到在哪里添加的话&#xff0c;我们可以先加JVM参数来暂时解决本地环境的调试。 解决方案&#xff1a; 编辑配置Edit Configurations 选择需要配置的项目&#xff0c;点击Modify options 选…

FileNotFoundError: [Errno 2] No such file or directory: ‘llvm-config‘

查找本地的llvm-config find / -name llvm-config 2>/dev/null 输出 /usr/local/Cellar/llvm/17.0.6_1/bin/llvm-config 执行安装命令 LLVM_CONFIG/usr/local/Cellar/llvm/17.0.6_1/bin/llvm-config pip install llvmlite # 看自己路径在哪

男朋友花费了9万多,供我上大学,现在毕业1w多想分手,怎么办?

大家好&#xff0c;我是YUAN哥&#xff01;今天要跟大家聊聊一个热门话题——爱情与金钱的关系。最近看到一个网友的发帖&#xff0c;她说自己的男朋友供她上了四年大学&#xff0c;现在她找到了好工作&#xff0c;却想分手了。这个问题引起了网友们的热议。 在爱情中&#xff…

overflow(溢出)4个属性值,水平/垂直溢出,文字超出显示省略号的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

基于SpringBoot+Vue钢材销售管理系统的设计与实现

系统介绍 为了更好地发挥本系统的技术优势&#xff0c;根据钢材销售管理系统的需求&#xff0c;本文尝试以B/S经典设计模式中的Spring Boot框架&#xff0c;JAVA语言为基础&#xff0c;通过必要的编码处理、钢材销售管理系统整体框架、功能服务多样化和有效性的高级经验和技术…

[数据结构与算法]-什么是二叉树?

二叉树是一种数据结构&#xff0c;由节点组成&#xff0c;每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。二叉树的每个节点包含一个值&#xff0c;并且左子节点的值小于等于父节点的值&#xff0c;右子节点的值大于等于父节点的值。这个性质使得二叉树在搜…

论文辅助笔记:处理geolife数据

论文笔记&#xff1a;Context-aware multi-head self-attentional neural network model fornext location prediction-CSDN博客 对应命令行里 python preprocessing/geolife.py 20 这一句 1 读取geolife数据 pfs, _ read_geolife(config["raw_geolife"], print_…

文本生成任务的评价方法BLEU 和 ROUGE

BLEU 是 2002 年提出的&#xff0c;而 ROUGE 是 2003 年提出的。这两种指标虽然存在着一些问题&#xff0c;但是仍然是比较主流的评价指标。 BLUE BLEU 的全称是 Bilingual evaluation understudy&#xff0c;BLEU 的分数取值范围是 0&#xff5e;1&#xff0c;分数越接近1&a…

Mysql The last packet sent successfully to the server was 0 milliseconds ago.

项目启动后&#xff0c;报错&#xff0c;但是我的navicat 数据库连接工具是连接上的&#xff0c;没有问题的&#xff0c;但是程序就是连接不上。端口放开了&#xff0c;防火墙也放开了 先说问题&#xff1a;是网络问题&#xff0c; 如何解决&#xff1a;因为我的机子上又跑了…

思颜肌密:匠心独蕴,传世掠影

赋予延绵岁月以华彩乐章&#xff0c;将来自时间的承诺注入生活每分每秒&#xff0c;在思颜肌密的世界里&#xff0c;恒久之美并非遥不可及&#xff0c;它是艺术&#xff0c;亦是心意。华美节日翩然而至&#xff0c;思颜肌密拉开神秘帷幕&#xff0c;在惊鸿掠影中向世人展现传世…

IO实现方式(同步阻塞、同步非阻塞、IO多路复用)

1. 同步阻塞IO 同步阻塞io在数据在数据拷贝到两个阶段都是阻塞的&#xff0c;即把socket的数据拷贝到内核缓冲区和把内核缓冲区的数据拷贝到用户态到应用程序缓冲区都是阻塞的。用户线程在这个期间不能处理其他任务。 优点&#xff1a;简单易用 缺点&#xff1a;为每一次io请…

基于Springboot+Vue的Java项目-网上超市系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

腾讯后端一面:如果需要实现一个分布式锁,你该如何实现?

更多大厂面试内容可见 -> http://11come.cn 腾讯后端一面&#xff1a;如果需要实现一个分布式锁&#xff0c;你该如何实现&#xff1f; 分布式锁 如果让你来实现一个分布式锁&#xff0c;该如何实现&#xff1f; 实现分布式锁的话&#xff0c;肯定需要一个地方去存储锁的…

Python | Leetcode Python题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left, right 0, len(nums) #采用左闭右开区间[left,right)while left < right: # 右开所以不能有,区间不存在mid left (right - left)//2 # 防止溢出…

java线程-线程池

简介 工作原理 如何获取线程池对象 构造器的参数含义 注意事项 构造器-ThreadPoolExecutor // ArrayBlockingQueue 是一个有界的阻塞队列&#xff0c;它的内部实现是一个数组。有界的意思是它的容量是有限的&#xff0c;我们必须在创建 ArrayBlockingQueue 实例的时候指定容量…