麒麟V10编译安装MySQL8

操作系统环境检查

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

cat /etc/kylin-release

cat /proc/version

查看是否已安装mariadb

rpm -qa | grep mariadb


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

yum remove mariadb

安装依赖

yum install -y cmake make
yum install -y git gcc gcc-c++
yum install -y perl-Data-Dumper bzip2
yum install -y ncurses ncurses-devel ncurses-base ncurses-libs
yum install -y openssl openssl-devel openssl-libs
yum install -y bzip2 bzip2-devel
yum install -y libtirpc libtirpc-devel
yum install -y readline readline-devel
yum install -y perl
yum install -y gettext-devel

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

cmake --version
make --version
gcc --version

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

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

cd /home
wget -O rpcsvc-proto-1.4.3.tar.gz https://codeload.github.com/thkukuk/rpcsvc-proto/tar.gz/refs/tags/v1.4.3
tar -xzvf rpcsvc-proto-1.4.3.tar.gz
cd rpcsvc-proto-1.4.3
./autogen.sh
./configure
make & make install

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

rpcgen --version

下载MySQL源码包

下载地址:https://downloads.mysql.com/archives/community/
此文档安装的社区版MySQL 8.0.26,此版本可与Kylinos V10 SP2兼容。
下载并解压,之后在解压的源码包目录中创建编译目录build(Mysql不建议直接在源码目录编译,会提示Please do not build in-source的错误)。

cd /home
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-boost-8.0.26.tar.gz
tar -xzvf mysql-boost-8.0.26.tar.gz
cd mysql-8.0.26
mkdir build
cd build

编译安装MySQL

cmake .. -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -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 -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=../boost -DWITH_SYSTEMD=1
make -j4
make install

配置启动MySQL

创建mysql用户

groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql

创建数据目录

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

创建MySQL环境变量

创建MySQL目录软连接

ln -s /data/mysql  /usr/local/mysql

创建MySQL环境变量配置文件

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

查看MySQL版本信息

#任意目录输入以下命令:
mysql --version

创建my.cnf配置文件

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

[mysql]
socket=/data/mysql/data/mysqld.sock
[mysqld]
###base config###
server-id=1
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/data/mysqld.sock
pid-file=/data/mysql/data/mysqld.pid
log-error=/data/mysql/log/mysqld.log
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
###query config###
join_buffer_size = 128M
sort_buffer_size = 16M
read_buffer_size = 16M
read_rnd_buffer_size = 8M
###open table config###
table_open_cache=2000
table_open_cache_instances=16
###connection config###
max_connections=2000
thread_cache_size=200
###binlog config###
log_bin=/data/mysql/log/binlog
log_bin_index=/data/mysql/log/binlog.index
binlog_format=ROW
max_binlog_size=1G
binlog_cache_size=16M
binlog_expire_logs_seconds=604800
enforce_gtid_consistency=ON
gtid_mode=ON
###general log config###
general_log=OFF
general_log_file=/data/mysql/log/mysqld.gnl
###slow query config###
log_output=FILE
long_query_time=1
slow_query_log=ON
slow_query_log_file=/data/mysql/log/mysqld.slow
###innodb redo log config###
innodb_log_file_size=1G
innodb_log_files_in_group=3
innodb_log_buffer_size=16M
innodb_log_group_home_dir=/data/mysql/redo
innodb_redo_log_archive_dirs=/data/mysql/arch
###innodb undo log config###
#innodb_max_undo_log_size=1G
#innodb_undo_tablespaces=2
innodb_undo_directory=/data/mysql/undo
###innodb config###
#innodb_data_file_path=ibdata1:12M:autoextend
#innodb_temp_data_file_path=ibtmp1:12M:autoextend
#innodb_temp_tablespaces_dir=./#innodb_temp/
#innodb_autoextend_increment=64
innodb_buffer_pool_size=8G
innodb_open_files=10000
open_files_limit=10000
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

初始化mysql

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

配置systemd mysqld服务

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

启动MySQL

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

systemctl status mysqld

启动mysql

systemctl start mysqld
#查看是否已启动
netstat -anpt | grep 3306

首次登录mysql

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

grep password /data/mysql/log/mysqld.log

修改root密码

#使用上面的初始化密码登录MySQL
mysql -uroot -p
#修改root密码
#使用初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码:
mysql> alter user user() identified  by  '123456';

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

至此安装完成。

参考

https://www.cnblogs.com/masahiro/p/17639919.html

发表评论

邮箱地址不会被公开。 必填项已用*标注