MySQL高可用性部署:树莓派上InnoDB集群配置指南
立即解锁
发布时间: 2025-08-23 02:32:46 阅读量: 5 订阅数: 10 


MySQL InnoDB Cluster: 实现高可用性的全面指南
### MySQL高可用性部署:树莓派上InnoDB集群配置指南
#### 1. 前期准备
在操作过程中不会有反馈信息,完成操作后,可移除驱动器并将其放入树莓派中启动,以此验证镜像。也可以使用Etcher应用程序来克隆已创建的镜像,具体操作是将`idb_clone_rpi.bz2`镜像复制到桌面,再用Etcher将其复制到其他驱动器。
#### 2. MySQL服务器实例的最终配置
我们有四个相同的MySQL服务器副本,需要让每个副本变得唯一。需依次连接键盘、鼠标和显示器启动每台机器并进行更改,每台机器需要更改以下几个方面:
- 唯一的`server_id`和报告的主机名
- 唯一的UUID
- 静态IP地址
- 唯一的主机名
##### 2.1 设置唯一的server_id
编辑每台机器的配置文件,选择一个唯一的服务器ID(`server_id`),例如使用范围1 - 4。使用`sudo nano /etc/my.cnf`命令编辑配置文件,若文件不存在也没关系,输入以下内容:
```plaintext
[mysqld]
server-id=1
report-host=cluster-rpi1
```
这里的`server-id`是服务器ID,`report-host`用于组复制向InnoDB集群报告主机名,确保服务器在集群中有唯一的主机名,方便在配置集群时通过主机名引用服务器。
##### 2.2 使用唯一的UUID
UUID存储在`auto.conf`文件中,用于服务器在组复制中唯一标识自己。由于我们克隆了镜像,所有服务器的UUID相同,这是克隆镜像的一个问题。若单独构建每台机器则没问题,因为每次安装时`auto.cnf`会自动生成。可以通过删除`auto.conf`文件来强制服务器重新生成UUID,操作示例如下:
```bash
$ sudo more /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=4127c169-520f-11e8-a834-b827ebcb9200
$ sudo rm /usr/local/mysql/data/auto.cnf
$ sudo /etc/init.d/mysql restart
[ ok ] Restarting mysql.server (via systemctl): mysql.server.service.
$ sudo more /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=bb1e15c5-53d1-11e8-982c-b827eb6ea7ce
```
##### 2.3 设置唯一的静态IP地址
在示例中,MySQL服务器使用的IP地址范围是`192.168.42.241 - 192.168.42.244`。要设置正确的IP地址,需编辑`dhcpcd.conf`文件并设置IP地址,第一台MySQL服务器的配置示例如下:
```plaintext
# Example static IP configuration:
interface eth0
static ip_address=192.168.42.241/24
static routers=192.168.42.1
static domain_name_servers=192.168.42.1
```
##### 2.4 设置唯一的主机名
使用树莓派配置工具来设置主机名,我们将使用`cluster-rpi[1 - 4]`作为主机名,例如第三台服务器的主机名是`cluster-rpi3`,应用服务器的主机名是`cluster-rpi-app`。打开树莓派配置工具,在第一个选项卡中找到“Hostname”行,然后更改右侧文本框中的文本。
需要注意的是,必须在所有四台机器上执行这些步骤,若不自定义这三项,可能会导致集群启动出现问题。另外,还可以选择让服务器以命令行界面启动且不自动登录,通过树莓派配置工具,打开工具找到“Boot”和“Auto Login”行,关闭桌面选择“To CLI”单选按钮,关闭自动登录取消“当前用户”复选框。
#### 3. 集群的设置
##### 3.1 物理布局
设置InnoDB集群时,首先要考虑测试系统的物理布局。不需要为每台计算机配备键盘、鼠标和显示器,开机并等待启动后可远程访问。但五台树莓派计算机各自连接电源和以太网集线器,会导致电线杂乱。建议将树莓派计算机、电源和以太网集线器进行合理布置,例如将电线捆绑起来,或者将它们安装在板子上,也可以构建一个Pi Stack让服务器更便携。
##### 3.2 准备工作
确保所有服务器启动并就绪,树莓派计算机若不使用显示器观察启动顺序,需等待3 - 5分钟启动。之后要执行一个关键的准备步骤,使用`dba.configure_local_instance()`方法准备远程机器,这意味着要在本地机器上运行MySQL Shell,所以要在所有机器上安装该工具。
操作步骤如下:
1. 开启所有MySQL服务器(应用服务器可暂时关闭)。
2. 从桌面机器(或已开启并连接键盘、鼠标和显示器的应用服务器)打开终端,输入`$ ssh [email protected]`建立与第一台MySQL服务器的远程连接。若连接有问题,确保桌面计算机与服务器在同一网络,且服务器的静态IP地址和主机文件已设置,服务器能访问网络。
3. 连接成功后,使用MySQL Shell运行`configure_local_instance`方法,以`localhost`作为主机名,端口3306引用服务器。执行该方法后,会提示输入root用户的密码,接着选择如何创建集群管理用户,建议选择选项(1),即使用相同的root用户并修改以获得对集群的正确访问权限。
4. 提示输入用户账户(root)登录时使用的主机,为方便操作,本示例使用通配符(%),但生产环境中建议指定用户/主机组合以增强访问安全性。
5. 该方法会检查服务器是否有需要修复的问题,若有会询问是否自动修复,选择是。
6. 操作完成后,会询问是否重启实例以使更改生效,选择是。
以下是运行该方法的示例:
```bash
$ mysqlsh
MySQL Shell 8.0.11
Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type '\help' or '\?' for help; '\quit' to exit.
MySQL Py > dba.configure_local_instance('localhost:3306')
Please provide the password for 'root@localhost:3306': ****
Configuring local MySQL instance listening at port 3306 for use in an
InnoDB cluster...
This instance reports its own address as cluster-rpi3
WARNING: User 'root' can only connect from localhost.
If you need to manage this instance while connected from other hosts, new
account(s) with the proper source address specification must be created.
1) Create remotely usable account for 'root' with same grants and password
2) Create a new admin account for InnoDB cluster with minimal required
grants
3) Ignore and continue
4) Cancel
Please select an option [1]: 1
Please provide a source address filter for the account (e.g: 192.168.% or %
etc) or leave empty and press Enter to cancel.
Account Host: %
Some configuration options need to be fixed:
+--------------------------+---------------+----------+---------------------+
| Variable | Current Value | Required | Note |
Value
+--------------------------+---------------+----------+---------------------+
| binlog_checksum | CRC32 | NONE | Update the
server variable |
| enforce_gtid_consistency | OFF | ON | Update read-only
variable and
restart the server |
| gtid_mode | OFF | ON | Update read-only
variable and
restart the server |
+--------------------------+---------------+----------+---------------------+
Do you want to perform the required configuration changes? [y/n]: y
Do you want to restart the instance after configuring it? [y/n]: y
Cluster admin user 'root'@'%' created.
Configuring instance...
The instance 'localhost:3
```
0
0
复制全文
相关推荐









