一、实验前准备
IP规划
mysql-50 192.168.10.50
mysql-51 192.168.10.51
VIP 192.168.10.88
虚拟机初始化
关闭防火墙
注意:mysql-50和51都要执行
[root@mysql-50 ~]# systemctl stop firewalld.service
禁止开机启动
[root@mysql-50 ~]# systemctl disable firewalld.service
关闭SElinux
[root@mysql-50 ~]# sed -i 's/^selinux=.*/SELNUX=disabled/ip' /etc/selinux/config
注意(系统的selinux一定要关闭否则后续的keepalived调用心跳脚本无法生效)
重启服务器生效
[root@mysql-50 ~]# reboot
二、编译安装安装mysql5.7.40版本
## 克隆虚拟机 mysql-50, 2G内存,2CPU
[root@mysql-50 ~]# free -m
[root@mysql-50 ~]# cat /proc/cpuinfo | grep process
## 下载 boost 依赖库和 mysql源码包(50多m)
boost依赖库下载地址:https://www.boost.org/users/history/
[root@mysql-50 ~# cd /usr/local/src/
[root@mysql-50 /usr/local/src]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40.tar.gz
[root@mysql-50 /usr/local/src]# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/
## 下载完成后
[root@mysql-50 /usr/local/src]# ls
boost_1_59_0.tar.gz mysql-5.7.40.tar.gz
## 补包:本地源
[root@mysql-50 /usr/local/src]# yum repolist
[root@mysql-50 /usr/local/src]# yum install gcc-c++ ncurses-devel cmake openssl openssl-devel
## 创建mysql用户组和mysql 用户, ID均为 27
[root@mysql-50 /usr/local/src]# groupadd -g 27 mysql
[root@mysql-50 /usr/local/src]# useradd -g mysql -u 27 -M -s /sbin/nologin mysql
[root@mysql-50 /usr/local/src]# id mysql
uid=27(mysql) gid=27(mysql) 组=27(mysql)
## 准备 mysql数据库目录 /data/mysql , 并设置好权限
[root@mysql-50 /usr/local/src]# mkdir -p /data/mysql
[root@mysql-50 /usr/local/src]# chown mysql:mysql /data/mysql
[root@mysql-50 /usr/local/src]# ls -ld /data/mysql/
drwxr-xr-x 2 mysql mysql 6 10月 20 15:09 /data/mysql/
## 解压 boost 并改目录为短名称, 不需要编译
[root@mysql-50 /usr/local/src]# tar xf boost_1_59_0.tar.gz
[root@mysql-50 /usr/local/src]# ls
[root@mysql-50 /usr/local/src]# mv boost_1_59_0 /usr/local/boost
## 解压 mysql 源码
[root@mysql-50 /usr/local/src]# tar xf mysql-5.7.40.tar.gz
[root@mysql-50 /usr/local/src]# cd mysql-5.7.40/
### 执行Cmake 并制定 boost 依赖库的位置
[root@mysql-50 /usr/local/src/mysql-5.7.40]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_BOOST=/usr/local/boost -DWITH_INNODB_MEMCACHED=ON
## make 和make install
[root@mysql-50 /usr/local/src/mysql-5.7.40]# make
等待比较长的时间... ... ....
[root@mysql-50 /usr/local/src/mysql-5.7.40]# make install
-------------------------------------------------------------------------------------------------------------
上面参数详解:
cmake——高级编译配置工具
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 指定向mysql的安装目录-DMYSQL_DATADIR=/var/lib/mysql 指向mysql数据文件目录(/var/lib/mysql)
-DDEFAULT_CHARSET=utf8 指定默认的字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci 设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)
-DMYSQL_TCP_PORT=3306 指定TCP端口为3306
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路径
-DMYSQL_USER=mysql 指定mysql用户(默认为mysql)
-DWITH_MYISAM_STORAGE_ENGINE=1 开启MyISAM引擎支持;
-DWITH_INNOBASE_STORAGE_ENGINE=1 开启innodb引擎支持;
-DWITH_BOOST=/usr/local/boost boots源码包的位置
-DWITH_INNODB_MEMCACHED=ON 是否生成memcached共享库。
### 编译完成后,观察目录大小
du -h
du -sh 查看当前目录大小
1.9G /usr/local/mysql57/
5.2G /usr/local/src/mysql-5.7.40
### 清理 源码目录
[root@mysql-50 ~]# cd /usr/local/src/
[root@mysql-50 /usr/local/src]# rm -rf mysql-5.7.40
########## 至此,mysq编译完成。
############# 修改配置文件如下 :
[root@mysql-50 /usr/local/mysql57/bin]# vim /etc/my.cnf
[client]
port=3306
socket=/data/mysql/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
symbolic-links=0
skip-name-resolve
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql
tmpdir=/tmp
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid
## 编译好的mysql 相关组件, /usr/local/mysql57 这里
## 主要应用程序
[root@mysql-50 ~]# ls /usr/local/mysql57/bin
## 修改环境变量配置 $PATH,加入 /usr/local/mysql57/bin
[root@mysql-50 ~]# vim /etc/profile
... ... ... 最后一行
PATH=$PATH:/usr/local/mysql57/bin
export PATH
## 立刻生效
[root@mysql-50 ~]# source /etc/profile
[root@mysql-50 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql57/bin
## 测试一下执行某个命令
查看MySQL版本号
[root@mysql-50 /usr/local/src]# mysql -V
########### 初始化数据库
[root@mysql-50 ~]# ls /data/mysql/
[root@mysql-50 ~]# mysqld --defaults-file=/etc/my.cnf --initialize
[root@mysql-50 ~]# ls /data/mysql/
sys performance_schema mysql mysqld.log (错误日志)... ....
#####从错误日志中 获取初始密码
[root@mysql-50 ~]# cat /data/mysql/mysqld.log | grep password
2022-10-20T08:25:41.290774Z 1 [Note] A temporary password is generated for root@localhost: 2Xe0PaEZq-G6
########## 启动数据库服务
## mysql.server 启动脚本
[root@mysql-50 ~]# /usr/local/mysql57/support-files/mysql.server start
Starting MySQL. SUCCE