MySQL 主从配置超详细教程

文章目录

  • 前言
  • 一、安装 MySQL
  • 二、主服务器(Master)配置
  • 三、从服务器(Slave)配置
  • 四、测试主从复制
  • 五、注意事项


前言

MySQL 主从配置是一种实用的数据库架构,主服务器处理写入操作,从服务器负责只读操作,能提升性能、加强冗余、扩展可读性 。下面以常见的 Linux 系统(CentOS 7 )、MySQL 8.0 版本为例,为你介绍配置步骤。


一、安装 MySQL

MySQL8.0 超详细安装配置教程(附安装包):https://blog.csdn.net/u014164303/article/details/145493332

在主服务器和从服务器上都执行以下操作:

  • 更新系统软件包:打开终端,输入命令sudo yum update -y ,更新系统已安装的软件包。
  • 安装 MySQL 官方仓库:执行sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm ,安装 MySQL 官方的 yum 源。
  • 安装 MySQL 服务器:输入sudo yum install -y mysql-server ,安装 MySQL 服务器程序。
  • 启动 MySQL 服务:使用sudo systemctl start mysqld ,启动 MySQL 服务。
  • 设置开机自启:执行sudo systemctl enable mysqld ,让 MySQL 服务在开机时自动启动。
    初始化 MySQL:
  • 获取临时密码:通过sudo grep ‘temporary password’ /var/log/mysqld.log ,获取初始的临时密码。
  • 登录 MySQL:输入mysql -u root -p ,然后粘贴刚才获取的临时密码登录。
  • 修改密码:运行ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘YourNewPassword’; ,把密码修改为自己设定的新密码。

二、主服务器(Master)配置

  1. 编辑 MySQL 配置文件:使用命令sudo vi /etc/my.cnf 打开配置文件,添加或修改以下内容:
  • server-id = 1 :设置服务器唯一 ID,必须是正整数,且主从服务器的 ID 不能相同。
  • log-bin = mysql-bin :开启二进制日志,用于记录数据库的更改操作。
  • expire-logs-days = 10 :指定二进制日志的过期时间,可按需调整。
  • max-binlog-size = 100M :设置二进制日志文件的最大大小。
  • binlog-do-db = your_database_name :指定允许复制的数据库,可根据实际情况修改,若要复制多个数据库,可重复此配置项。
  • 保存并退出文件后,执行sudo systemctl restart mysqld 重启 MySQL 服务使配置生效。
  1. 创建用于复制的用户:登录 MySQL,执行以下命令:

CREATE USER’repl_user’@‘%’ IDENTIFIED BY ‘YourReplicationPassword’;
GRANT REPLICATION SLAVE ON . TO’repl_user’@‘%’;
FLUSH PRIVILEGES;
上述命令创建了名为repl_user的用户,设置其密码为YourReplicationPassword ,并赋予其主从复制相关权限,最后刷新权限。

  1. 获取二进制日志信息:在 MySQL 中执行SHOW MASTER STATUS; ,记录下File和Position的值,后续配置从服务器时会用到。

三、从服务器(Slave)配置

  1. 编辑 MySQL 配置文件:用sudo vi /etc/my.cnf 打开文件,添加或修改以下配置:
    server-id = 2 :设置从服务器唯一 ID,不能与主服务器及其他从服务器相同。
    保存并退出后,执行sudo systemctl restart mysqld 重启 MySQL 服务。
  2. 配置从服务器连接主服务器:登录 MySQL,执行以下命令配置从服务器连接主服务器:

CHANGE MASTER TO
MASTER_HOST=‘主服务器IP’,
MASTER_USER=‘repl_user’,
MASTER_PASSWORD=‘YourReplicationPassword’,
MASTER_LOG_FILE=‘主服务器二进制日志文件名’,
MASTER_LOG_POS=主服务器二进制日志位置;
var code = “084a9761-2833-438f-ab96-92c3126a4ff9”

将MASTER_LOG_FILE和MASTER_LOG_POS替换为在主服务器上执行SHOW MASTER STATUS; 时记录的值。
3. 启动从服务器复制进程:在 MySQL 中执行START SLAVE; ,启动从服务器的复制进程。
4. 检查从服务器状态:执行SHOW SLAVE STATUS\G; ,确保Slave_IO_Running和Slave_SQL_Running的值都为Yes ,表示复制进程正常运行。

四、测试主从复制

在主服务器上创建测试数据库和表:登录主服务器的 MySQL,执行以下命令:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (name) VALUES (‘Test Data’);

在从服务器上检查数据复制情况:登录从服务器的 MySQL,执行以下命令:

USE test_db;
SELECT * FROM test_table;

若能看到主服务器上插入的数据,说明主从复制配置成功。

五、注意事项

  • 网络连接:主从服务器间需能正常通信,确保防火墙允许 MySQL 端口(默认 3306 )的流量通过。
  • 数据一致性:配置主从复制前,保证主从服务器数据一致,可通过数据备份和恢复来实现。
  • 日志管理:定期清理二进制日志文件,避免占用过多磁盘空间,可依据expire-logs-days和max-binlog-size配置管理。

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

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

相关文章

Python爬虫实战:获取百度学术专题文献数据并分析,为读者课题研究做参考

一、引言 在信息爆炸的当下,学术研究需要大量相关资料支撑。百度学术作为重要学术资源平台,蕴含丰富学术文献。利用爬虫技术获取百度学术特定主题文章数据,能为学术研究提供全面、及时信息。本研究旨在用 Python 实现对百度学术 “主题爬虫” 相关文章的爬取,并对数据深入…

手撕基于AMQP协议的简易消息队列-6(服务端模块的编写)

在MQServer中编写服务端模块代码 在MQServer中编写makefile文件来编译服务端模块 .PHONY: server CFLAG -I../ThirdLib/lib/include LFLAG -L../ThirdLib/lib/lib -lgtest -lprotobuf -lsqlite3 -pthread -lmuduo_net -lmuduo_base -lz server:server.cpp ../MQCommon/messag…

linux tar命令详解。压缩格式对比

1.压缩格式对比 压缩格式命令选项文件扩展名压缩率速度无压缩-cvf.tar无最快gzip-czvf.tar.gz中等较快bzip2-cjvf.tar.bz2较高较慢xz-cJvf.tar.xz最高最慢 9. 更多参考 【Linux基础】文件压缩tar命令指南tar压缩方式对比

解锁跨平台开发的新时代——Compose Multiplatform

解锁跨平台开发的新时代——Compose Multiplatform 在当今移动和桌面应用程序开发领域,跨平台解决方案是开发者们梦寐以求的工具。而由JetBrains打造的Compose Multiplatform正是这样一款现代UI框架,它基于Kotlin技术,为开发者构建高性能且美观的用户界面提供了极大的便利和…

【算法学习】递归、搜索与回溯算法(二)

算法学习: https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言: 在(一)中我们挑了几个经典例题,已经对递归、搜索与回溯算法进行了初步讲解,今天我们来进一步讲解…

HTTP请求与缓存、页面渲染全流程

文章目录 前言**1. HTTP请求与缓存处理****缓存机制**• 强缓存(Cache-Control / Expires)• 协商缓存(Last-Modified / ETag) **2. 服务器响应与数据解析****3. HTML DOM 构建****4. CSSOM 构建****5. 渲染树(Render …

限流算法学习笔记(一)Go Rate Limiter

文章目录 1. 背景与概述1.1 什么是速率限制1.2 Go Rate Limiter 的定义与价值 2. 核心思想与设计理念2.1 令牌桶算法的基本原理2.2 惰性评估设计2.3 多种处理策略的平衡2.4 简单易用的偶发控制 3. 架构设计与组件3.1 整体架构3.2 Limiter 组件3.3 Reservation 组件3.4 Limit 类…

n8n工作流自动化平台的实操:生成统计图的两种方式

1.成果展示 1.1n8n的工作流 牵涉节点:Postgres、Code、QuickChart、Edit Fields、HTTP Request 12.显示效果 2.实操过程 2.1节点说明 2.1.1Postgres节点: 注:将明细数据进行汇总。 2.1.2code节点: 注:将 查询的数…

JavaScript中数组和对象不同遍历方法的顺序规则

在JavaScript中,不同遍历方法的顺序规则和适用场景存在显著差异。以下是主要方法的遍历顺序总结: 一、数组遍历方法 for循环 • 严格按数组索引顺序遍历(0 → length-1) • 支持break和continue中断循环 • 性能最优,…

缓存(1):三级缓存

三级缓存是指什么 我们常说的三级缓存如下: CPU三级缓存Spring三级缓存应用架构(JVM、分布式缓存、db)三级缓存 CPU 基本概念 CPU 的访问速度每 18 个月就会翻 倍,相当于每年增⻓ 60% 左右,内存的速度当然也会不断…

Android setContentView()源码分析

文章目录 Android setContentView()源码分析前提setContentView() 源码分析总结 Android setContentView()源码分析 前提 Activity 的生命周期与 ActivityThread 相关,调用 startActivity() 时,会调用 ActivityThread#performLaunchActivity()&#xf…

uniapp自定义步骤条(可二开进行调试)

前言 有一个业务需求是需要一个步骤条&#xff0c;但是发现开源的都不太合适&#xff0c;所以就自己写了一个。 开始 test.vue <template><view class"authenticateRecordDetails_container"><!-- 进度 --><view class"authenticateSte…

22、近端策略优化算法(PPO)论文笔记

近端策略优化算法&#xff08;PPO&#xff09;论文笔记 一、研究背景与目标二、**方法****3.1 策略梯度基础****3.2 信任区域方法&#xff08;TRPO&#xff09;****3.3 剪切代理目标函数&#xff08;LCLIP&#xff09;****3.4 自适应KL惩罚系数****3.5 算法实现** 三、 L CLIP…

web 自动化之 Selenium 元素定位和浏览器操作

文章目录 一、元素定位的八大方法1、基于 id/name/class/tag_name 定位2、基于 a 标签元素的链接文本定位3、基于xpath定位4、css定位 二、浏览器操作1、信息获取2、 浏览器关闭3、 浏览器控制 一、元素定位的八大方法 web 自动化测试就是通过代码对网页进行测试&#xff0c;在…

前端面经 作用域和作用域链

含义&#xff1a;JS中变量生效的区域 分类&#xff1a;全局作用域 或者 局部作用域 局部作用域&#xff1a;函数作用域 和 块级作用域ES6 全局作用域:在代码中任何地方都生效 函数中定义函数中生效&#xff0c;函数结束失效 块级作用域 使用let或const 声明 作用域链:JS查…

【C/C++】RPC与线程间通信:高效设计的关键选择

文章目录 RPC与线程间通信&#xff1a;高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信&#xff1a;高效设计的关键选择 在C或分布式系统设计中&#xff0c;…

两种方法求解最长公共子序列问题并输出所有解

最长公共子序列&#xff08;Longest Common Subsequence, LCS&#xff09;是动态规划领域的经典问题&#xff0c;广泛应用于生物信息学&#xff08;如DNA序列比对&#xff09;、文本差异比对&#xff08;如Git版本控制&#xff09;等领域。本文将通过​​自顶向下递归记忆化​​…

SpringBoot应急知识学习系统开发实现

概述 一个基于SpringBoot开发的应急知识学习系统&#xff0c;该系统提供了完整的用户注册、登录、知识学习与测评功能。对于开发者而言&#xff0c;这是一个值得参考的免费Java源码项目&#xff0c;可以帮助您快速构建类似的教育平台。 主要内容 5.2 注册模块的实现 系统采…

【Python 字符串】

Python 中的字符串&#xff08;str&#xff09;是用于处理文本数据的基础类型&#xff0c;具有不可变性、丰富的内置方法和灵活的操作方式。以下是 Python 字符串的核心知识点&#xff1a; 一、基础特性 定义方式&#xff1a; s1 单引号字符串 s2 "双引号字符串" s…

第十六届蓝桥杯大赛软件赛C/C++大学B组部分题解

第十六届蓝桥杯大赛软件赛C/C大学B组题解 试题A: 移动距离 问题描述 小明初始在二维平面的原点&#xff0c;他想前往坐标(233,666)。在移动过程中&#xff0c;他只能采用以下两种移动方式&#xff0c;并且这两种移动方式可以交替、不限次数地使用&#xff1a; 水平向右移动…