MySQL 安装与配置教程:单机、主从复制与集群模式
目录
- MySQL 简介
- MySQL 安装
- MySQL 基础配置
- MySQL 主从复制配置
- MySQL 集群配置
- 总结
1. MySQL 简介
MySQL 是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高可用性和读写分离)以及集群模式(用于分布式部署和高扩展性)。
2. MySQL 安装
MySQL 可以安装在各种操作系统上,这里介绍在 Ubuntu 和 CentOS 系统上的安装方法。
2.1 在 Ubuntu 上安装 MySQL
-
更新包列表并安装 MySQL:
sudo apt-get update sudo apt-get install mysql-server -
安装完成后,MySQL 服务会自动启动。你可以通过以下命令检查 MySQL 服务状态:
sudo systemctl status mysql
2.2 在 CentOS 上安装 MySQL
-
添加 MySQL 官方 YUM 源并安装 MySQL:
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install mysql-community-server -
安装完成后,启动 MySQL 服务并设置开机自启:
sudo systemctl start mysqld sudo systemctl enable mysqld -
检查 MySQL 服务状态:
sudo systemctl status mysqld
3. MySQL 基础配置
3.1 安全初始化
在安装完 MySQL 后,推荐进行安全初始化,以确保数据库的安全性。
-
获取 MySQL 默认生成的 root 密码:
sudo grep 'temporary password' /var/log/mysqld.log -
运行 MySQL 安全配置脚本:
sudo mysql_secure_installation根据提示设置 root 密码,并禁用匿名用户、删除测试数据库、禁用远程 root 登录等。
3.2 修改配置文件
MySQL 的配置文件通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf,可以根据需求进行修改。
一些常见的配置项包括:
-
bind-address: MySQL 监听的 IP 地址,默认是
127.0.0.1。可以修改为0.0.0.0以允许外部访问。bind-address = 0.0.0.0 -
max_connections: 设置最大连接数。
max_connections = 200 -
default-authentication-plugin: 设置默认的认证插件。MySQL 8.0 默认使用
caching_sha2_password,但你可以更改为mysql_native_password以支持旧的客户端:default-authentication-plugin = mysql_native_password
修改完成后,重启 MySQL 服务以应用更改:
sudo systemctl restart mysql
4. MySQL 主从复制配置
MySQL 主从复制(Master-Slave Replication)是实现数据冗余和负载均衡的重要机制。在主从模式中,主服务器负责写操作,从服务器负责读操作,实现读写分离和故障转移。
4.1 配置主服务器(Master)
-
编辑主服务器上的 MySQL 配置文件
my.cnf,添加如下配置:[mysqld] server-id = 1 log-bin = /var/log/mysql/mysql-bin.log binlog-format = ROWserver-id:为每个 MySQL 服务器指定一个唯一的 ID,主服务器和从服务器的 ID 必须不同。log-bin:启用二进制日志(Binary Log),用于记录数据库的更改操作。
-
创建一个复制用户,并为其授予复制权限:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES; -
获取主服务器的二进制日志文件名和位置:
SHOW MASTER STATUS;记下输出的
File和Position,在配置从服务器时会用到。 -
重启 MySQL 服务:
sudo systemctl restart mysql
4.2 配置从服务器(Slave)
-
编辑从服务器上的 MySQL 配置文件
my.cnf,添加如下配置:[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log -
登录从服务器的 MySQL 控制台,执行如下命令以配置主从复制:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replica_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;MASTER_HOST:主服务器的 IP 地址。MASTER_LOG_FILE和MASTER_LOG_POS:使用在主服务器上获取的日志文件名和位置。
-
启动从服务器的复制进程:
START SLAVE; -
检查从服务器的复制状态:
SHOW SLAVE STATUS\G;确保
Slave_IO_Running和Slave_SQL_Running都显示为Yes。
5. MySQL 集群配置
MySQL 集群是一个分布式数据库架构,提供高可用性和高扩展性。以下是 MySQL InnoDB Cluster 的配置方法。
5.1 安装 MySQL Shell 和 Router
-
安装 MySQL Shell 和 MySQL Router:
sudo apt-get install mysql-shell mysql-router -
启动 MySQL Shell 并连接到 MySQL 服务器:
mysqlsh root@localhost
5.2 配置 InnoDB Cluster
-
在 MySQL Shell 中,创建 InnoDB Cluster:
dba.createCluster('myCluster') -
添加 MySQL 实例到集群中:
cluster = dba.getCluster('myCluster') cluster.addInstance('root@server2') cluster.addInstance('root@server3')确保各实例的 MySQL 配置文件中已启用
group_replication。 -
检查集群状态:
cluster.status()
5.3 配置 MySQL Router
-
在 MySQL Router 上进行路由配置:
mysqlrouter --bootstrap root@localhost --directory /etc/mysqlrouter -
启动 MySQL Router:
sudo mysqlrouter -c /etc/mysqlrouter/mysqlrouter.confMySQL Router 将自动处理客户端连接的路由请求,并将其分配到集群的各个节点。
6. 总结
本教程介绍了如何安装 MySQL,并配置单机模式、主从复制模式和集群模式。通过这些配置,你可以充分利用 MySQL 的高性能和高可用性特性,构建一个稳定、可靠的数据库服务架构。
相关文章:
MySQL 安装与配置教程:单机、主从复制与集群模式
目录 MySQL 简介MySQL 安装MySQL 基础配置MySQL 主从复制配置MySQL 集群配置总结 1. MySQL 简介 MySQL 是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高…...
JavaEE 的相关知识点(一)
一、过滤器 过滤器(Filter)是一个用于对请求和响应进行预处理的组件。过滤器可以在 Java Servlet 规范中使用,通常用于执行一些通用的任务 1、过滤器的作用 过滤器是一种javaEE规范中定义的一种技术,可以让请求达到目标servlet之…...
使用Python实现深度学习模型:智能医疗影像识别与诊断
介绍 智能医疗影像识别与诊断是现代医疗技术的重要应用,通过深度学习模型,可以自动分析和识别医疗影像,提高诊断的准确性和效率。本文将介绍如何使用Python和深度学习技术来实现智能医疗影像识别与诊断。 环境准备 首先,我们需要安装一些必要的Python库: pip install …...
24.给定一个链表,实现一个算法交换每两个相邻节点并返回其头部。要求不能修改列表节点中的值,只能更改节点本身。
24. Swap Nodes in Pairs 题目 给定一个链表,交换每两个相邻节点并返回其头部。要求不能修改列表节点中的值,只能更改节点本身。 Example: Given 1->2->3->4, you should return the list as 2->1->4->3....
Python 通过UDP传输超过64k的信息
Python 通过UDP传输超过64k的信息 在网络编程中,UDP(用户数据报协议)是一种常用的传输协议。与TCP不同,UDP是无连接的,并且不保证数据包的顺序、完整性及交付。尽管如此,UDP因其较低的延迟和开销而被广泛应…...
微服务设计原则——高性能:批量
能批量就不要并发。 如果调用方需要调用我们接口多次才能进行一个完整的操作,那么这个接口设计就可能有问题。 比如获取数据的接口,如果仅仅提供getData(int id)接口,那么使用方如果要一次性获取 20 个数据,它就需要循环遍历调用…...
C:指针学习-指针变量—学习笔记
今日伊雷娜: 目录 前言: 1、字符指针变量 1.1 使用字符指针存放字符 1.2 使用字符指针变量存放字符串 2、数组指针变量 2.1 什么是数组指针变量? 2.2 数组指针变量初始化 2.3 关于数组指针类型的解析 3、函数指针变量 3.1 函数地址 …...
【MySQL 07】表的增删查改 (带思维导图)
文章目录 🌈 一、insert 添加数据⭐ 1. 单行数据 全列插入⭐ 2. 多行数据 指定列插入⭐ 3. 插入否则更新⭐4. 插入否则替换 🌈 二、select 查询数据⭐ 1. select 列🌙 1.1 全列查询🌙 1.2 指定列查询🌙 1.3 查询字段…...
快速上手Git
Git相关概念 Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建,用于有效、高速地处理从小到大的项目版本管理。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。 git的工…...
RTC时钟测试
1. 基础知识 Linux 的系统时间有时跟硬件时间是不同步的。 Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIO…...
大数据技术——实战项目:广告数仓(第六部分)报表数据导出至clickhouse
目录 第11章 报表数据导出 11.1 Clickhouse安装 11.2 Clickhouse建表 11.2.1 创建database 11.2.2 创建table 11.3 Hive数据导出至Clickhouse 第11章 报表数据导出 由于本项目最终要出的报表,要求具备交互功能,以及进行自助分析的能力,…...
Android studio模拟制作-简易的订餐交易小案例
一、最终呈现效果 订餐支付小案例效果 二、布局设计activity_main.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…...
消防隐患在线小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,消防隐患举报管理,消防隐患分类管理,统计分类管理,处理结果管理,系统管理 微信端账号功能包括:系统首页,我…...
【Vue3】路由Params传参
【Vue3】路由Params传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…...
授权cleanmymac访问全部磁盘 Mac授权访问权限 cleanmymac缺少权限
CleanMyMac是Mac系统下的一款专业的苹果电脑清理软件,同时也是一款优秀的电脑系统管理软件。它能有效清理系统垃圾,快速释放磁盘内存,缓解卡顿现象,保障系统顺畅地运行。 全磁盘访问权限,就好比机场内进行的安全检查。…...
Ubuntu/18.04 LTS下编译 BoringSSL 库
1、准备一个 Ubuntu/18.04 LTS 系统的设备 2、安装软件 GIT、GCC、CMAKE、G、Golang:1.16 及以上版本 3、克隆仓库源 git clone https://boringssl.googlesource.com/boringssl cd boringssl 4、使用特定版本 git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd 5、编…...
【stm32项目】多功能智能家居室内灯光控制系统设计与实现(完整工程资料源码)
多功能智能家居室内灯光控制系统设计与实现 目录: 目录: 前言: 一、项目背景与目标 二、国内外研究现状: 2.1 国内研究现状: 2.2 国外研究现状: 2.3 发展趋势 三、硬件电路设计 3.1 总体概述 3.2 硬件连接总…...
xss靶场详解
目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边,innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的,这里是访问spaghet这个元素的,并通过括号里面的东西搜索当前…...
华为的流程管理
华为建设流程体系始于2000年,那时华为公司面临着快速扩张和全球化发展的挑战,意识到传统的管理模式已经无法满足业务发展的需求。为了提高公司的管理效率和竞争优势,华为决定启动流程体系的建设。在建设过程中,华为借鉴了业界最佳…...
操作系统Linux
1.Linux命令 ls:查看当前目录下所有目录和文件ps:查看所有正在运行的进程top:显示当前系统中占用资源最多的一些进程,shiftm按照内存查看大小netstat:查看端口的命令vi:查看文件的命令rm:删除文…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
