当前位置: 首页 > news >正文

【数据库管理】MySQL主从复制详解

1. 数据库主从复制

1.1 主从复制概念

数据库主从复制 是一种数据复制技术,它将一个数据库服务器(主库,Master)的数据自动同步到一个或多个其他数据库服务器(从库,Slave/Replica)。

  • 主库:负责处理所有写操作INSERT, UPDATE, DELETE)。它是数据的唯一权威来源。
  • 从库:通常负责处理读操作SELECT)。它通过复制机制从主库获取数据,保持与主库一致。

核心目标:通过数据冗余,实现读写分离,从而提升系统的性能可用性可靠性

  1. 主库记录二进制日志:主库在执行完写操作后,会将数据的变更事件(而非数据页本身)记录到其二进制日志 中。
  2. 从库拉取中继日志:从库的 I/O线程 会与主库建立连接,并读取主库的二进制日志,然后将这些日志事件写入到从库本地的中继日志 中。
  3. 从库重放中继日志:从库的 SQL线程 会读取中继日志中的事件,并在从库上重新执行这些SQL语句,从而使从库的数据与主库保持一致。
1.2 功能
  1. 读写分离
    • 场景:绝大多数应用都是“读多写少”。
    • 好处:将大量的读请求分流到多个从库上,极大地减轻了主库的负载,提升了整个系统的查询吞吐量并发处理能力
  2. 数据备份与灾难恢复
    • 场景:需要数据容灾备份。
    • 好处:从库就是一个实时、在线的逻辑备份。当主库发生故障(如硬盘损坏)时,可以快速将一个从库提升为新的主库,实现快速故障恢复,保证服务高可用。
  3. 数据分析与报表
    • 场景:需要运行复杂的统计报表或大数据分析任务。
    • 好处:这些任务通常非常消耗资源。可以在一个专用的从库上执行,避免对线上主库的业务造成性能冲击。

1.3 主从服务器配置

1.3.1 master服务器配置

环境准备:

虚拟机服务环境
Master服务器:192.168.65.131 mysql5.7
slave1服务器:192.168.65.128 mysql5.7
Slave2服务器:192.168.65.133 mysql5.7

① 安装ntp、修改配置文件

# 安装ntp软件
yum -y install ntpdate ntp    
# 时间同步
ntpdate ntp.aliyun.com        

② 开启NTP服务、关闭防火墙和增强性安全功能

systemctl start ntpd
systemctl stop firewalld.service 
setenforce 0
1.3.2 两台SLAVE服务器配置

① 安装ntp、ntpdate服务

yum install -y ntp ntpdate 
ntpdate ntp.aliyun.com 
1.3.3 配置主从同步

① master服务器修改配置文件

vi /etc/my.cnf
# 在mysqld模块下修改一下内容
# 开启二进制日志文件(之后生成的日志名为master-bin)
log_bin=master-bin     
# 开启从服务器日志同步
log_slave-updates=true
# 主服务器id为1(不可重复)
server_id = 1# 重启服务
systemctl restart mysqld# 配置规则
mysql -uroot -pmysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.65.%' IDENTIFIED BY '123456';# 刷新权限表
mysql> flush privileges;# 规则解析:GRANT REPLICATION SLAVE ON *.* TO ‘myslave’@‘192.168.65.%’ IDENTIFIED BY ‘123456’;
# 给从服务器提权,允许使用slave的身份复制master的所有数据库的所有表,并指定密码为123456# 查看master数据库状态
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      412 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)mysql> 
#以上可见产生了master-bin.000001日志文件,定位为412
#从服务器需要定位到此处进行复制

② 从服务器配置 192.168.65.133 192.168.65.128 设置都是一样的

vi /etc/my.cnf
#开启二进制日志文件
log-bin=master-bin
#设置server id为22,slave2 为23
server_id = 22
#从主服务器上同步日志文件记录到本地
relay-log=relay-log-bin
#定义relay-log的位置和名称(index索引) 
relay-log-index=slave-relay-bin.index# 开启从服务器功能
mysql -uroot -p
# slave01
mysql> change master to master_host='192.168.10.16',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=412;# slave02
change master to master_host='192.168.10.16',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=603;mysql> start slave;
Query OK, 0 rows affected (0.01 sec)# 查看从服务器状态
mysql> show slave status\G;
1.3.4 测试数据同步

① 在主服务器上创建一个数据库

mysql> create database work;
mysql> show databases;

②在两台从服务器上直接查看数据库列表

mysql> show databases;

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/611236.html

相关文章:

  • 企业网站建设算什么费用西安全网优化
  • 营销型企业网站优点文凭快速拿证
  • wordpress相对路径设置刷百度关键词排名优化
  • 如何用Appium实现移动端UI自动化测试?
  • 大连房地产网站建设微信营销成功案例分享
  • 百度基木鱼建站莱芜东风街吧百度贴吧
  • Keil编译C语言程序 | 掌握Keil编译工具,提高程序编译效率
  • 外贸网站如何做外链临安市规划建设局网站
  • LeetCode 2536.子矩阵元素加 1:二维差分数组
  • IP定位精度疑问:有些IP为什么难以达到街道级准确度?
  • 河南网站建设电话网络营销推广机构
  • flex弹性概念(一)
  • 网站登录页面怎么做的龙岩天宫山缆车收费
  • 网络技术网站js网站建设
  • AI为何跳过你?GEO中的E-E-A-T权重
  • 潍坊网站建设美工所需要的网站
  • 免费承接网站建设清新网站模板
  • 【微服务中间件】RabbitMQ 多平台安装搭建实践指南(Windows_macOS_Ubuntu_Docker 全场景)
  • 开放自己本机的mysql允许别人连接
  • LeetCode 分类刷题:3217. 从链表中移除在数组中存在的节点
  • 永康做网站公司自己做平台需要多少钱
  • 做百度手机网站快速排营销型网站建设有哪些平台
  • 算法1112
  • Java语言是解释型还是编译型 | 深入解析Java的执行方式
  • 企业网站优化服务主要围绕什么狮山网站制作
  • 二手交易网站开发的宁波建网站模板
  • K8S中nodePort、port和 targetPort的区别
  • Java/Android中BigDecimal的相关操作
  • 珠海网站建设服务哪个网站做视频有钱
  • 网站开发新闻管理系统的背景设计之家素材