国产麒麟系统KylinOS Server V10 SP2安装MySQL 8.0.26—源码编译安装


分局还是
开发和人 2022-09-29 09:27:09 52143
分类专栏: 资讯

上一篇文档讲述了在国产麒麟系统KylinOS V10 SP2上以rpm包方式安装MySQL 8.0.28。

此篇文档是第二篇:使用MySQL源代码编译方式安装。

这次我们使用mysql 8.0.26版本的源代码编译,为什么不使用8.0.28版本的原因将在文档末尾讲述。

一: 操作系统环境检查

1.1 首先确认操作系统版本是KylinOS Server V10 SP2

麒麟操作系统Kylinos Server V10 SP2使用的安装介质是
Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso,执行以下命令查看版本:

cat /etc/kylin-release

c9596da88e8a32acca3d53ec5881dccf.png

cat /proc/version

d4d0ffb4400f9adaa15853b648112b96.png

1.2 检查系统是否自带MySQL或MariaDB

通过以下命令检查是否安装:

rpm -qa | grep mariadb

655800df74a2aa51eb7e664638bcccc7.png

如果系统已经安装了其它版本的MySQL或者MariaDB则要将其删除,执行以下命令删除:

rpm -e {mariadb-server,mariadb,mariadb-errmessage,mariadb-common}

1.3 安装编译代码所必须的依赖包

mysql 8.0源码编译依赖如下包,执行以下命令安装:

  1. yum install -y cmake make
  2. yum install -y git gcc gcc-c++
  3. yum install -y perl-Data-Dumper bzip2
  4. yum install -y ncurses ncurses-devel ncurses-base ncurses-libs
  5. yum install -y openssl openssl-devel openssl-libs
  6. yum install -y bzip2 bzip2-devel
  7. yum install -y libtirpc libtirpc-devel
  8. yum install -y readline readline-devel

查看cmake、make、gcc、gcc-c++版本以确认安装成功:

  1. cmake --version
  2. make --version
  3. gcc --version
  4. gcc-c++ --version

输出如下图:

24c8dbfcfb8adda54053b8c9b1b29350.png

1.4 安装编rpcgen

mysql 8.0的源码编译需要用到rpcgen包,这是用于自动生成RPC服务器程序代码的工具,它以一个规格说明文件(*.x)作为输入,对外输出一个C语言的源程序。

因为这个包没有包含在麒麟系统的安装镜像中,需要下载源码编译安装。

首先,下载rpc的源码包,下载链接如下:

https://codeload.github.com/thkukuk/rpcsvc-proto/tar.gz/refs/tags/v1.4.3

然后,编译安装源码包

  1. tar xzvf rpcsvc-proto-1.4.3.tar.gz
  2. cd rpcsvc-proto-1.4.3
  3. autogen.sh
  4. ./configure
  5. make & make install

最后,查看rpcgen版本确认安装成功

rpcgen --version

输出如下图:

810c0cc35857abf66143faae6ca560b0.png

二:准备MySQL源码包

此文档安装社区版MySQL 8.0.26,此版本可与Kylinos V10 SP2兼容。

2.1 下载MySQL源码包

打开MySQL官网下载页面,选择正确的筛选条件

https://downloads.mysql.com/archives/community/

  • Product Version 选择MySQL 8.0.26,
  • Operating System 选择Source Code,
  • OS Version 选择All Operating Systems(Generic)(Architecture Independent),

15ffd48f39ec1e86dc7319293e3fb184.png

下方源码包列表会出现两个选择,第一个不带boost的源码,第二个带boost的源码,这里我们直接选择第二个mysql-boost-8.0.26.tar.gz,省去单独安装boost的繁琐操作。

9969805a9dfe299749fff01869de9606.png

2.2 上传MySQL源码包

将MySQL 8.0.26的源码包上传到/root/Documents目录并解压,之后在解压的源码包目录中创建编译目录light,因为不允许在源码目录直接编译。

  1. cd /root/Documents
  2. tar xzvf mysql-boost-8.0.26.tar.gz
  3. cd mysql-8.0.26
  4. mkdir light
  5. cd light

三:编译安装MySQL

3.1 cmake

我将几乎能用到的全部选项都开启,供参考。实际可以根据自己需要修改,比如关闭Innodb引擎之外的其它引擎、修改安装目录、是否创建SYSTEMD服务文件等。

  1. cmake .. \
  2. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.26 \
  3. -DWITH_SYSTEMD=1 \
  4. -DENABLED_LOCAL_INFILE=ON \
  5. -DWITH_INNODB_MEMCACHED=ON \
  6. -DWITH_SSL=system \
  7. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  8. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  9. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  10. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  11. -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
  12. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  13. -DCOMPILATION_COMMENT="zsd edition" \
  14. -DDOWNLOAD_BOOST=0 \
  15. -DWITH_BOOST=/root/Documents/mysql-8.0.26/boost \
  16. -DMYSQL_UNIX_ADDR=/data/mysql/data/mysqld.sock \
  17. -DSYSCONFDIR=/data/mysql/data \
  18. -DMYSQL_DATADIR=/data/mysql \
  19. -DFORCE_INSOURCE_BUILD=1 \
  20. -DCMAKE_CXX_COMPILER=/usr/bin/g++ \
  21. -DCMAKE_C_COMPILER=/usr/bin/gcc

3.2 make

mysql 8源码编译对内存需求较大,最好准备32G以上内存;

为了提高编译速度,可以根据CPU核数开启并行编译,这里我使用12个并行编译。

make -j 12

3.3 make install

make编译完成后就可以安装了,安装目录对应cmake中的-DCMAKE_INSTALL_PREFIX

make install

四:配置启动MySQL

4.1 创建mysql用户

  1. groupadd mysql
  2. useradd -M -g mysql -s /sbin/nologin mysql

4.2 创建数据目录

  1. mkdir /data/mysql/{data,log,redo,undo,arch} -p
  2. chown mysql.mysql /data -R

b4db65c45f72ac88a75fed78f9a9d75b.png

4.3 创建mysql环境变量

创建mysql目录软连接

ln -s /usr/local/mysql-8.0.26  /usr/local/mysql

创建mysql环境变量配置文件

  1. echo 'MYSQL_HOME=/usr/local/mysql' >> /etc/profile.d/mysql.sh
  2. echo 'PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile.d/mysql.sh
  3. echo 'export PATH' >> /etc/profile.d/mysql.sh
  4. source /etc/profile.d/mysql.sh

4.4 创建my.cnf配置文件

编辑/etc/my.cnf文件

vim /etc/my.cnf

输入以下内容到/etc/my.cnf中,此配置将data、redolog、undo、binlog分别置于独立目录。

  1. [mysql]
  2. socket=/data/mysql/data/mysqld.sock
  3. [mysqld]
  4. base config
  5. server-id=210
  6. basedir=/usr/local/mysql
  7. datadir=/data/mysql/data
  8. socket=/data/mysql/data/mysqld.sock
  9. pid-file=/data/mysql/data/mysqld.pid
  10. log-error=/data/mysql/log/mysqld.log
  11. query config
  12. join_buffer_size = 128M
  13. sort_buffer_size = 16M
  14. read_buffer_size = 16M
  15. read_rnd_buffer_size = 8M
  16. open table config
  17. table_open_cache=2000
  18. table_open_cache_instances=16
  19. connection config
  20. max_connections=2000
  21. thread_cache_size=200
  22. binlog config
  23. log_bin=/data/mysql/log/binlog
  24. log_bin_index=/data/mysql/log/binlog.index
  25. binlog_format=ROW
  26. max_binlog_size=1G
  27. binlog_cache_size=16M
  28. binlog_expire_logs_seconds=604800
  29. enforce_gtid_consistency=ON
  30. gtid_mode=ON
  31. general log config
  32. general_log=OFF
  33. general_log_file=/data/mysql/log/mysqld.gnl
  34. slow query config
  35. log_output=FILE
  36. long_query_time=1
  37. slow_query_log=ON
  38. slow_query_log_file=/data/mysql/log/mysqld.slow
  39. innodb redo log config
  40. innodb_log_file_size=1G
  41. innodb_log_files_in_group=3
  42. innodb_log_buffer_size=16M
  43. innodb_log_group_home_dir=/data/mysql/redo
  44. innodb_redo_log_archive_dirs=/data/mysql/arch
  45. innodb undo log config
  46. innodb_max_undo_log_size=1G
  47. innodb_undo_tablespaces=2
  48. innodb_undo_directory=/data/mysql/undo
  49. innodb config
  50. innodb_data_file_path=ibdata1:12M:autoextend
  51. innodb_temp_data_file_path=ibtmp1:12M:autoextend
  52. innodb_temp_tablespaces_dir=./innodb_temp/
  53. innodb_autoextend_increment=64
  54. innodb_buffer_pool_size=8G
  55. innodb_open_files=10000
  56. open_files_limit=10000

4.5 初始化mysql

mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

4.6 配置systemd mysqld服务

  1. cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
  2. cp /usr/local/mysql/usr/lib/systemd/system/mysqld@.service /usr/lib/systemd/system/
  3. systemctl enable mysqld

4.7 启动MySQL

安装完成后MySQL服务默认并未启动,可以通过以下命令查看到状态:

systemctl status mysqld

7f57fc091215879053b270ad3ce90555.png

启动mysql

systemctl start mysqld

852b4f606176377b6701827c34cc8e48.png

4.8 首次登录mysql

在MySQL初始化(initialize)完成后会自动为MySQL的root用户生成一个随机初始化密码,并在MySQL的errorlog文件中记录下来,我们要找到它并用它登录MySQL,修改root用户密码后才能执行任何其它操作:

  • 找到初始化密码
grep password /data/mysql/log/mysqld.log

下图红色方框中即为初始化密码

2c2467b3d1571aaa8c0e1108c7ac3e85.png

  • 使用上面的初始化密码登录MySQL
mysql -uroot -p

e99eb976fc0aff325575732c12ce8a7b.png

  • 修改root密码

使用初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码:

mysql-operator">> alter user user()  identified  by  'LaoGeDB123!';

9d3840918fad5c487ac8bc247fe63cc8.png

密码修改成功后,执行以下命令查看MySQL基本信息:

mysql-operator">>status

1465f32f1d8e64ca0ca601bea12f6892.png

695cffb6d3a18dc4a534a6a76cd0d071.png

一切正常,至此安装完成。


补充:

为什么没有使用8.0.28版本,而是使用了8.0.26版本呢?

是因为我在实际编译8.0.28的时候遇到了make失败的问题并且研究了很久没有解决,后来改用8.0.27版问题依旧,而8.0.26版本没有出现问题,可以顺利编译成功。而我在Centos8.4版本上编译8.0.28的源代码也可以成功。

初步判断问题是跟麒麟V10 SP2的cmake、gcc、gcc-c++、make的版本有关。

V10 SP2自带的版本如下:

cmake : 3.16.5

make : 4.3

gcc : 7.3.0

gcc-c++ : 7.3.0

Centos8.4自带的版本如下:

cmake : 3.18.2

make : 4.2.1

gcc : 8.4.1

gcc-c++ : 8.4.1

目前我从麒麟官方未拿到对应的更新包,所以这个问题暂时无解,等待V10 SP3发布后更新吧。


作者:老哥讲数据库

简介:数据库高级架构师 | Oracle 11g&12c OCM认证 | MySQL 5.7&8.0 OCP认证

原创文章,转载请注明来源。

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树安装和登录安装14289 人正在系统学习中

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=10663
赞同 0
评论 0 条
开发和人L0
粉丝 0 发表 6 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2672
【软件正版化】软件正版化工作要点  2637
统信UOS试玩黑神话:悟空  2532
信刻光盘安全隔离与信息交换系统  2216
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1092
grub引导程序无法找到指定设备和分区  743
WPS City Talk · 校招西安站来了!  15
看到某国的寻呼机炸了,就问你用某水果手机发抖不?  14
金山办公2024算法挑战赛 | 报名截止日期更新  14
有在找工作的IT人吗?  13
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!