目录
本篇文章介绍在 云服务器Flexus X实例 上安装开源数据库 MySQL,MySQL 是一个非常流行的开源数据库,使用人数非常多。云服务器Flexus X实例 具有易搭建、更实惠、易维护、更安全等优势,集成了主机安全、云监控、云备份。
一、MySQL 介绍
MySQL 是一个全球流行的开源数据库。DB-Engines 的数据显示,MySQL 在全球最受欢迎的数据库排名中高居第二位,仅次于 Oracle Database。
目前,全球访问量最高的流行应用的背后都有 MySQL 的身影,例如 Facebook、Twitter、Netflix、Uber、Airbnb、Shopify 和 Booking.com。
作为一个开源数据库,MySQL 在超过 25 年的发展历程中与全球用户密切合作,推出了众多先进功能,您喜欢的一些应用或编程语言很可能就是由 MySQL Database 提供支持的。
MySQL 中的 "SQL" 指的是“结构化查询语言”,它是访问数据库时最常用的标准化语言。根据您的编程环境,您可以直接输入 SQL 来执行操作(例如生成报告),可以将 SQL 语句嵌入基于其他语言编写的代码中,或使用隐藏了 SQL 语法的特定语言 API。
1.1 MySQL 优势
MySQL 快速、可靠、可扩展、简单易用。它最初是为了快速处理大型数据库而开发的,多年来一直应用于严苛生产环境。 MySQL 的主要优势包括:
(1)简单易用:开发人员可以在数分钟内完成 MySQL 安装,可以轻松管理数据库。
(2)可靠性:MySQL 是最成熟和使用最广泛的数据库之一。自问世 25 年来,它经受住了各种场景考验,旗下用户不乏全球知名的大型企业。
(3)可扩展性:MySQL 可以灵活扩展,满足访问量最高的应用的需求。得益于 MySQL 的原生复制架构,Facebook 等企业能够轻松扩展应用,满足数十亿用户需求。
(4)性能:多项标准行业基准测试(包括 TPC-H、TPC-DS 和 CH-benCHmark)的数据显示,MySQL HeatWave 不仅速度更快,而且成本更低。
(5)高可用性:MySQL 采用了一整套原生、完全集成的复制技术,具有高可用性和灾难恢复能力。
二、MySQL 部署
2.1 安装 Docker
然后,执行命令安装 docker,如下所示。
root@flexusx-7305:~# sudo apt install docker-ce
查看 docker 版本。
root@flexusx-7305:~# docker --version
Docker version 27.2.1, build 9e34c9b
root@flexusx-7305:~#
最后,安装 docker-compose,执行如下命令。
root@flexusx-7305:~# sudo apt install docker-compose
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
redis-server redis-tools
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
python3-cached-property python3-docker python3-dockerpty python3-docopt python3-importlib-metadata python3-jsonschema python3-more-itertools python3-pyrsistent python3-texttable python3-websocket python3-zipp
Suggested packages:
python-jsonschema-doc
Recommended packages:
docker.io
The following NEW packages will be installed:
docker-compose python3-cached-property python3-docker python3-dockerpty python3-docopt python3-importlib-metadata python3-jsonschema python3-more-itertools python3-pyrsistent python3-texttable python3-websocket python3-zipp
0 upgraded, 12 newly installed, 0 to remove and 33 not upgraded.
Need to get 412 kB of archives.
After this operation, 2,414 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://repo.huaweicloud.com/ubuntu focal/universe amd64 python3-cached-property all 1.5.1-4 [10.9 kB]
Get:2 http://repo.huaweicloud.com/ubuntu focal/universe amd64 python3-websocket all 0.53.0-2ubuntu1 [
到这里 Docker 安装完成。
2.2 拉取 MySQL 镜像
拉取 MySQL 镜像,执行 docker pull 命令拉取,如下所示。
root@flexusx-7305:~# docker pull registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36
8.0.36: Pulling from fastgpt/mysql
Digest: sha256:c57363379dee26561c2e554f82e70704be4c8129bd0d10e29252cc0a34774004
Status: Image is up to date for registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36
registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36
root@flexusx-7305:~#
如上所示,镜像 mysql 已经存在,如果没有的话,可以通过 docker pull 拉取。
2.3 添加规则
pgvector 对应的端口是 3307,需要将 3307 端口加入到准入规则中。
首先,在基本信息中,找到安全组,点击进入安全组,如下所示。
然后,点击 配置规则 配置 3307 端口,如下所示。
设置优先级,然后在协议端口中添加端口,点击确定,如下所示。
可以看到 3307 端口已经被加入到安全规则中,如下所示。
三、MySQL 运行
3.1 运行 MySQL 镜像
首先,查看一下本地 MySQL 镜像,执行如下命令。
root@flexusx-7305:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox latest 0f26cf6654ad 2 weeks ago 315MB
registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt v4.8.9 bc394a806301 6 weeks ago 356MB
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitea/gitea 1.22.1 b3de72970178 2 months ago 167MB
registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api v0.6.6 40efbc4449c7 4 months ago 79.5MB
registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector v0.7.0 6e0cb183450e 5 months ago 429MB
registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql 8.0.36 f5f171121fa3 6 months ago 603MB
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/justsong/one-api v0.6.0 36bd98ce5a7c 7 months ago 48.4MB
registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo 5.0.18 021e1bd71d92 16 months ago 662MB
daocloud.io/library/mysql 8 26d0ac143221 3 years ago 546MB
daocloud.io/library/mysql latest 8457e9155715 3 years ago 546MB
root@flexusx-7305:~#
如上所示,mysql 镜像已经存在本地(registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36)。
然后,执行 docker run 命令运行 mysql 容器,并指定 mysql 登录密码以及端口,如下所示。
root@flexusx-7305:~# docker run -d --name=mysql-server-test -p 3307:3306 -e MYSQL_ROOT_PASSWORD=mysql registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36
2ef1bc06d47dc093952571b949973e75bea2789296075178293ce8a6e1a5641b
root@flexusx-7305:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ef1bc06d47d registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 "docker-entrypoint.s…" 15 seconds ago Up 15 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp, [::]:3307->3306/tcp mysql-server-test
982a9ed73524 registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:54333->5432/tcp, [::]:54333->5432/tcp pgvectorface
68a1f9a73e58 registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.9 "sh -c 'node --max-o…" 11 days ago Up 11 days 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp fastgpt
b57af8cd1b6b registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 "/one-api" 11 days ago Up 11 days 0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp oneapi
2de37c379c6a registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 "docker-entrypoint.s…" 11 days ago Up 11 days 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
9d7906452f26 registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:latest "docker-entrypoint.s…" 11 days ago Up 11 days sandbox
6f9c7f088d9d registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 "bash -c 'openssl ra…" 11 days ago Up 11 days 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongo
3867cf7f6df9 registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 "docker-entrypoint.s…" 11 days ago Up 11 days 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp pg
89bb9f7a3dd1 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/justsong/one-api:v0.6.0 "/one-api" 12 days ago Up 11 days 0.0.0.0:3002->3000/tcp, [::]:3002->3000/tcp one-api
65fe1c102df6 daocloud.io/library/mysql:8 "docker-entrypoint.s…" 2 weeks ago Up 11 days 3306/tcp, 33060/tcp root_db_1
root@flexusx-7305:~#
通过 docker ps 命令查看当前正在运行的容器,如上所示,mysql容器已经正常运行。
3.2 安装 mysql 客户端
连接 mysql 需要先安装 mysql 客户端,执行 apt-get 命令安装 mysql-client 客户端,命令如下所示。
root@flexusx-7305:~# apt-get install mysql-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-perl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl
liblwp-mediatypes-perl libmecab2 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-server-core-8.0 redis-server redis-tools
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
mysql-client
0 upgraded, 1 newly installed, 0 to remove and 61 not upgraded.
Need to get 9,364 B of archives.
After this operation, 35.8 kB of additional disk space will be used.
Get:1 http://repo.huaweicloud.com/ubuntu focal-updates/main amd64 mysql-client all 8.0.39-0ubuntu0.20.04.1 [9,364 B]
Fetched 9,364 B in 0s (315 kB/s)
Selecting previously unselected package mysql-client.
(Reading database ... 123509 files and directories currently installed.)
Preparing to unpack .../mysql-client_8.0.39-0ubuntu0.20.04.1_all.deb ...
Unpacking mysql-client (8.0.39-0ubuntu0.20.04.1) ...
Setting up mysql-client (8.0.39-0ubuntu0.20.04.1) ...
root@flexusx-7305:~#
如上所示,mysql-client 软件包安装成功,下面开始连接 mysql 数据库。
3.2 本地连接 mysql 数据库
执行 mysql 命令连接本地 mysql 数据库,如下所示。
root@flexusx-7305:~# mysql -h 0.0.0.0 -u root -P 3307 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
-P 参数是指定端口,如果本地有多个 mysql 服务,可以通过指定 -P 端口来访问指定的数据库,如果不指定端口,可能报错,如下所示。
root@flexusx-7305:~# mysql -h 127.0.0.1 -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'172.19.0.1' (using password: YES)
四、总结
通过在 云服务器Flexus X实例 上部署开源数据库 MySQL,验证了 云服务器Flexus X实例 的安全和稳定性,完全可以支持开源数据库 MySQL 的部署。Flexus云服务器X实例 简化了购买ECS过程中的配置,并且功能接近ECS, 同时还具备独有特点,例如Flexus云服务器X实例具有更灵活的vCPU内存配比、支持热变配不中断业务变更规格、支持性能模式等。Flexus云服务器X实例相较于Flexus应用服务器L实例规格配置和功能使用更为灵活,限制较少,赶紧用起来吧!