麒麟 arm64 环境编译部署 mysql

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 麒麟 arm64 环境编译部署 mysql

mysql 各大版本下载地址

环境准备

NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

内核版本

4.19.90-17.ky10.aarch64

准备编译环境

yum install -y gcc gcc-c++ make cmake ncurses ncurses-devel bison
useradd mysql -s /sbin/nologin

下载解压安装包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.29.tar.gz
tar xvf mysql-boost-5.7.29.tar.gz
cd mysql-5.7.29

cmake 参数

mysql 编译参数

Formats Description Default Introduced Removed
BUILD_CONFIG 使用与官方版本相同的构建选项
CMAKE_BUILD_TYPE 要生产的构建类型 RelWithDebInfo
CMAKE_CXX_FLAGS C++ 编译器的标志
CMAKE_C_FLAGS C 编译器的标志
CMAKE_INSTALL_PREFIX 安装目录 /usr/local/mysql
COMPILATION_COMMENT 编译与评论
CPACK_MONOLITHIC_INSTALL 包构建是否产生单个文件 OFF
DEFAULT_CHARSET 默认服务器字符集 latin1
DEFAULT_COLLATION 默认服务器排序规则 latin1_swedish_ci
DISABLE_PSI_COND 排除性能模式条件检测 OFF
DISABLE_PSI_FILE 排除性能模式文件检测 OFF
DISABLE_PSI_IDLE 排除性能模式空闲检测 OFF
DISABLE_PSI_MEMORY 排除性能模式内存检测 OFF
DISABLE_PSI_METADATA 排除性能模式元数据检测 OFF
DISABLE_PSI_MUTEX 排除性能模式互斥检测 OFF
DISABLE_PSI_PS 排除性能模式准备好的语句 OFF
DISABLE_PSI_RWLOCK 排除性能模式 rwlock 检测 OFF
DISABLE_PSI_SOCKET 排除性能模式套接字检测 OFF
DISABLE_PSI_SP 排除 Performance Schema 存储程序检测 OFF
DISABLE_PSI_STAGE 排除 Performance Schema 阶段检测 OFF
DISABLE_PSI_STATEMENT 排除性能模式语句检测 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除性能模式语句_digest 检测 OFF
DISABLE_PSI_TABLE 排除性能模式表检测 OFF
DISABLE_PSI_THREAD 排除性能模式线程检测 OFF
DISABLE_PSI_TRANSACTION 排除性能模式事务检测 OFF
DOWNLOAD_BOOST 是否下载Boost库 OFF
DOWNLOAD_BOOST_TIMEOUT 下载 Boost 库的超时时间(以秒为单位) 600
ENABLED_LOCAL_INFILE 是否为 LOAD DATA 启用 LOCAL OFF
ENABLED_PROFILING 是否启用查询分析代码 ON
ENABLE_DOWNLOADS 是否下载可选文件 OFF
ENABLE_DTRACE 是否包含 DTrace 支持
ENABLE_GCOV 是否包含 gcov 支持
ENABLE_GPROF 启用 gprof(仅限优化的 Linux 版本) OFF
FORCE_UNSUPPORTED_COMPILER 是否允许不支持的编译器 OFF
IGNORE_AIO_CHECK 使用-DBUILD_CONFIG=mysql_release,忽略libaio检查 OFF
INSTALL_BINDIR 用户可执行文件目录 PREFIX/bin
INSTALL_DOCDIR 文档目录 PREFIX/docs
INSTALL_DOCREADMEDIR 自述文件目录 PREFIX
INSTALL_INCLUDEDIR 头文件目录 PREFIX/include
INSTALL_INFODIR 信息文件目录 PREFIX/docs
INSTALL_LAYOUT 选择预定义的安装布局 STANDALONE
INSTALL_LIBDIR 库文件目录 PREFIX/lib
INSTALL_MANDIR 手册页目录 PREFIX/man
INSTALL_MYSQLKEYRINGDIR keyring_file 插件数据文件的目录 platform specific 5.7.11
INSTALL_MYSQLSHAREDIR 共享数据目录 PREFIX/share
INSTALL_MYSQLTESTDIR mysql测试目录 PREFIX/mysql-test
INSTALL_PKGCONFIGDIR mysqlclient.pc pkg-config 文件的目录 INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR 插件目录 PREFIX/lib/plugin
INSTALL_SBINDIR 服务器可执行目录 PREFIX/bin
INSTALL_SCRIPTDIR 脚本目录 PREFIX/scripts
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv 默认值 platform specific
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR libmysqld 的secure_file_priv 默认值
INSTALL_SHAREDIR aclocal/mysql.m4 安装目录 PREFIX/share
INSTALL_SUPPORTFILESDIR 额外的支持文件目录 PREFIX/support-files
MAX_INDEXES 每个表的最大索引 64
MEMCACHED_HOME 内存缓存路径;过时的 [none] 5.7.33
MUTEX_TYPE InnoDB 互斥类型 event
MYSQLX_TCP_PORT X Plugin 使用的 TCP/IP 端口号 33060 5.7.17
MYSQLX_UNIX_ADDR X Plugin 使用的 Unix 套接字文件 /tmp/mysqlx.sock 5.7.15
MYSQL_DATADIR 数据目录
MYSQL_MAINTAINER_MODE 是否启用 MySQL 维护者专用开发环境 OFF
MYSQL_PROJECT_NAME Windows/macOS 项目名称 MySQL
MYSQL_TCP_PORT TCP/IP 端口号 3306
MYSQL_UNIX_ADDR Unix 套接字文件 /tmp/mysql.sock
ODBC_INCLUDES ODBC 包括目录
ODBC_LIB_DIR ODBC 库目录
OPTIMIZER_TRACE 是否支持优化器跟踪
REPRODUCIBLE_BUILD 特别注意创建独立于构建位置和时间的构建结果 5.7.19
SUNPRO_CXX_LIBRARY Solaris 10+ 上的客户端链接库
SYSCONFDIR 选项文件目录
SYSTEMD_PID_DIR systemd 下 PID 文件的目录 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd 下 MySQL 服务的名称 mysqld
TMPDIR tmpdir 默认值
WIN_DEBUG_NO_INLINE 是否禁用函数内联 OFF
WITHOUT_xxx_STORAGE_ENGINE 从构建中排除存储引擎 xxx
WITH_ASAN 启用 AddressSanitizer OFF
WITH_ASAN_SCOPE 启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志 OFF 5.7.21
WITH_AUTHENTICATION_LDAP LDAP认证插件无法构建是否报错 OFF 5.7.19
WITH_AUTHENTICATION_PAM 构建 PAM 身份验证插件 OFF
WITH_AWS_SDK Amazon Web Services 软件开发工具包的位置 5.7.19
WITH_BOOST Boost 库源的位置
WITH_BUNDLED_LIBEVENT 构建 ndbmemcache 时使用捆绑的 libevent;过时的 ON 5.7.33
WITH_BUNDLED_MEMCACHED 构建ndbmemcache时使用捆绑的memcached;过时的 ON 5.7.33
WITH_CLASSPATH 构建 MySQL Cluster Connector for Java 时使用的类路径。默认为空字符串。 ``
WITH_CLIENT_PROTOCOL_TRACING 构建客户端协议跟踪框架 ON
WITH_CURL curl库的位置 5.7.19
WITH_DEBUG 是否包含调试支持 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用默认编译器选项 ON
WITH_DEFAULT_FEATURE_SET 是否使用默认功能集 ON
WITH_EDITLINE 使用哪个 libedit/editline 库 bundled
WITH_EMBEDDED_SERVER 是否搭建嵌入式服务器 OFF
WITH_EMBEDDED_SHARED_LIBRARY 是否构建共享嵌入式服务器库 OFF
WITH_ERROR_INSERT 在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 OFF
WITH_EXTRA_CHARSETS 要包括哪些额外的字符集 all
WITH_GMOCK googlemock 分发路径
WITH_INNODB_EXTRA_DEBUG 是否包括对 InnoDB 的额外调试支持。 OFF
WITH_INNODB_MEMCACHED 是否生成 memcached 共享库。 OFF
WITH_KEYRING_TEST 构建密钥环测试程序 OFF 5.7.11
WITH_LDAP 限内部使用 5.7.29
WITH_LIBEVENT 使用哪个 libevent 库 bundled
WITH_LIBWRAP 是否包含 libwrap(TCP 包装器)支持 OFF
WITH_LZ4 LZ4 库支持的类型 bundled 5.7.14
WITH_MECAB 编译 MeCab
WITH_MSAN 启用 MemorySanitizer OFF
WITH_MSCRT_DEBUG 启用 Visual Studio CRT 内存泄漏跟踪 OFF
WITH_NDBAPI_EXAMPLES 构建 API 示例程序 OFF
WITH_NDBCLUSTER 构建 NDB 存储引擎 ON
WITH_NDBCLUSTER_STORAGE_ENGINE 供内部使用;可能无法在所有情况下都按预期工作;用户应该改用 WITH_NDBCLUSTER ON
WITH_NDBMTD 构建多线程数据节点。 ON
WITH_NDB_BINLOG mysqld 默认启用二进制日志。 ON
WITH_NDB_DEBUG 生成用于测试或故障排除的调试版本。 OFF
WITH_NDB_JAVA 启用 Java 和 ClusterJ 支持的构建。默认启用。仅在 MySQL 集群中支持。 ON
WITH_NDB_PORT 使用此选项构建的管理服务器使用的默认端口。如果未使用此选项构建它,则管理服务器的默认端口为 1186。 [none]
WITH_NDB_TEST 包括 NDB API 测试程序。 OFF
WITH_NUMA 设置 NUMA 内存分配策略 5.7.17
WITH_PROTOBUF 使用哪个 Protocol Buffers 包 bundled 5.7.12
WITH_RAPID 是否构建快速开发周期插件 ON 5.7.12
WITH_SASL 限内部使用 5.7.29
WITH_SSL SSL 支持的类型 system
WITH_SYSTEMD 启用 systemd 支持文件的安装 OFF
WITH_TEST_TRACE_PLUGIN 构建测试协议跟踪插件 OFF
WITH_UBSAN 启用未定义的行为清理程序 OFF
WITH_UNIT_TESTS 使用单元测试编译 MySQL ON
WITH_UNIXODBC 启用 unixODBC 支持 OFF
WITH_VALGRIND 是否在 Valgrind 头文件中编译 OFF
WITH_ZLIB zlib 支持的类型 bundled
WITH_xxx_STORAGE_ENGINE 将存储引擎 xxx 静态编译到服务器中

开始编译

  • 定义变量,根据自己环境情况修改
export boost_home=/usr/local/src/mysql-5.7.29/boost
export mysql_home=/opt/mysql
  • make -j $(nproc) 表示使用所有的 cpu 线程进行编译,如果机器有业务使用,不建议使用 $(nproc)
cmake \
-DCMAKE_INSTALL_PREFIX=${mysql_home} \
-DSYSTEMD_PID_DIR=${mysql_home} \
-DMYSQL_UNIX_ADDR=${mysql_home}/mysql.sock \
-DMYSQL_DATADIR=${mysql_home}/data \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_BOOST=${boost_home}/boost_1_59_0 \
-DWITH_SYSTEMD=1 && \
make -j $(nproc) && \
make install

报错1

CMake Error at rapid/plugin/group_replication/rpcgen.cmake:100 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
rapid/plugin/group_replication/CMakeLists.txt:36 (INCLUDE)

-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-5.7.29/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-5.7.29/CMakeFiles/CMakeError.log".

wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
tar xvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4
./configure && make && make install 

配置 mysql

  • 等会配置文件会定义使用的用户为 mysql

    • 如果定义的是其他用户,就赋权其他的用户,以自己实际为准
chown -R mysql.mysql ${mysql_home}

修改配置文件

vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/opt/mysql
datadir=/opt/mysql/data
socket=/opt/mysql/mysql.sock
port=3306
character_set_server=utf8
# lower_case_table_names 让MYSQL不区分表名大小写
lower_case_table_names=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysql according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

数据库初始化

  • 更新环境变量
echo "export PATH=\$PATH:${mysql_home}/bin:${mysql_home}/lib" >> /etc/profile
source /etc/profile
mysqld --initialize-insecure \
--user=mysql \
--basedir=${mysql_home} \
--datadir=${mysql_home}/data

root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

初始化完成后,会出现上面的输出,创建的 root 用户仅本机可以访问,并且没有配置密码

  • --initialize-insecure - 创建一个密码为空的超级用户
  • --initialize - 创建一个随机密码的超级用户,并将其存储到日志中

    • 一般都使用空密码

启动 mysql

cp ${mysql_home}/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl daemon-reload
systemctl enable mysqld.service
systemctl start mysqld.service
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
60 26
|
15天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
35 5
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
76 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
38 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
92 3
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
127 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
69 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
276 2
|
7天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
62 15
|
7天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。