Logo
集群生态工具管理

集群生态工具的安装卸载 #

安装 SphereEx-Boot #

  1. 新建操作系统用户:
# groupadd spex
# useradd -g spex spex 
# passwd spex
  1. 创建推荐的安装目录: /home/spex/boot

  2. 依赖:

  • sshpass 1.0.0+

  • Python 2.7 或者 Python 3.5+

  • pip 20.0.0+

  1. 安装 SphereEx-Boot
  • 执行如下命令,安装 SphereEx-Boot。
# pip install sphereex‑boot‑1.1.0.tar.gz
 Processing ./sphereex‑boot‑1.1.0.tar.gz
 Requirement already satisfied: ansible<=2.10.7,>=2.8.0 in /usr/lib/python2.7/site-packages (from sphereex-boot==1.1.0) (2.10.7)
 ······
  Building wheel for sphereex-boot (setup.py) ... done
  Created wheel for spex: filename=sphereex_boot-1.1.0-py2-none-any.whl size=212249 sha256=5de4a3b4f347da57697ad942f74284be38ecf12e5e0d1fefda06e5e4282c22eb
  Stored in directory: /root/.cache/pip/wheels/e5/c4/d7/64a96c1f48ffabc68df6aa164beb7a93a1ad4d81aba4b751d7

Successfully built sphereex-boot

Installing collected packages: sphereex-boot
Successfully installed sphereex‑boot‑1.1.0
  • 查看 SphereEx-Boot 安装结果

执行命令查看 SphereEx-Boot 版本,如果输出的版本为当前安装的版本,说明安装成功。

# spex --version
Version 1.1.0

卸载 SphereEx-Boot #

执行卸载命令

# pip uninstall sphereex‑boot

安装 SphereEx-Console #

部署说明 #

  • 最小化部署

最小化部署 Console ,复用用户环境中已有的 5.7 版本及以上的 MySQL 数据库。

主机生态工具
主机1Console
  • 推荐部署

推荐部署 Console,使用独立主机和 Console 中内置的 MySQL 软件安装 Console 后台 MySQL 数据库。

主机生态工具组件
主机1ConsoleConsole 后台 MySQL 数据库(主)
主机2Console 后台 MySQL 数据库(从)

安装流程

安装准备 #

  1. 新建操作系统用户

安装 Boot 时已创建此步可省略

# groupadd spex
# useradd -g spex spex 
# passwd spex
  1. 创建推荐的安装目录:
/home/spex/console
  1. 依赖:
  • JDK 1.8
  • 开启 ssh 服务
  • SphereEx-Boot
  1. 环境检查(校验依赖)
  • 查看 JDK 版本
# java -version
  • 检查是否开启 ssh 服务
# ps -aux | grep sshd
  • 检查是否安装 SphereEx-Boot
# spex --version
  1. 获取软件: 请联系我们

  2. 使用 SphereEx-Boot 的 spex 命令导出配置文件 console_install.yaml

# spex console export 

最小化安装 SphereEx-Console 初始化配置文件 #

最小化安装前提:

  • 已有 MySQL 5.7 及以上数据库。

  • 且已经创建 spex 数据库用户,并允许 console 所在主机访问。

  1. 创建 spex 用户:
create database console
create user 'spex'@'[SpherexEx-Console IP]' identified by 'XXXXXX';
grant all on console.* to spex@'[SpherexEx-Console IP]';
  1. 数据库初始化脚本

SphereEx-Console 解压后的目录中的 db 目录下的:

  schema.sql
  schema-data.sql
  1. 按实际情况,参考如下方式修改配置文件,未提及参数保持默认即可。
 vi console_install.yaml
###################### SphereEx-Console Deploy Configuration Example #########################
 
# This file is an example configuration file.
# Here you can configure for the SphereEx-Console deploy.
# Deploy to remote must use ssh
 
#===================== Mysql Deploy Configuration ========================
 
# Required, Whether to install a new Mysql server
# If true Mysql master-slave will be installed
 
install_mysql: false
 

 #==================== Console Deploy Configuration =======================
console:
  # install on local or remote
  ssh_user: spex
  ssh_password: spex
  ssh_port: 22
  host: xxx.xxx.xxx.xxx
  # Required, SphereEx-Console file. for example:/root/console/SphereEx-Console.tar.gz
  file: /home/spex/boot/console.tar.gz
  # Required, deployment directory, remote or local
  install_dir: /home/spex/console
  # Required, deployment directory, remote or local
  console_config:
    server:
      port: 8088
    # software home path
    software:
      home: /home/spex/console
      spring:
      # If install_mysql is true, the param will be overwritten
      # If you use your own Mysql, edit the configuration below
    datasource:
      url: jdbc:mysql://[IP]:[PORT]/console?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true # console mysql url
      username: spex  # console mysql user
      password: sphereEx@2021 # console mysql password
      driverClassName: com.mysql.jdbc.Driver # console mysql driver

推荐安装 SphereEx-Console 初始化配置文件 #

参考推荐部署来规划主机,按实际情况,将 SphereEx-Console 和 MySQL 主从分别部署在两台主机上

参考如下方式修改配置文件,未提及参数保持默认即可。

 vi console_install.yaml
###################### SphereEx-Console Deploy Configuration Example #########################
 
# This file is an example configuration file.
# Here you can configure for the SphereEx-Console deploy.
# Deploy to remote must use ssh
 
#===================== Mysql Deploy Configuration ========================
 
# Required, Whether to install a new Mysql server
# If true Mysql master-slave will be installed
 
install_mysql: true
 
# If install Mysql is true the param is required
 
mysql:
  master:
    # install on local or remote
    file: /home/spex/console/mysql.tar.xz
    host: xxx.xxx.xxx.xxx
    listen_port: 3306
    ssh_user: spex
    ssh_password: spex
    ssh_port: 22
    install_dir: /home/spex/console
 
  slave:
    # install on local or remote
    host: xxx.xxx.xxx.xxx
    file: /home/spex/boot/mysql.tar.xz
    # If two Mysql servers are on the same machine, listen port must be different
    listen_port: 3307
    ssh_user: root
    ssh_password: root
    ssh_port: 22
    install_dir: /home/spex/console
 
 #==================== Console Deploy Configuration =======================
console:
  # install on local or remote
  ssh_user: spex
  ssh_password: spex
  ssh_port: 22
  host: xxx.xxx.xxx.xxx
  # Required, SphereEx-Console file. for example:/root/console/SphereEx-Console.tar.gz
  file: /home/spex/boot/console.tar.gz
  # Required, deployment directory, remote or local
  install_dir: /home/spex/console
  # Required, deployment directory, remote or local
  console_config:
    server:
      port: 8088
    # software home path
    software:
      home: /home/spex/console

执行安装 SphereEx-Console #

  1. 执行命令安装 SphereEx-Console
# spex console install -n {console_name} -c console_install.yaml
  1. 查看 SphereEx-Console 列表
# spex console list

手动安装 SphereEx-Console #

安装准备

安装 SphereEx-Console 前,确保操作系统已经安装了如下软件:

  • 已安装 JDK 1.8
  • 已安装 spexc
  • 已有 MySQL 5.7 及以上数据库。
  • 且已经创建 spex 数据库用户,并允许 SphereEx-Console 所在主机访问。
  1. 创建 spex 用户:
create database console
create user 'spex'@'[SpherexEx-Console IP]' identified by 'XXXXXX';
grant all on console.* to spex@'[SpherexEx-Console IP]';
  1. 数据库初始化脚本

SphereEx-Console 解压后的目录中的 db 目录下的:

 schema.sql schema-data.sql
  1. 修改配置文件

SphereEx-Console 解压后的目录中的 conf 目录下,修改加星部分,注意去掉星号。

vi application-prod.yml 
server:
  *port: 8080
spring:
  datasource:
    *url: jdbc:mysql://127.0.0.1:3306/console?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    *username: spex
    *password: spex
    driverClassName: com.mysql.jdbc.Driver

jwt:
  header: token
  secret: your_secret
  expiration: 30000000000

sphereex:
  proxy:
    datasource:
      hikari:
        maximum-pool-size: 4
        connection-timeout: 3000
        minimum-idle: 2
        idle-timeout: 500000
        max-lifetime: 540000
  1. 启动 SphereEx-Console SphereEx-Console 解压后的目录中的 bin 目录下
./start.sh 
  1. 登录 SphereEx-Console

使用服务器的 IP 地址加端口通过浏览器访问 SphereEx-Console 平台,使用配置文件中账号和密码登录。

例如:192.168.10.18:8080

内置超级管理员的用户名/密码: admin/admin

登录页面

卸载 SphereEx-Console #

# spex console uninstall -n {console_name} 

SphereEx-Boot 的使用 #

  • SphereEx-Boot 的启动与停止

无需启动和停止,安装完成直接使用 spex 命令即可。

SphereEx-Console 使用 #

  • SphereEx-Console 的启动

登录 console 所在主机,进入 Console 的安装目录,执行启动命令。

bin/start.sh 

使用服务器的 IP 地址加端口通过浏览器访问 SphereEx-Console 平台,使用配置文件中账号和密码登录。

例如:192.168.10.18:8080

内置超级管理员的用户名/密码: admin/admin

Console 首页

概览页

  • SphereEx-Console 的停止

登录 SphereEx-Console 所在主机,进入 SphereEx-Console 的安装目录,执行停止命令。

bin/stop.sh 
  • SphereEx-Console 的备份

登录 SphereEx-Boot 所在主机,指定 SphereEx-Console 的名称进行卸载。

# spex console backup -n {name}

Ghost 配置使用说明 #

Ghost 作为集群的生态工具,配合 SphereEx-Console 实现 DDL 在线执行。

Ghost 下载地址:https://github.com/github/gh-ost/releases

安装 Ghost #

以 gh-ost-binary-linux-amd64-20231207144046.tar.gz 压缩包为例

  • 解压 gh-ost-binary-linux-amd64-20231207144046.tar.gz
tar -zxvf gh-ost-binary-linux-amd64-20231207144046.tar.gz
  • 在 console 的 conf 目录下创建 ghost 目录
cd ./conf
mkdir ghost
  • 把解压后得到的 gh-ost 文件复制到 console 下的 conf/ghost 目录下
  • 添加可执行权限
chmod +x gh-ost 

配置Ghost #

  • 在 SphereEx-Console 后台数据库中查看 Ghost 的相关配置
mysql> use console;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from `dictionary` where `category`='ghost' and `type`='ghost';
+----+----------+-------+----------+-------------------------------+---------------+---------------------+---------------------+
| id | category | type  | property | value                         | description   | create_time         | update_time         |
+----+----------+-------+----------+-------------------------------+---------------+---------------------+---------------------+
| 91 | ghost    | ghost | enabled  | true                          | true or false | 2024-05-17 21:22:36 | 2024-05-17 21:22:36 |
| 92 | ghost    | ghost | workDir  | /Users/root/temp/ghost | ghost path    | 2024-05-17 21:22:36 | 2024-05-17 21:22:36 |
+----+----------+-------+----------+-------------------------------+---------------+---------------------+---------------------+
2 rows in set (0.06 sec)
  • 修改配置
-- 开启 ghost, 默认是 true (可选值 true 或者 false)
update `dictionary` set `value`='true' where `category`='ghost' and `type`='ghost' and `property`='enabled';

-- 设置 ghost 的路径, 默认 classpath:ghost
-- 配置方式一,classpath:ghost 表示 console 下的 conf/ghost 目录,
-- 配置方式二,设置 gh-ost 可执行程序的绝对目录路径 如 /xx/xx/ghost
update `dictionary` set `value`='classpath:ghost' where `category`='ghost' and `type`='ghost' and `property`='workDir';

SphereEx-Console 调用 Ghost 的策略 #

开启 ghost 后执行如下 DDL 语句的策略如下

  • add column 时大于等于 5.7 版本,小于 8.0.12 版本时会使用 ghost
  • drop column 时大于等于 5.7 版本,小于 8.0.29 版本时会使用 ghost