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

MySQL 主从复制部署(8.0)

什么是主从数据库


主从数据库是一种数据库架构模式,通常用于提高数据库的性能、可用性和可伸缩性。

它包括两种类型的数据库服务器:

1)主数据库(Master):主数据库是读写数据的主要数据库服务器。所有写操作(插入、更新、删除)都在主数据库上执行。主数据库负责维护数据的一致性,并将写操作的变更记录下来。

2)从数据库(Slave):从数据库是只读副本,它从主数据库中复制数据。承担一部分主库的的读数据压力,从而减轻了主数据库的负担。从数据库可以有多个,构成一个复制链,其中每个从数据库都从前一个从数据库中复制数据。

主从数据库优缺点


1)优点

  • 高可用,主库挂了,从库顶上。
  • 读写分离,主库用于写,从库用于读,从而缓解主库压力。
  • 备份数据。

2)缺点

  • 数据延迟:由于数据复制的时间延迟,从数据库可能不会立即反映主数据库中的更改。
  • 配置和维护复杂性:设置和维护主从数据库架构需要额外的工作,特别是确保数据的一致性和复制的稳定性。

主从数据库的搭建


主库配置

1)修改配置文件/etc/my.cnf

# mysql服务ID,保证整个集群环境中唯一,默认为1
server-id=1# 是否只读,1代表只读,0代表读写
read-only=0# 开启gtid(用于适配MASTER_AUTO_POSITION)
gtid-mode = ON
enforce-gtid-consistency = ON
# log-slave-updates=1

2)重启MySQL服务器

systemctl restart mysqld

3)登录mysql,创建远程连接的账号,并授予主从复制权限

# 创建s01用户,并设置密码,该用户可在任意主机连接该MySQL服务
# 删除创建的用户drop user 's01'@'%';
create user 's01'@'%' identified with mysql_native_password by 'Root@123456';# 为s01用户分配主从复制权限
grant replication slave on *.* to 's01'@'%';

4)通过指令,查看二进制日志坐标

show master status;

执行结果:

  • file:从哪个日志文件开始推送;
  • position:从哪个位置开始推送日志;
  • binlog_ignore_db:不需要同步的数据库;

从库配置

1)修改配置文件 /etc/my.cnf

# mysql服务ID,保证整个集群环境中唯一,默认为1
server-id=2# 是否只读,1代表只读,0代表读写
read-only=1# 开启gtid(用于适配MASTER_AUTO_POSITION)
gtid-mode = ON
enforce-gtid-consistency = ON
# log-slave-updates=1

2)重启MySQL服务器

systemctl restart mysqld

3)登录mysql,设置主库配置

# 使用s01用户连接
change master to source_host='127.0.0.1',source_user='s01',source_password='kingsoft.',master_port=3307,MASTER_AUTO_POSITION =1;# 使用root用户连接(二选一即可)
change master to source_host='127.0.0.1',source_user='root',source_password='kingsoft.',master_port=3307,MASTER_AUTO_POSITION =1;

注:

  • source_host:如果是同一台机器用127.0.0.1或内网ip都可以,如果是不同机器使用外网ip;
  • master_port:指定主节点的端口号,未指定时默认3306;

4)开启同步操作

# 关闭同步操作:stop slave; 
start slave;

6)查看主从同步状态

show slave status\G;

执行结果:

注:如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,则说明主从复制部署成功。

  • Master_Log_File: 从服务器正在读取的主服务器的二进制日志文件的名称。
  • Read_Master_Log_Pos: 从服务器已经读取的主服务器二进制日志的位置。
  • Relay_Master_Log_File: 已经应用到从服务器数据的主服务器二进制日志文件的名称。
  • Exec_Master_Log_Pos: 已经应用到从服务器数据的主服务器二进制日志的位置。
  • Slave_IO_Running 和 Slave_SQL_Running: 分别表示从服务器的 I/O 线程和 SQL 线程是否正在运行。
  • Last_Errno 和Last_Error: 最后一次复制时的错误号和错误信息。

注:正常情况下无法查看master.info里的内容,但可以通过show slave status指令查看其中许多重要信息。

http://www.lryc.cn/news/335613.html

相关文章:

  • 大话设计模式——16.命令模式(Command Pattern)
  • react17+18 中 setState是同步还是异步更新
  • Unity框架,ET框架8.1版本的打包流程记录
  • windows访问wsl中的docker
  • golang主要优缺点
  • 浅谈Redis和一些指令
  • AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用
  • Google Chrome 常用设置
  • 如何提高旋转花键运行稳定性?
  • 每日一题 第八十七期 洛谷 [蓝桥杯 2018 省 AB] 全球变暖
  • AI技术创业有哪些机会?
  • TensorFlow学习之:基础概念和操作
  • 最新在线工具箱网站系统源码
  • c# InvokeRequested delegate解决线程访问界面
  • 使用 Web Workers 作为setInterval的替代方案
  • python实现将日期文本化
  • react ant design 通过函数弹出 modal窗口
  • 力扣刷题Days33-209. 长度最小的子数组(js)
  • 面对DDOS攻击,有哪些解决办法
  • C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组
  • 免费-华为od-C卷-javascript-动态规划-贪心歌手.js
  • elementui 实现一个固定位置的Pagination(分页)组件
  • 紧急备考全攻略,如何短期通过PMP考试?
  • python开发poc,fofa爬虫批量化扫洞
  • 适用于 Windows 10 的 10 大免费数据恢复软件
  • zabbix企业级监控平台
  • 如何关闭WordPress的自动更新功能
  • 【分析 GClog 的吞吐量和停顿时间、heapdump 内存泄漏分析】
  • [STL-list]介绍、与vector的对比、模拟实现的迭代器问题
  • 代码随想录-035期-算法训练营【博客笔记汇总表】