mysql二进制安装
一、系统基础设置
1.查看系统环境
#查询系统版本
cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"
#查询glibc版本
rpm -qa |grep glibc
glibc-2.28-98.p02.ky10.x86_64
glibc-common-2.28-98.p02.ky10.x86_64
2.防火墙设置(可选)
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
#查看selinux
getenforce
#关闭selinux
setenforce 0
#永久关闭selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
#清除iptables 规则
iptables -F
3.swap关闭交换区
# 尽量不使用交换区,默认60
echo '0' > /proc/sys/vm/swappiness
# 永久修改 尽量不使用交换区,默认60
cat >>/etc/sysctl.conf<<'EOF'
vm.swappiness=0
vm.overcommit_memory = 1
EOF
#加载配置文件
sysctl -p
4.同步系统时间
ntpdate -u ntp.aliyun.com # 时间同步
hwclock -w # 更新BIOS时间
5.安装软件包依赖
yum install -y net-tools lrzsz vim libaio-devel ntpdate epel-release \
tree libaio-devel lsof sysstat bash-completion bash-completion-extras jemalloc wget bc
6.配置Limits
cat>>/etc/security/limits.conf<<EOF
mysql soft nofile 4096
mysql hard nofile 65536
mysql soft nproc 4095
mysql hard nproc 16384
mysql soft stack 10240
mysql hard stack 32768
EOF
7.系统内核参数调整(可选)
系统内核参数调整
vim /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 965317
kernel.shmmax = 3163150745
fs.aio-max-nr = 1048576
vm.swappiness= 0
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
kernel.shmall 的值可以通过如下命令计算:
echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` / (`getconf PAGESIZE` / 1024)" | bc
kernel.shmmax 的值可以通过如下命令计算:
echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` * 1024 * 0.8" | bc | sed 's#\..*$##'
8.卸载默认数据库
#查询数据库软件包
rpm -qa | grep mysql
rpm -qa | grep mariadb
mariadb-connector-c-3.0.6-9.ky10.x86_64
#卸载数据库
yum remove mariadb* -y
9.创建MySQL软件及数据目录
mkdir -p /opt/mysql/database
#历代mysql实例程序的安装根路径。所有的mysql不同版本实例、data数据、pid、日志、bin-log文件、sock文件全部存于此路径。
mkdir -p /opt/mysql/database/{data,log,binlog,mysql_data_back,mysql_loaddata,tmp}
#log-error,mysql的日志路径,注意这个不是bin-log
#log-bin,mysql的binlog存储路径,用于保存数据操作日志,用于库的恢复或者主从同步
#mysql_data_back,mysql备份、导入导出等相关数据文件存储的路径
#mysql_loaddata,mysql的数据装载与导出路径。用于业务场景,有时候直接装载文件比insert要快
#data,数据库数据文件存放文件夹。初始化二进制安装程序时,指定该路径,之后初始化过程中会自动创建。
touch /opt/mysql/database/my.cnf
#mysql实例的配置文件,手动创建编写。
10.创建mysql用户及用户组
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
11.配置环境变量
cat >> /etc/profile.d/mysql.sh << 'EOF'
export PATH=/usr/local/mysql/bin:$PATH
EOF
#修改权限
chmod +x /etc/profile.d/mysql.sh
#生效环境变量
source /etc/profile.d/mysql.sh
二、MySQL安装
1.选择下载产品

2.选择社区版,可以选择下载最新版本和历史版本。


3.选择历史版本并下载mysql8.0

4.选择产品版本和操作系统类型,下载对应的数据库安装包。
- 上传至/opt/mysql/database/目录下

5.md5验证包的完整性
md5sum mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz
dcf2702f953d1969be44083f4f063f18 mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz
6.解压MySQL包,创建软链接
tar -xvf mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz
ln -s /opt/mysql/database/mysql-8.0.40-linux-glibc2.28-x86_64/ /usr/local/mysql
7.编辑my.cnf
vim > /opt/mysql/database/my.cnf << EOF
[mysqld]
# 基本设置
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /opt/mysql/database/data
socket = /opt/mysql/database/mysql.sock
pid-file = /opt/mysql/database/mysql.pid
# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
# 连接设置
max_connections = 1000
max_connect_errors = 1000
wait_timeout = 28800
interactive_timeout = 28800
# 内存优化(8GB内存配置)
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 4
innodb_log_buffer_size = 16M
innodb_redo_log_capacity = 1G
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
# 临时表设置
tmpdir = /opt/mysql/database/tmp
max_heap_table_size = 64M
tmp_table_size = 64M
# 日志设置
slow_query_log = 1
slow_query_log_file = /opt/mysql/database/log/slow.log
long_query_time = 2
log_error = /opt/mysql/database/log/error.log
# 其他优化
sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 8
table_open_cache = 2000
table_definition_cache = 1400
[client]
port = 3306
socket = /opt/mysql/database/mysql.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
EOF
8.授权mysql数据目录
chown -R mysql:mysql /opt/mysql /usr/local/mysql
9.初始化MySQL
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/opt/mysql/database/data
#注意:初始化后会生成临时root密码,请记录在安全的地方
10.生成启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
11.创建systemd服务文件
cat > /etc/systemd/system/mysqld.service << EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/opt/mysql/database/my.cnf
LimitNOFILE=65535
Restart=on-failure
RestartSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
12.启动MySQL服务
# 重新加载systemd配置
systemctl daemon-reload
# 启动MySQL服务
systemctl start mysqld
# 设置开机自启
systemctl enable mysqld
# 查看服务状态
systemctl status mysqld
13.修改登录密码
# 使用临时密码登录
mysql -uroot -p
#修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
14.防火墙配置
# 开放MySQL端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
15.验证安装
# 检查MySQL版本
mysql -V
# 检查MySQL状态
systemctl status mysqld
# 检查端口监听
netstat -tlnp | grep mysql