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

目录

    • [一、MySQL 单机环境部署](#一、MySQL 单机环境部署)
      • [1. 环境准备](#1. 环境准备)
      • [2. 安装 MySQL](#2. 安装 MySQL)
        • [2.1 在 Ubuntu 上安装 MySQL](#2.1 在 Ubuntu 上安装 MySQL)
        • [2.2 在 CentOS 上安装 MySQL](#2.2 在 CentOS 上安装 MySQL)
        • [2.3 启动 MySQL 服务](#2.3 启动 MySQL 服务)
        • [2.4 验证 MySQL 安装](#2.4 验证 MySQL 安装)
        • [2.5 安全设置](#2.5 安全设置)
      • [3. 配置 MySQL](#3. 配置 MySQL)
        • [3.1 配置 MySQL 远程访问](#3.1 配置 MySQL 远程访问)
        • [3.2 创建用户和数据库](#3.2 创建用户和数据库)
      • [4. 单机部署注意事项](#4. 单机部署注意事项)
    • [二、MySQL 集群环境部署](#二、MySQL 集群环境部署)
      • [1. 环境准备](#1. 环境准备)
      • [2. 选择 MySQL 集群模式](#2. 选择 MySQL 集群模式)
      • [3. MySQL InnoDB Cluster 部署](#3. MySQL InnoDB Cluster 部署)
        • [3.1 安装 MySQL Shell](#3.1 安装 MySQL Shell)
        • [3.2 配置 MySQL 实例](#3.2 配置 MySQL 实例)
        • [3.3 配置 Group Replication](#3.3 配置 Group Replication)
        • [3.4 使用 MySQL Shell 创建集群](#3.4 使用 MySQL Shell 创建集群)
      • [4. 集群部署注意事项](#4. 集群部署注意事项)
    • [三、MySQL 使用案例](#三、MySQL 使用案例)
      • [1. Java 示例:使用 JDBC 连接 MySQL](#1. Java 示例:使用 JDBC 连接 MySQL)
        • [1.1 添加 Maven 依赖](#1.1 添加 Maven 依赖)
        • [1.2 编写 Java 代码](#1.2 编写 Java 代码)
      • [2. Python 示例:使用 `mysql-connector-python` 连接 MySQL](#2. Python 示例:使用 mysql-connector-python 连接 MySQL)
        • [2.1 安装 MySQL 连接器](#2.1 安装 MySQL 连接器)
        • [2.2 编写 Python 代码](#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
bash 复制代码
sudo apt update
sudo apt install mysql-server
2.2 在 CentOS 上安装 MySQL
  1. 添加 MySQL Yum Repository

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

    bash 复制代码
    sudo yum install mysql-community-server
2.3 启动 MySQL 服务

在 Ubuntu 或 CentOS 中:

bash 复制代码
sudo systemctl start mysqld
sudo systemctl enable mysqld
2.4 验证 MySQL 安装

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

bash 复制代码
sudo systemctl status mysqld
2.5 安全设置

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

bash 复制代码
sudo mysql_secure_installation

3. 配置 MySQL

3.1 配置 MySQL 远程访问

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

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

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

ini 复制代码
bind-address = 0.0.0.0

保存并重启 MySQL 服务:

bash 复制代码
sudo systemctl restart mysqld
3.2 创建用户和数据库

登录 MySQL:

bash 复制代码
mysql -u root -p

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

sql 复制代码
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:

bash 复制代码
sudo apt update
sudo apt install mysql-shell
3.2 配置 MySQL 实例

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

3.3 配置 Group Replication

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

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加以下配置:

ini 复制代码
[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:

bash 复制代码
sudo systemctl restart mysqld
3.4 使用 MySQL Shell 创建集群
  1. 启动 MySQL Shell

    bash 复制代码
    mysqlsh --uri root@localhost
  2. 创建 InnoDB Cluster

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

    javascript 复制代码
    cluster.status();

4. 集群部署注意事项

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

三、MySQL 使用案例

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

1.1 添加 Maven 依赖

pom.xml 中添加 MySQL JDBC 依赖:

xml 复制代码
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.32</version>
    </dependency>
</dependencies>
1.2 编写 Java 代码
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 连接器
bash 复制代码
pip install mysql-connector-python
2.2 编写 Python 代码
python 复制代码
import mysql.connector

def 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 服务的稳定性。
相关推荐
苹果醋333 分钟前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader1 小时前
深入解析 Apache APISIX
java·apache
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
菠萝蚊鸭1 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel
算法小白(真小白)1 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭1 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
码农君莫笑1 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
旭东怪1 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0071 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
∝请叫*我简单先生2 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl