分享

国产麒麟操作系统(aarch64)上安装MySQL 5.7+

 宇宙之窗 2022-11-08 发布于福建

前言

近期要做国产操作系统的研究,需要安装 MySQL5.7+,服务器的架构是 aarch64,和常见的 x86 不一样,本次通过源码编译安装,过程中遇到不少坑,特此记录一下。

一、安装前准备

1、系统版本

先查看在自己服务器的系统版本信息,以下给出多个查看麒麟系统版本信息的语句:

[root@localhost ~]# rpm -qa | grep release
-------------------------------------------------------------------------------------------
kylin-release-10-24.6.p06.ky10.aarch64
-------------------------------------------------------------------------------------------

[root@localhost ~]# cat /etc/os-release
-------------------------------------------------------------------------------------------
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"
-------------------------------------------------------------------------------------------

[root@localhost ~]# cat /etc/kylin-release
-------------------------------------------------------------------------------------------
Kylin Linux Advanced Server release V10 (Tercel)
-------------------------------------------------------------------------------------------

[root@localhost ~]# cat /etc/.kyinfo 
-------------------------------------------------------------------------------------------
[dist]
name=Kylin-Server
milestone=10-SP1-Release-Build04-20200711
arch=arm64
beta=False
time=2020-07-11 17:16:54
dist_id=Kylin-Server-10-SP1-Release-Build04-20200711-arm64-2020-07-11 17:16:54
[servicekey]
key=650105
[os]
to=各软硬件厂商
term=2021-07-14
-------------------------------------------------------------------------------------------

2、MySQL

到官网上 https://downloads./archives/community/ 下载当前 5.7 版本的最新的稳定版本:

复制wget https://downloads./archives/get/p/23/file/mysql-5.7.31.tar.gz

3、Boost

在安装过程中,曾遇到 “CMake Error at cmake/boost.cmake:88 (MESSAGE)” 问题,需要安装 boost 解决,可以到 boost 的官网 https:///projects/boost/files/boost/ ,下载当前最新的稳定版本:

wget http://www./projects/boost/files/boost/1.74.0/boost_1_74_0.tar.gz

4、Rpcsvc

在安装过程中,曾遇到 “CMake Error at plugin/group_replication/libmysqlgcs/rpcgen.cmake:100 (MESSAGE): Could not find rpcgen” 问题,需要安装 rpcsvc 解决,可以到 GitHub 内对象的项目网站 https://github.com/thkukuk/rpcsvc-proto/releases/ ,下载当前最新的稳定版本:

复制wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz

二、安装 Boost

mkdir -p /usr/local/boost
cd /usr/local/boost
wget http://www./projects/boost/files/boost/1.74.0/boost_1_74_0.tar.gz
tar -xvzf boost_1_74_0.tar.gz

修改安装 MySQL 时的 make 语句,需要加上:
-DWITH_BOOST=/usr/local/boost

待尝试方案: yum install -y boost boost-devel boost-doc

三、安装 Rpcsvc

cd /data/tmp
wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz
xz -d rpcsvc-proto-1.4.2.tar.xz && tar xvf rpcsvc-proto-1.4.2.tar
cd rpcsvc-proto-1.4.2
./configure && make && make install 

四、安装 MySQL

1、安装规划

先规划下数据库安装所拜访的目录,因为我服务器的存储空间主要是挂在 /data 下,故我的摆放目录按下面的规划,不同情况请根据自己的实际情况进行调整:

软件安装位置: /data/mysql/soft
数据库文件位置: /data/mysql/data
运行临时文件位置: /data/mysql/temp
安装包位置: /data/tmp
软件版本: mysql-5.7.31
运行端口: 10003

2、前置准备

mkdir -p /data/tool
mkdir -p /data/mysql/soft
mkdir -p /data/mysql/data
mkdir -p /data/mysql/temp

groupadd mysql 
useradd -r -g mysql mysql -s /sbin/nologin -M
chown -R mysql:mysql /data/mysql/soft
chown -R mysql:mysql /data/mysql/data
chown -R mysql:mysql /data/mysql/temp

yum install -y autoconf automake bison libtool make cmake imake gcc gcc-c++ libaio libaio-devel ncurses ncurses-devel expat-devel libxml2-devel 

3、开始安装

cd /data/tmp
tar -zxvf mysql-5.7.31.tar.gz

cd /data/tmp/mysql-5.7.31
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql/soft -DMYSQL_UNIX_ADDR=/data/mysql/soft/mysql.sock -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=10003 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DENABLE_DOWNLOADS=1 -DENABLED_LOCAL_INFILE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_BOOST=/usr/local/boost

# cmake结束后开始编译源码,这一步时间会非常长...
make && make install

# 修改目录拥有者
chown -Rf mysql:mysql /data/mysql/soft

# 创建自带的库和表
cd /data/mysql/soft
./bin/mysqld --initialize --user=mysql --basedir=/data/mysql/soft --datadir=/data/mysql/data

最后出现的这一行,需要记下,这个是数据库 root 的密码,后面要修改:
[Note] A temporary password is generated for root@localhost: cnwXMj4)CTN&

4、编写配置

请根据自己的实际情况修改:

mv /etc/my.cnf /etc/my.cnf.bak
nano /etc/my.cnf
# ///////////////////////////////////////////////////////////////////////////////////////////
[client]
socket=/data/mysql/temp/mysql.sock
no-beep
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
basedir=/data/mysql/soft
datadir=/data/mysql/data
port=10003
socket=/data/mysql/temp/mysql.sock
pid-file=/data/mysql/temp/mysqld.pid

skip-name-resolve
character-set-server=utf8
explicit_defaults_for_timestamp=true

# Server Id.
server-id=1
max_connections=2000
query_cache_size=0
table_open_cache=2000
tmp_table_size=246M
thread_cache_size=300

# 限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用
thread_stack = 192k
key_buffer_size=512M
read_buffer_size=4M
read_rnd_buffer_size=32M
default-storage-engine=INNODB
innodb_data_home_dir=/data/mysql/data
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=16M
innodb_buffer_pool_size=256M
innodb_log_file_size=128M
innodb_thread_concurrency=128
innodb_autoextend_increment=1000
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=128M
max_allowed_packet=1024M
max_connect_errors=2000
open_files_limit=4161
query_cache_type=0
sort_buffer_size=32M
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

# 批量插入数据缓存大小,可以有效提高插入效率,默认为8M
bulk_insert_buffer_size = 64M
interactive_timeout = 120
wait_timeout = 120
log-bin-trust-function-creators=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# ///////////////////////////////////////////////////////////////////////////////////////////

5、数据库设置

# 设置启动服务和开机自启动
cp /data/mysql/soft/support-files/mysql.server  /etc/init.d/mysqld
chkconfig mysqld on

# 映射 mysql 到 /usr/bin 目录下,这样就可以直接使用 mysql 命令了
ln -s /data/mysql/soft/bin/mysql /usr/bin/mysql

# 启动数据库
service mysqld start

# 本机登陆
mysql -uroot -p'cnwXMj4)CTN&'
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('PASSWORD');

# 远程登陆
use mysql;
select host,user from user;
grant all privileges on *.* to 'root'@'%' identified by 'PASSWORD' with grant option;
flush privileges;
exit

# 改后测试
service mysqld restart
mysql -uroot -p'PASSWORD'
exit

原创不易,如需转载,请标明出处!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多