麒麟 arm64 环境编译部署 mysql

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 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
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
|
1月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
139 26
|
1月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
64 5
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
150 3
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
157 2
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
310 2
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
81 3
|
24天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
53 3
|
24天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
59 3
|
24天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
74 2

热门文章

最新文章