麒麟 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 编译参数

FormatsDescriptionDefaultIntroducedRemoved
BUILD_CONFIG使用与官方版本相同的构建选项
CMAKE_BUILD_TYPE要生产的构建类型RelWithDebInfo
CMAKE_CXX_FLAGSC++ 编译器的标志
CMAKE_C_FLAGSC 编译器的标志
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 启用 LOCALOFF
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_MYSQLKEYRINGDIRkeyring_file 插件数据文件的目录platform specific5.7.11
INSTALL_MYSQLSHAREDIR共享数据目录PREFIX/share
INSTALL_MYSQLTESTDIRmysql测试目录PREFIX/mysql-test
INSTALL_PKGCONFIGDIRmysqlclient.pc pkg-config 文件的目录INSTALL_LIBDIR/pkgconfig
INSTALL_PLUGINDIR插件目录PREFIX/lib/plugin
INSTALL_SBINDIR服务器可执行目录PREFIX/bin
INSTALL_SCRIPTDIR脚本目录PREFIX/scripts
INSTALL_SECURE_FILE_PRIVDIRsecure_file_priv 默认值platform specific
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIRlibmysqld 的secure_file_priv 默认值
INSTALL_SHAREDIRaclocal/mysql.m4 安装目录PREFIX/share
INSTALL_SUPPORTFILESDIR额外的支持文件目录PREFIX/support-files
MAX_INDEXES每个表的最大索引64
MEMCACHED_HOME内存缓存路径;过时的[none]5.7.33
MUTEX_TYPEInnoDB 互斥类型event
MYSQLX_TCP_PORTX Plugin 使用的 TCP/IP 端口号330605.7.17
MYSQLX_UNIX_ADDRX Plugin 使用的 Unix 套接字文件/tmp/mysqlx.sock5.7.15
MYSQL_DATADIR数据目录
MYSQL_MAINTAINER_MODE是否启用 MySQL 维护者专用开发环境OFF
MYSQL_PROJECT_NAMEWindows/macOS 项目名称MySQL
MYSQL_TCP_PORTTCP/IP 端口号3306
MYSQL_UNIX_ADDRUnix 套接字文件/tmp/mysql.sock
ODBC_INCLUDESODBC 包括目录
ODBC_LIB_DIRODBC 库目录
OPTIMIZER_TRACE是否支持优化器跟踪
REPRODUCIBLE_BUILD特别注意创建独立于构建位置和时间的构建结果5.7.19
SUNPRO_CXX_LIBRARYSolaris 10+ 上的客户端链接库
SYSCONFDIR选项文件目录
SYSTEMD_PID_DIRsystemd 下 PID 文件的目录/var/run/mysqld
SYSTEMD_SERVICE_NAMEsystemd 下 MySQL 服务的名称mysqld
TMPDIRtmpdir 默认值
WIN_DEBUG_NO_INLINE是否禁用函数内联OFF
WITHOUT_xxx_STORAGE_ENGINE从构建中排除存储引擎 xxx
WITH_ASAN启用 AddressSanitizerOFF
WITH_ASAN_SCOPE启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志OFF5.7.21
WITH_AUTHENTICATION_LDAPLDAP认证插件无法构建是否报错OFF5.7.19
WITH_AUTHENTICATION_PAM构建 PAM 身份验证插件OFF
WITH_AWS_SDKAmazon Web Services 软件开发工具包的位置5.7.19
WITH_BOOSTBoost 库源的位置
WITH_BUNDLED_LIBEVENT构建 ndbmemcache 时使用捆绑的 libevent;过时的ON5.7.33
WITH_BUNDLED_MEMCACHED构建ndbmemcache时使用捆绑的memcached;过时的ON5.7.33
WITH_CLASSPATH构建 MySQL Cluster Connector for Java 时使用的类路径。默认为空字符串。``
WITH_CLIENT_PROTOCOL_TRACING构建客户端协议跟踪框架ON
WITH_CURLcurl库的位置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_GMOCKgooglemock 分发路径
WITH_INNODB_EXTRA_DEBUG是否包括对 InnoDB 的额外调试支持。OFF
WITH_INNODB_MEMCACHED是否生成 memcached 共享库。OFF
WITH_KEYRING_TEST构建密钥环测试程序OFF5.7.11
WITH_LDAP限内部使用5.7.29
WITH_LIBEVENT使用哪个 libevent 库bundled
WITH_LIBWRAP是否包含 libwrap(TCP 包装器)支持OFF
WITH_LZ4LZ4 库支持的类型bundled5.7.14
WITH_MECAB编译 MeCab
WITH_MSAN启用 MemorySanitizerOFF
WITH_MSCRT_DEBUG启用 Visual Studio CRT 内存泄漏跟踪OFF
WITH_NDBAPI_EXAMPLES构建 API 示例程序OFF
WITH_NDBCLUSTER构建 NDB 存储引擎ON
WITH_NDBCLUSTER_STORAGE_ENGINE供内部使用;可能无法在所有情况下都按预期工作;用户应该改用 WITH_NDBCLUSTERON
WITH_NDBMTD构建多线程数据节点。ON
WITH_NDB_BINLOGmysqld 默认启用二进制日志。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 包bundled5.7.12
WITH_RAPID是否构建快速开发周期插件ON5.7.12
WITH_SASL限内部使用5.7.29
WITH_SSLSSL 支持的类型system
WITH_SYSTEMD启用 systemd 支持文件的安装OFF
WITH_TEST_TRACE_PLUGIN构建测试协议跟踪插件OFF
WITH_UBSAN启用未定义的行为清理程序OFF
WITH_UNIT_TESTS使用单元测试编译 MySQLON
WITH_UNIXODBC启用 unixODBC 支持OFF
WITH_VALGRIND是否在 Valgrind 头文件中编译OFF
WITH_ZLIBzlib 支持的类型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
posted @ 2024-02-22 17:07  月巴左耳东  阅读(219)  评论(0)    收藏  举报  来源