Linux内核之外的运维宇宙
Linux运维实战笔记:从系统架构到自动化运维

MySQL源码安装和二进制安装

准备好三台数据库虚拟机

10.0.0.51 db01     	二进制安装mysql5.7
10.0.0.52 db02		源码安装mysql5.7
10.0.0.53 db03 		二进制安装mysql8.0

mysql的软件包类

1.RPM包
mysql-community-server
2.源码包
带boost的包
3.二进制包
glib2

1.源码安装

1)安装依赖程序

mysql5.5(含)之前的版本,使用的./configure && make && make install
			 之后的版本,使用的cmake && make && make install
yum install -y cmake openssl-devel ncurses-devel libaio-devel
rpm -e --nodeps mariadb-libs

2)创建程序用户

useradd -s /sbin/nologin -M mysql 

或
useradd -r -s /sbin/nologin mysql 

或
groupadd -g 333 mysql
useradd -u 333 -g 333 -s /sbin/nologin -M mysql 

3)创建安装目录和数据目录

生产环境的话,数据不会部署在本地磁盘
安装目录:/app/mysql-xxx
数据目录:/data/mysql/data

a.分区
fdisk /dev/sdb
n -> 一路回车 -> w

b.刷新分区
partprobe /dev/sdb

c.格式化
mkfs.xfs /dev/sdb1

d.挂载
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
或uuid挂载(推荐)
echo "$(blkid /dev/sdb1 | awk '{print $2}') /data xfs defaults 0 0" >> /etc/fstab
mkdir -p /app /data
mount -a
mkdir -p /data/mysql/data

4)获取并解压源码包

tar xf mysql-boost-5.7.32.tar.gz

5)进入解压目录编译安装

cd mysql-5.7.32/
cmake \
-DCMAKE_INSTALL_PREFIX=/app/mysql-5.7.32 \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_UNIX_ADDR=/data/mysql/tmp/mysql.sock \
-DWITH_BOOST=boost \
-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

make
make install

注意:
源码安装的步骤都是固定死的
配置->编译 make->安装 make install
如果cmake报错,将CMakeCache.txt 删除后,再次cmake

6)优化路径并修改目录归属

ln -s /app/mysql-5.7.32/ /app/mysql
chown -R mysql.mysql /app/mysql* /data/mysql

修改环境变量
echo "export PATH=$PATH:/app/mysql/bin" >>/etc/profile
source /etc/profile

7)编辑配置文件

vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql/data
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

8)初始化

方法一:
初始化数据,初始化管理员的临时密码
mysqld --initialize  --user=mysql --basedir=/app/mysql --datadir=/data/mysql/data

方法二 :
初始化数据,初始化管理员的密码为空
rm -rf  /data/mysql/data/*
mysqld --initialize-insecure  --user=mysql --basedir=/app/mysql --datadir=/data/mysql/data

9)创建服务启动方式

mysql5.7提供默认的启动脚本文件,可以通过该脚本手动管理mysql服务
/app/mysql/support-files/mysql.server start|stop|status   //开启|停止|状态

建议做成系统服务
方法一:使用C6的启动方式service
cp /app/mysql/support-files/mysql.server  /etc/init.d/mysqld
chkconfig --add mysqld = systemctl daemon-reload
chkconfig --list mysqld
chkconfig mysqld on  = systemctl enable mysqld
service mysqld start|stop|restart = systemctl start mysqld

方法二:使用C7的启动方式systemctl
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

2.二进制安装mysql5.7

1)安装依赖程序

yum install -y openssl-devel ncurses-devel libaio-devel
rpm -e --nodeps mariadb-libs

2)创建安装目录和数据目录

生产环境的话,数据不会部署在本地磁盘
安装目录:/app/mysql-xxx
数据目录:/data/mysql/data

a.分区
fdisk /dev/sdb
n -> 一路回车 -> w

b.刷新分区
partprobe /dev/sdb

c.格式化
mkfs.xfs /dev/sdb1

d.挂载
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
或uuid挂载(推荐)
echo "$(blkid /dev/sdb1 | awk '{print $2}') /data xfs defaults 0 0" >> /etc/fstab
mkdir -p /app /data
mount -a
mkdir -p /data/mysql/data

3)建程序用户

useradd -s /sbin/nologin -M mysql 

4)获取二进制包并解压到安装路径

tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /mysql/

5)优化路径并修改目录归属

#ln -s /app/mysql-5.7.32-linux-glibc2.12-x86_64/ /app/mysql
ln -s /mysql/mysql-5.7.32-linux-glibc2.12-x86_64/ /mysql/mysql-5.7
#chown -R mysql.mysql /app/mysql* /data/mysql
chown -R mysql.mysql /mysql
#修改环境变量
#echo "export PATH=$PATH:/app/mysql/bin" >>/etc/profile
echo "export PATH=$PATH:/mysql/mysql-5.7/bin" >>/etc/profile
source /etc/profile

6)创建配置

vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/mysql/mysql-5.7
datadir=/mysql/data
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock


chmod 644 /etc/my.cnf

7)初始化

#mysqld --initialize-insecure  --user=mysql --basedir=/app/mysql --datadir=/data/mysql/data
mysqld --initialize-insecure  --user=mysql --basedir=/mysql/mysql-5.7 --datadir=/mysql/data

8)创建服务启动方式

vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/mysql/mysql-5.7/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

3.二进制安装mysql8.0.18

1)安装依赖程序

yum install -y openssl-devel ncurses-devel libaio-devel
rpm -e --nodeps mariadb-libs

2)创建安装目录和数据目录

生产环境的话,数据不会部署在本地磁盘
安装目录:/app/mysql-xxx
数据目录:/data/mysql/data

a.分区
fdisk /dev/sdb
n -> 一路回车 -> w

b.刷新分区
partprobe /dev/sdb

c.格式化
mkfs.xfs /dev/sdb1

d.挂载
echo "/dev/sdb1 /data xfs defaults 0 0" >>/etc/fstab
或uuid挂载(推荐)
echo "$(blkid /dev/sdb1 | awk '{print $2}') /data xfs defaults 0 0" >> /etc/fstab
mkdir -p /app /data
mount -a
mkdir -p /data/mysql/data

3)建程序用户

useradd -s /sbin/nologin -M mysql 

4)获取二进制包并解压到安装路径

tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar
tar xf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /app/

5)优化路径并修改目录归属

ln -s /app/mysql-8.0.18-linux-glibc2.12-x86_64/ /app/mysql
chown -R mysql.mysql /app/mysql* /data/mysql

#修改环境变量
echo "export PATH=$PATH:/app/mysql/bin" >>/etc/profile
source /etc/profile

6)创建配置

vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql/data
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

7)初始化

mysqld --initialize-insecure  --user=mysql --basedir=/app/mysql --datadir=/data/mysql/data

8)创建服务启动方式

vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

posted on 2025-05-22 15:00  一叶舟-小刀哥  阅读(79)  评论(0)    收藏  举报