Redis:
MySQL:
Centos
1 | # 重启樱花映射 |
1 | # 强制同步时间 |
parallels@10.211.55.15 zhang...1997
1 | # Redis 日志位置 |
mysql:
账号:centos
密码:centos
redis:
防火墙:
关闭防火墙:sudo systemctl stop firewalld
永久关闭防火墙:
sudo systemctl disable firewalld
防火墙状态:sudo firewall-cmd --state
Jdk 1.8
1 | 291 wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz |
linux01
ssh linux01@10.211.55.16 linux01
mysql、redis
redis.log: /home/linux01/log
关闭防火墙:sudo ufw disable
永久关闭防火墙:
1 | sudo systemctl stop ufw |
mysql
账号:linux01
密码:linux01
15虚拟机
Redis安装
在CentOS上手动安装Redis的步骤如下:
- 安装依赖
Redis是由C语言开发的,因此首先需要确保服务器已经安装了GCC编译器。可以通过以下命令查看机器是否安装了GCC:
gcc -v
如果没有安装,可以通过以下命令进行安装:sudo yum install -y gcc - 下载并解压Redis安装包
下载Redis安装包,可以选择直接通过浏览器下载,或者使用wget命令在终端中下载。以下是一个使用wget命令下载Redis安装包的示例:wget https://download.redis.io/releases/redis-6.2.6.tar.gz
解压下载的文件:tar -zxvf redis-6.2.6.tar.gz - 编译安装
进入解压后的Redis目录:cd redis-6.2.6
使用make命令进行编译:make
编译完成后,使用make install命令进行安装,可以指定安装目录:make install PREFIX=/usr/local/redis - 配置Redis
将Redis的配置文件(redis.conf)复制到安装目录:cp /root/redis-6.2.6/redis.conf /usr/local/redis/bin/
修改redis.conf配置文件以支持后台运行:vi /usr/local/redis/bin/redis.conf
将daemonize的值从no修改为yes:daemonize yes - 启动Redis服务
前台启动
进入Redis安装目录并启动服务:cd /usr/local/redis./redis-server
后台启动
创建Redis的工作目录:mkdir /usr/local/redis/log
编辑配置文件,添加日志文件路径:vim /usr/local/redis/bin/redis.conf
添加以下内容:logfile "/usr/local/redis/log/redis.log"
启动Redis服务:./redis-server ./redis.conf - 设置开机自启动
创建systemd服务文件:vim /lib/systemd/system/redis.service
添加以下内容:
1 | [Unit] |
启动Redis服务并设置开机自启:
1 | systemctl start redis |
- 验证安装
通过Redis客户端连接并测试:
./redis-cli
使用ping命令测试连接:
ping
通过以上步骤,你可以在CentOS上成功手动安装并配置Redis。
MySQL安装
1. 更新系统
确保系统是最新的:
1 | sudo dnf update -y |
2. 添加 MySQL 官方 DNF 仓库
CentOS Stream 9 使用 dnf 作为包管理器,我们需要添加 MySQL 官方仓库:
下载适用于 EL9 的 MySQL Yum 仓库 RPM:
1
2sudo dnf install -y wget
wget https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm注意:这是截至 2025 年 2 月的最新版本。如果链接失效,请访问 MySQL 官方下载页面 获取最新 RPM。
安装 RPM:
1
sudo rpm -Uvh mysql80-community-release-el9-5.noarch.rpm
更新 DNF 缓存:
1
sudo dnf makecache
3. 安装 MySQL 8.0.41
CentOS Stream 9 的默认仓库可能不直接提供 8.0.41,但 MySQL 官方仓库会有多个版本。检查可用版本:
1 | dnf --showduplicates list mysql-community-server |
输出类似:
1 | mysql-community-server.x86_64 8.0.41-1.el9 mysql80-community |
如果 8.0.41 可用,安装指定版本:
1 | sudo dnf install -y mysql-community-server-8.0.41-1.el9 |
如果没有列出 8.0.41,默认安装最新版本:
1 | sudo dnf install -y mysql-community-server |
4. 启动 MySQL 服务
安装完成后,启动服务并设置开机自启:
1 | sudo systemctl start mysqld |
检查状态:
1 | sudo systemctl status mysqld |
5. 获取临时密码
MySQL 首次安装会生成一个临时 root 密码,查看日志:
1 | sudo grep 'temporary password' /var/log/mysqld.log |
记下密码(例如 abcd1234!xyz)。
– Lk(wE0fZxypJ0
修改密码级别
6. 配置 MySQL
使用临时密码登录:
1 | mysql -u root -p |
修改 root 密码:
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; |
7. 验证安装
检查版本:
1 | mysql -u root -p -e "SELECT VERSION();" |
输出应包含 8.0.41(或你安装的版本)。
如果 8.0.41 不可用:手动安装
如果 MySQL 官方 EL9 仓库没有 8.0.41,可以手动下载 RPM 包:
- 访问 MySQL 官方档案。
- 选择 8.0.41,下载适用于 EL9 的包(例如
mysql-community-server-8.0.41-1.el9.x86_64.rpm)。 - 安装:如果缺少依赖,运行:
1
sudo dnf install -y ./mysql-community-server-8.0.41-1.el9.x86_64.rpm
1
sudo dnf install -y -f
解决依赖问题
CentOS Stream 9 不提供 OpenSSL 1.0.2(libcrypto.so.10 和 libssl.so.10),而 MySQL 8.0.41 的 EL7 包依赖这些库。如果你坚持使用 el7 包(不推荐),需要手动安装兼容性库,但这在 Stream 9 上非常复杂且不稳定。建议:
- 使用 EL9 版本的 MySQL 8.0.41(如上所述)。
- 或选择更新的 MySQL 版本(8.0.x 的最新版已适配 EL9 的 OpenSSL)。
开启远程连接(可选)
如果需要远程访问:
编辑配置文件:
1
sudo vim /etc/my.cnf.d/mysql-server.cnf
在
[mysqld]下添加:1
bind-address = 0.0.0.0
配置用户权限:
1
2
3CREATE USER 'centos'@'%' IDENTIFIED BY 'centos';
GRANT ALL PRIVILEGES ON *.* TO 'centos'@'%';
FLUSH PRIVILEGES;重启服务:
1
sudo systemctl restart mysqld
开放防火墙:
1
2sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
注意事项
- CentOS Stream 9 是滚动更新的发行版,库版本较新,与 EL7 包不完全兼容。
- 如果仍想用 8.0.41 的 EL7 包,建议切换到 CentOS 7 系统。
- 遇到任何错误(例如依赖或启动失败),请提供具体输出,我会帮你解决。
现在你可以尝试安装了!需要进一步帮助吗?
mysql workbench
1 | # 更新系统 |
16、17虚拟机
依赖:
1 | sudo apt-get install libhiredis-dev |
MySQL安装
在 Ubuntu 24.04 上安装 MySQL 数据库非常简单,我将为你提供逐步指导。以下是安装和基本配置的步骤:
1. 更新软件包列表
首先,确保你的系统软件包列表是最新的。打开终端,运行以下命令:
1 | sudo apt update && sudo apt upgrade -y |
2. 安装 MySQL Server
在 Ubuntu 24.04 上,MySQL 的默认版本通常可以通过包管理器安装。运行以下命令来安装 MySQL Server:
1 | sudo apt install mysql-server -y |
安装完成后,MySQL 服务会自动启动。你可以通过以下命令检查它是否运行:
1 | sudo systemctl status mysql |
如果显示 “active (running)”,说明服务已成功启动。
3. 运行安全配置脚本
安装完成后,建议运行 MySQL 提供的安全配置脚本,以增强数据库的安全性:
1 | sudo mysql_secure_installation |
- 系统会提示你设置 root 用户的密码(如果还未设置)。
- 接下来会询问是否移除匿名用户、禁止远程 root 登录、删除测试数据库等,建议根据需求选择(通常选 “Y” 以提高安全性)。
4. 登录 MySQL
安装完成后,可以使用以下命令登录 MySQL:
1 | sudo mysql -u root -p |
输入你在上一步设置的 root 密码。如果未设置密码,可以直接以 root 用户身份进入(视安装时的默认配置)。
5. (可选)设置 root 用户密码
如果默认情况下 root 用户没有密码或你想更改密码,可以在 MySQL 命令行中运行:
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '你的密码'; |
将“你的密码”替换为你想要设置的密码。
6. 验证安装
再次登录 MySQL 并运行以下命令,确认版本:
1 | mysql -u root -p |
进入后:
1 | SHOW VARIABLES LIKE 'version'; |
这会显示当前安装的 MySQL 版本。
7. 基本管理命令
- 启动 MySQL 服务:
1
sudo systemctl start mysql
- 停止 MySQL 服务:
1
sudo systemctl stop mysql
- 重启 MySQL 服务:
1
sudo systemctl restart mysql
默认安装位置:/var/lib/mysql
which mysql
MySQL
1 | -- 查看当前密码策略 |
Redis
注意事项
PIDFile 必须与 redis.conf 中的 pidfile 一致。
Type=forking 匹配 daemonize yes 设置。
Redis
主从+哨兵
在您的三台虚拟机(10.211.55.15 CentOS Stream 9,10.211.55.16 和 10.211.55.17 Ubuntu 24 LTS)上已经部署了 Redis,现在要配置 Redis 哨兵模式(Sentinel),这是一个非常好的高可用性方案。Redis 哨兵模式可以监控主从节点,并在主节点故障时自动切换到从节点。以下是详细的配置步骤:
前提假设
- 三台服务器都已经安装了 Redis(假设版本一致,比如 Redis 6.x 或 7.x)。
- Redis 主节点(Master)部署在 10.211.55.15,从节点(Slave)部署在 10.211.55.16 和 10.211.55.17。
- Sentinel 将在这三台服务器上都部署,以实现高可用监控。
如果您的部署计划不同(如主从分配不同),请告诉我,我会调整方案。
配置步骤
1. 配置 Redis 主从复制
首先需要设置一个主节点和两个从节点。
在主节点 (10.211.55.15) 上配置 Redis
编辑 Redis 配置文件(通常在 /etc/redis.conf 或 /etc/redis/redis.conf,具体路径取决于安装方式):
1 | # 确保绑定本地 IP(或 0.0.0.0 允许外部访问) |
启动 Redis:
1 | redis-server /etc/redis.conf |
在从节点 (10.211.55.16 和 10.211.55.17) 上配置 Redis
编辑从节点的 Redis 配置文件:
1 | # 绑定本地 IP |
分别在两台从节点上启动 Redis:
1 | redis-server /etc/redis.conf |
验证主从同步:
在主节点上运行 redis-cli,输入:
1 | INFO REPLICATION |
可以看到从节点信息。确保从节点已连接。
2. 配置 Redis Sentinel
Redis Sentinel 需要单独的配置文件,通常命名为 sentinel.conf,并在每台服务器上运行一个 Sentinel 实例。
创建 Sentinel 配置文件
在每台服务器上创建一个 sentinel.conf 文件(例如放在 /etc/redis/sentinel.conf),内容如下:
1 | # Sentinel 监听端口(默认 26379) |
说明:
sentinel monitor mymaster <主节点IP> <端口> <法定人数>:mymaster是主节点的别名,2表示至少 2 个 Sentinel 同意才能触发故障转移。- 每台服务器的
sentinel.conf配置相同。
启动 Sentinel
在每台服务器上启动 Sentinel:
1 | redis-sentinel /etc/redis/sentinel.conf |
启动后,Sentinel 会自动发现主节点和从节点,并开始监控。
3. 验证 Sentinel 工作状态
在任意一台服务器上,使用 redis-cli 连接 Sentinel(默认端口 26379):
1 | redis-cli -h 10.211.55.15 -p 26379 |
输入以下命令:
1 | SENTINEL masters |
查看主节点状态。
1 | SENTINEL slaves mymaster |
查看从节点状态。
4. 测试故障转移
- 在主节点 (10.211.55.15) 上停止 Redis:
1
redis-cli -h 10.211.55.15 shutdown
- 等待几秒后,检查 Sentinel 日志(通常在
sentinel.conf指定的日志文件中)或重新运行SENTINEL masters,确认主节点已切换到 10.211.55.16 或 10.211.55.17。 - 原主节点恢复后会自动变为从节点。
- 手动故障主节点
1 | SENTINEL failover mymaster # mymaster 是主节点的名称 |
注意事项
防火墙配置:
- 确保主从节点的 6379 端口和 Sentinel 的 26379 端口在三台服务器之间互通。
- CentOS Stream 9:
1
2
3firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --add-port=26379/tcp --permanent
firewall-cmd --reload - Ubuntu 24 LTS:
1
2ufw allow 6379/tcp
ufw allow 26379/tcp
网络延迟:
- 由于是本地虚拟机,网络延迟应该很低,但如果在生产环境,需确保网络稳定。
版本一致性:
- 确保三台服务器的 Redis 和 Sentinel 版本一致,避免兼容性问题。
下一步
如果您已经按照上述步骤配置完成,可以告诉我测试结果,或者如果有任何报错,我可以帮您排查。如果您想调整配置(比如更改主节点、端口等),也请随时告诉我!
MySQL
主从同步 ShardingSphere
好的,您决定使用 ShardingSphere 并基于 Java 的 Spring Boot 应用来实现读写分离,这是个很不错的选择。您的三台服务器(10.211.55.15 CentOS Stream 9,10.211.55.16 和 10.211.55.17 Ubuntu 24 LTS)已经部署了 MySQL 8.0.41,但尚未配置主从同步。我们需要先完成 MySQL 的主从同步配置,然后在 Spring Boot 中引入 ShardingSphere-JDBC 来实现读写分离。以下是详细步骤:
第一步:配置 MySQL 主从同步
我们将 10.211.55.15 设置为主节点 (Master),10.211.55.16 和 10.211.55.17 设置为从节点 (Slave)。
1. 配置主节点 (10.211.55.15)
编辑 MySQL 配置文件:
- CentOS Stream 9 通常是
/etc/my.cnf:
1 | [mysqld] |
重启 MySQL:
1 | systemctl restart mysqld |
创建复制用户:
1 | mysql -u root -p |
记录 File(如 mysql-bin.000001)和 Position(如 156)。
2. 配置从节点 (10.211.55.16)
编辑 MySQL 配置文件(Ubuntu 通常是 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf):
16是:/etc/mysql/mysql.conf.d/mysqld.cnf
1 | [mysqld] |
重启 MySQL:
1 | systemctl restart mysql |
连接主节点:
1 | mysql -u root -p |
确认 Replica_IO_Running 和 Replica_SQL_Running 均为 Yes。
3. 配置从节点 (10.211.55.17)
与 10.211.55.16 类似,配置文件中设置:
1 | [mysqld] |
重启并连接主节点(参数与 10.211.55.16 相同,只是 server-id 不同),然后检查同步状态。
4. 防火墙设置
- CentOS:
1
2firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload - Ubuntu:
1
2ufw allow 3306/tcp
ufw status
5. 测试主从同步
在主节点创建测试数据:
1 | CREATE DATABASE test_db; |
在从节点检查:
1 | USE test_db; |
若能看到数据,同步成功。
第二步:在 Spring Boot 中引入 ShardingSphere-JDBC
1. 创建 Spring Boot 项目
使用 Spring Initializr 创建项目,添加以下依赖:
- Spring Web
- Spring Data JPA
- MySQL Driver
2. 添加 ShardingSphere-JDBC 依赖
编辑 pom.xml:
1 | <dependencies> |
3. 配置 application.yml
在 src/main/resources/application.yml 中添加:
1 | spring: |
4. 创建实体类
在 src/main/java/com/example/demo/entity 下创建 User.java:
1 | package com.example.demo.entity; |
5. 创建 Repository
在 src/main/java/com/example/demo/repository 下创建 UserRepository.java:
1 | package com.example.demo.repository; |
6. 创建 Controller
在 src/main/java/com/example/demo/controller 下创建 UserController.java:
1 | package com.example.demo.controller; |
7. 运行应用
启动 Spring Boot:
1 | mvn spring-boot:run |
8. 测试读写分离
- 添加用户(写操作,走主库):
1
curl -X POST http://localhost:8080/users -H "Content-Type:application/json" -d '{"name":"Charlie"}'
- 获取用户列表(读操作,走从库):观察日志,确认写操作发往 10.211.55.15,读操作分发到 10.211.55.16 或 10.211.55.17。
1
curl http://localhost:8080/users
注意事项
- 密码替换:将
your_root_password替换为实际的 MySQL root 密码。 - 数据库权限:确保
test_db在从节点已同步,或者在主节点创建后等待同步完成。 - 依赖版本:ShardingSphere 版本可能更新,建议访问 官网 获取最新版。
- 日志调试:若读写分离未生效,检查日志输出,确保数据源正确加载。
下一步
请按照上述步骤配置并测试。如果主从同步或 Spring Boot 集成过程中遇到问题(比如同步失败、连接错误),告诉我具体报错,我会帮您排查!完成后,您可以进一步优化负载均衡策略或添加更多功能。有什么具体需求吗?