MySQL-8.0.11源码编译安装

安装步骤

0、下载安装包
进入MySQL官网下载页面下拉到页面底部,选择Source Code 和 Generic Linux 如下图:

选择Includes Boost Headers这个包下载

cd /home
wget https://dev.mysql.com/downloads/file/?id=479860
tar -zxvf mysql-8.0.11.tar.gz

1、生成编译文件

cd /home
# 注意:-DWITH_BOOST路径改为自己boost的路径
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql-8.0.11/boost

2、编译并安装

make && make install

3、修改mysql权限

chown -R mysql:mysql /usr/local/mysql

4、初始化配置

cd /usr/local/mysql/scripts
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5、使用默认配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

6、直接启动【不推荐】

/usr/local/mysql/support-files/mysql.server start

7、拷贝服务脚本到init目录下,启动【推荐】

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# 启动
/etc/init.d/mysql start

# 查看启动状态
[root@izj6cfhaw27k49x8usszs3z ~]# /etc/init.d/mysql status
MySQL running (12336)                                      [  OK  ]

8、查看MySQL服务进程

[root@izj6cfhaw27k49x8usszs3z ~]# ps aux | grep mysql
root       847  0.0  0.0 115432   372 ?        S    Mar22   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/izj6cfhaw27k49x8usszs3z.pid
root      9285  0.0  0.0 112704   972 pts/1    R+   19:02   0:00 grep --color=auto mysql
mysql    12336  0.0 19.9 941480 202528 ?       Sl   Nov17   8:54 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/usr/local/mysql/data/izj6cfhaw27k49x8usszs3z.pid --socket=/var/lib/mysql/mysql.sock

参数说明:【参数值默认值在启动脚本指定,可以通过/etc/my.cnf修改】
a、MySQL按照目录
–basedir=/usr/local/mysql
b、MySQL数据库文件存放目录
–datadir=/usr/local/mysql/data
c、插件目录
–plugin-dir=/usr/local/mysql/lib/plugin
d、用户名
–user=mysql
e、错误日志
–log-error=/var/log/mysql/mysqld.log
f、进程ID存放文件
–pid-file=/usr/local/mysql/data/izj6cfhaw27k49x8usszs3z.pid
g、mysql.sock文件的路径
–socket=/var/lib/mysql/mysql.sock

你会看到有两个守护进程,mysqld和mysqld_safe。mysqld是MySQL服务进程,这个好理解,那么mysql_safe呢,是如何启动的,干啥用的?

打开/etc/init.d/mysql文件,搜索mysqld_safe我们会看到如下代码

elif test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      pid_file=$server_pid_file
      $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
      wait_for_pid created $!; return_value=$?

很显然在执行/etc/init.d/mysql start的时候,同时启动了mysqld和mysqld_safe。其实mysqld_safe这个守护进程是一个monitor角色,他会检测mysqld进程,如何mysqld挂了,会尝试拉起。

9、多实例的启动方式
在/usr/local/mysql/support-files目录下有一个mysqld_multi脚本,是用了启动多个MySQL实例的,这里就先不展开了。如果需要的话可以自行Google。

10、编译过程中的问题

参考:
在CentOS编译安装LNMP环境
Linux源码安装LNMP

发表评论

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