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

MySQL 单机和集群环境部署教程

目录

    • 一、MySQL 单机环境部署
      • 1. 环境准备
      • 2. 安装 MySQL
        • 2.1 在 Ubuntu 上安装 MySQL
        • 2.2 在 CentOS 上安装 MySQL
        • 2.3 启动 MySQL 服务
        • 2.4 验证 MySQL 安装
        • 2.5 安全设置
      • 3. 配置 MySQL
        • 3.1 配置 MySQL 远程访问
        • 3.2 创建用户和数据库
      • 4. 单机部署注意事项
    • 二、MySQL 集群环境部署
      • 1. 环境准备
      • 2. 选择 MySQL 集群模式
      • 3. MySQL InnoDB Cluster 部署
        • 3.1 安装 MySQL Shell
        • 3.2 配置 MySQL 实例
        • 3.3 配置 Group Replication
        • 3.4 使用 MySQL Shell 创建集群
      • 4. 集群部署注意事项
    • 三、MySQL 使用案例
      • 1. Java 示例:使用 JDBC 连接 MySQL
        • 1.1 添加 Maven 依赖
        • 1.2 编写 Java 代码
      • 2. Python 示例:使用 `mysql-connector-python` 连接 MySQL
        • 2.1 安装 MySQL 连接器
        • 2.2 编写 Python 代码
    • 总结
      • 部署过程中的注意事项

以下是关于 MySQL 单机和集群环境部署的详细教程,注意事项,以及 Java 和 Python 的使用案例。


一、MySQL 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7),也可以在 Windows 上安装 MySQL。
  • MySQL 版本:MySQL 8.0(推荐使用最新稳定版本)。
  • 硬件要求:至少 2 GB 内存和 20 GB 的硬盘空间。

2. 安装 MySQL

2.1 在 Ubuntu 上安装 MySQL
sudo apt update
sudo apt install mysql-server
2.2 在 CentOS 上安装 MySQL
  1. 添加 MySQL Yum Repository

    sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
  2. 安装 MySQL

    sudo yum install mysql-community-server
    
2.3 启动 MySQL 服务

在 Ubuntu 或 CentOS 中:

sudo systemctl start mysqld
sudo systemctl enable mysqld
2.4 验证 MySQL 安装

使用以下命令检查 MySQL 服务状态:

sudo systemctl status mysqld
2.5 安全设置

运行 mysql_secure_installation 命令进行 MySQL 安全设置,如设置 root 密码、删除匿名用户等。

sudo mysql_secure_installation

3. 配置 MySQL

3.1 配置 MySQL 远程访问

编辑 MySQL 配置文件 my.cnfmysqld.cnf

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 部分,确保以下行已启用或添加:

bind-address = 0.0.0.0

保存并重启 MySQL 服务:

sudo systemctl restart mysqld
3.2 创建用户和数据库

登录 MySQL:

mysql -u root -p

创建数据库和用户,并授予权限:

CREATE DATABASE mydb;
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
FLUSH PRIVILEGES;

4. 单机部署注意事项

  • 安全性:确保 MySQL 安全配置到位,特别是 root 用户的密码设置。
  • 备份:定期备份数据库,防止数据丢失。
  • 性能优化:根据使用场景配置 MySQL 参数,如 innodb_buffer_pool_sizemax_connections 等。
  • 日志管理:配置日志以便于监控和调试。

二、MySQL 集群环境部署

1. 环境准备

  • 多台服务器:至少 3 台(推荐 5 台以上,用于 MySQL 集群和管理节点)。
  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)。
  • MySQL 版本:MySQL 8.0(推荐使用最新版本)。

2. 选择 MySQL 集群模式

MySQL 提供几种不同的集群模式,常见的有:

  1. MySQL InnoDB Cluster:基于 Group Replication 的集群解决方案,适用于高可用场景。
  2. MySQL NDB Cluster:适用于需要高可用和高吞吐量的场景,但配置复杂。
  3. Galera Cluster:一种同步复制的解决方案,适用于低延迟的场景。

以下内容主要基于 MySQL InnoDB Cluster 进行讲解。

3. MySQL InnoDB Cluster 部署

3.1 安装 MySQL Shell

在所有节点上安装 MySQL Shell:

sudo apt update
sudo apt install mysql-shell
3.2 配置 MySQL 实例

在每台服务器上安装 MySQL(参考单机部署部分),然后配置集群。

3.3 配置 Group Replication

在每台服务器上编辑 MySQL 配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加以下配置:

[mysqld]
server-id = 1  # 逐节点递增
log_bin = mysql-bin
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = "192.168.1.1:33061"  # 每个节点不同
loose-group_replication_group_seeds = "192.168.1.1:33061,192.168.1.2:33061,192.168.1.3:33061"
loose-group_replication_bootstrap_group = off
loose-group_replication_single_primary_mode = on
loose-group_replication_enforce_update_everywhere_checks = off

保存并重启 MySQL:

sudo systemctl restart mysqld
3.4 使用 MySQL Shell 创建集群
  1. 启动 MySQL Shell

    mysqlsh --uri root@localhost
    
  2. 创建 InnoDB Cluster

    dba.configureInstance();
    var cluster = dba.createCluster('myCluster');
    cluster.addInstance('root@192.168.1.2');
    cluster.addInstance('root@192.168.1.3');
    
  3. 检查集群状态

    cluster.status();
    

4. 集群部署注意事项

  • 网络配置:确保所有节点之间的网络连接稳定,防火墙允许相应端口。
  • 安全配置:集群中的每个节点都应该有强密码,并使用 SSL 进行通信。
  • 节点配置:确保每个节点的 MySQL 配置文件一致,避免参数不一致导致集群问题。
  • 监控与备份:配置监控系统和备份机制,确保集群的高可用性。

三、MySQL 使用案例

1. Java 示例:使用 JDBC 连接 MySQL

1.1 添加 Maven 依赖

pom.xml 中添加 MySQL JDBC 依赖:

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency>
</dependencies>
1.2 编写 Java 代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class MySQLExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydb";String user = "myuser";String password = "mypassword";try {Connection connection = DriverManager.getConnection(url, user, password);Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");while (resultSet.next()) {System.out.println(resultSet.getString("column1") + ", " + resultSet.getString("column2"));}resultSet.close();statement.close();connection.close();} catch (Exception e) {e.printStackTrace();}}
}

2. Python 示例:使用 mysql-connector-python 连接 MySQL

2.1 安装 MySQL 连接器
pip install mysql-connector-python
2.2 编写 Python 代码
import mysql.connectordef query_database():conn = mysql.connector.connect(host="localhost",user="myuser",password="mypassword",database="mydb")cursor = conn.cursor()cursor.execute("SELECT * FROM mytable")for row in cursor.fetchall():print(row)cursor.close()conn.close()if __name__ == "__main__":query_database()

总结

通过以上步骤,我们完成了 MySQL 的单机和集群环境部署,并实现了 Java 和 Python 的简单连接示例。MySQL 是一种流行的关系型数据库管理系统,适用于各种规模的应用场景,从个人项目到企业级应用。

部署过程中的注意事项

  • 安全性:配置强密码、禁用不必要的用户,并使用 SSL 保护数据传输。
  • 性能优化:合理配置 MySQL 的缓存和连接池,以提高性能。
  • 备份策略:定期备份数据库,并验证备份的可用性。
  • 监控和日志管理:配置监控工具和日志管理系统,及时发现和处理问题,确保 MySQL 服务的稳定性。

相关文章:

  • RK3588 EC200A-CN【4G模块】调试
  • 【大模型从入门到精通33】开源库框架LangChain RAG 系统中的问答技术3
  • 解决前端访问IIS服务器发生跨域请求报错的方法
  • Mac移动硬盘选什么格式最好 Mac怎么用ntfs移动硬盘
  • 数据恢复新宠儿:2024年新兴软件趋势与亮点解析
  • ArcGis在线地图插件Maponline(好用版)
  • ORA-01110
  • 二十二、状态模式
  • 江协科技STM32学习- P5 GPIO输出
  • 20240822 每日AI必读资讯
  • 思特科技:国家宝藏数字体验馆展现东方美学 让“文物活起来”
  • 谷歌CEO闭门讲话误开直播,AI前沿资讯令人震惊……外网视频全部下架
  • CAS-ViT实战:使用CAS-ViT实现图像分类任务(一)
  • 学习使用pymodbus模块实现Modbus通讯
  • 【JS|第25期】探索HTTP POST请求:请求体的演变与应用
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • C++入门教程(10):for 语句
  • HTTP那些事
  • JAVA_NIO系列——Channel和Buffer详解
  • JS基础之数据类型、对象、原型、原型链、继承
  • KMP算法及优化
  • leetcode46 Permutation 排列组合
  • spark本地环境的搭建到运行第一个spark程序
  • Sublime text 3 3103 注册码
  • tweak 支持第三方库
  • 阿里云应用高可用服务公测发布
  • 构建工具 - 收藏集 - 掘金
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 06-01 点餐小程序前台界面搭建
  • Nginx实现动静分离
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​Java基础复习笔记 第16章:网络编程
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #mysql 8.0 踩坑日记
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (Charles)如何抓取手机http的报文
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (转)编辑寄语:因为爱心,所以美丽
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 使用 XPath 来读写 XML 文件
  • .NET企业级应用架构设计系列之开场白
  • .net项目IIS、VS 附加进程调试
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .sys文件乱码_python vscode输出乱码