前言:
今天姐妹们对“mysql源码启动”都比较着重,你们都想要了解一些“mysql源码启动”的相关知识。那么小编同时在网络上收集了一些关于“mysql源码启动””的相关资讯,希望你们能喜欢,同学们一起来了解一下吧!上一篇文档讲述了在国产麒麟系统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
cat /proc/version
1.2 检查系统是否自带MySQL或MariaDB
通过以下命令检查是否安装:
rpm -qa | grep mariadb
如果系统已经安装了其它版本的MySQL或者MariaDB则要将其删除,执行以下命令删除:
rpm -e {mariadb-server,mariadb,mariadb-errmessage,mariadb-common}
1.3 安装编译代码所必须的依赖包
mysql 8.0源码编译依赖如下包,执行以下命令安装:
yum install -y cmake makeyum install -y git gcc gcc-c++yum install -y perl-Data-Dumper bzip2yum install -y ncurses ncurses-devel ncurses-base ncurses-libsyum install -y openssl openssl-devel openssl-libsyum install -y bzip2 bzip2-develyum install -y libtirpc libtirpc-develyum install -y readline readline-devel
查看cmake、make、gcc、gcc-c++版本以确认安装成功:
cmake --versionmake --versiongcc --versiongcc-c++ --version
输出如下图:
1.4 安装编rpcgen
mysql 8.0的源码编译需要用到rpcgen包,这是用于自动生成RPC服务器程序代码的工具,它以一个规格说明文件(*.x)作为输入,对外输出一个C语言的源程序。
因为这个包没有包含在麒麟系统的安装镜像中,需要下载源码编译安装。
首先,下载rpc的源码包,下载链接如下:
然后,编译安装源码包
tar xzvf rpcsvc-proto-1.4.3.tar.gzcd rpcsvc-proto-1.4.3autogen.sh./configuremake & make install
最后,查看rpcgen版本确认安装成功
rpcgen --version
输出如下图:
二:准备MySQL源码包
此文档安装社区版MySQL 8.0.26,此版本可与Kylinos V10 SP2兼容。
2.1 下载MySQL源码包
打开MySQL官网下载页面,选择正确的筛选条件
Product Version 选择MySQL 8.0.26,Operating System 选择Source Code,OS Version 选择All Operating Systems(Generic)(Architecture Independent),
下方源码包列表会出现两个选择,第一个不带boost的源码,第二个带boost的源码,这里我们直接选择第二个mysql-boost-8.0.26.tar.gz,省去单独安装boost的繁琐操作。
2.2 上传MySQL源码包
将MySQL 8.0.26的源码包上传到/root/Documents目录并解压,之后在解压的源码包目录中创建编译目录light,因为不允许在源码目录直接编译。
cd /root/Documentstar xzvf mysql-boost-8.0.26.tar.gzcd mysql-8.0.26mkdir lightcd light三:编译安装MySQL
3.1 cmake
我将几乎能用到的全部选项都开启,供参考。实际可以根据自己需要修改,比如关闭Innodb引擎之外的其它引擎、修改安装目录、是否创建SYSTEMD服务文件等。
cmake .. \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.26 \-DWITH_SYSTEMD=1 \-DENABLED_LOCAL_INFILE=ON \-DWITH_INNODB_MEMCACHED=ON \-DWITH_SSL=system \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_FEDERATED_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \-DCOMPILATION_COMMENT="zsd edition" \-DDOWNLOAD_BOOST=0 \-DWITH_BOOST=/root/Documents/mysql-8.0.26/boost \-DMYSQL_UNIX_ADDR=/data/mysql/data/mysqld.sock \-DSYSCONFDIR=/data/mysql/data \-DMYSQL_DATADIR=/data/mysql \-DFORCE_INSOURCE_BUILD=1 \-DCMAKE_CXX_COMPILER=/usr/bin/g++ \-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用户
groupadd mysqluseradd -M -g mysql -s /sbin/nologin mysql
4.2 创建数据目录
mkdir /data/mysql/{data,log,redo,undo,arch} -pchown mysql.mysql /data -R
4.3 创建mysql环境变量
创建mysql目录软连接
ln -s /usr/local/mysql-8.0.26 /usr/local/mysql
创建mysql环境变量配置文件
echo 'MYSQL_HOME=/usr/local/mysql' >> /etc/profile.d/mysql.shecho 'PATH=$PATH:$MYSQL_HOME/bin' >> /etc/profile.d/mysql.shecho 'export PATH' >> /etc/profile.d/mysql.shsource /etc/profile.d/mysql.sh
4.4 创建my.cnf配置文件
编辑/etc/my.cnf文件
vim /etc/my.cnf
输入以下内容到/etc/my.cnf中,此配置将data、redolog、undo、binlog分别置于独立目录。
[mysql]socket=/data/mysql/data/mysqld.sock[mysqld]###base config###server-id=210basedir=/usr/local/mysqldatadir=/data/mysql/datasocket=/data/mysql/data/mysqld.sockpid-file=/data/mysql/data/mysqld.pidlog-error=/data/mysql/log/mysqld.log###query config###join_buffer_size = 128Msort_buffer_size = 16Mread_buffer_size = 16Mread_rnd_buffer_size = 8M###open table config###table_open_cache=2000table_open_cache_instances=16###connection config###max_connections=2000thread_cache_size=200###binlog config###log_bin=/data/mysql/log/binloglog_bin_index=/data/mysql/log/binlog.indexbinlog_format=ROWmax_binlog_size=1Gbinlog_cache_size=16Mbinlog_expire_logs_seconds=604800enforce_gtid_consistency=ONgtid_mode=ON###general log config###general_log=OFFgeneral_log_file=/data/mysql/log/mysqld.gnl###slow query config###log_output=FILElong_query_time=1slow_query_log=ONslow_query_log_file=/data/mysql/log/mysqld.slow###innodb redo log config###innodb_log_file_size=1Ginnodb_log_files_in_group=3innodb_log_buffer_size=16Minnodb_log_group_home_dir=/data/mysql/redoinnodb_redo_log_archive_dirs=/data/mysql/arch###innodb undo log config####innodb_max_undo_log_size=1G#innodb_undo_tablespaces=2innodb_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=64innodb_buffer_pool_size=8Ginnodb_open_files=10000open_files_limit=10000
4.5 初始化mysql
mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
4.6 配置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
4.7 启动MySQL
安装完成后MySQL服务默认并未启动,可以通过以下命令查看到状态:
systemctl status mysqld
启动mysql
systemctl start mysqld
4.8 首次登录mysql
在MySQL初始化(initialize)完成后会自动为MySQL的root用户生成一个随机初始化密码,并在MySQL的errorlog文件中记录下来,我们要找到它并用它登录MySQL,修改root用户密码后才能执行任何其它操作:
找到初始化密码
grep password /data/mysql/log/mysqld.log
下图红色方框中即为初始化密码
使用上面的初始化密码登录MySQL
mysql -uroot -p修改root密码
使用初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码:
mysql> alter user user() identified by 'LaoGeDB123!';
密码修改成功后,执行以下命令查看MySQL基本信息:
mysql>status
一切正常,至此安装完成。
补充:
为什么没有使用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 OCM认证,MySQL 5.7 & 8.0 OCP认证。
原创文章,转载请注明来源。
标签: #mysql源码启动