开发者
资源
【鲲鹏翱翔】数据库04-MySQL5.7.22移植安装指南
【鲲鹏翱翔】数据库04-MySQL5.7.22移植安装指南
发表于2022/10/18
1660

1.   简介

MySQL是一种快速易用的关系型数据库管理系统(RDBMS),它通过插件形式提供了多种存储引擎,目前最通用的是InnoDB。作为一款开放源码的数据库软件,MySQL社区及用户活跃度很高,用户问题往往可以及时得到响应。此外,MySQL还具有软件体积小、安装简单易于维护等优点。

官方链接:https://dev.mysql.com/doc/refman/5.7/en/

类别:云计算/数据库

2.   部署环境

Packet Name

Version

CentOS

CentOS 7.5 with ARM

MySQL

5.7.22

Boost

1.59.0

3.   安装部署

     3.1 依赖安装

在系统中安装需要的组件,安装相应的库:

yum install gcc gcc-c++ libtool cmake ncurses-devel bison libaio-devel libncurses-devel libopenssl-devel zlib-devel autoconf perl perl-devel

    3.2 编译升级GCC

由于服务器Centos7.5默认安装的GCC版本较低,需要进行升级GCC,版本信息如下:

gcc --version
gcc (GCC) 4.8.5

下载编译安装gcc 7.3.0

#下载gcc-7.3.0
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
#解压 
 tar xvf gcc-7.3.0.tar.gz
 cd gcc-7.3.0
./contrib/download_prerequisites
#建立编译输出目录,将所有的中间文件都放到该目录
mkdir gcc-build-7.3.0 && cd gcc-build-7.3.0
#配置编译环境并执行编译
# configure参数说明:
#   --enable-languages:指定 gcc 能编译哪些语言的文件,每种语言用逗号分隔, 例如 c,c++,java
#   --disable-multilib:默认gcc 能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,如果加上这个编译选项则表示关闭这个gcc的交叉编译功能
 ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#编译mysql
# -j 参数说明:优化多核,多线程编译,允许多个编译命令同时执行,并行任务不宜太多,1-2倍核数
# 时间较长,1-2小时或者更久,请确保make阶段不中断,否则make install会报'No rule to make target install'
 make -j4 
 
#编译完成之后,需要把原来的GCC卸载
rpm -e $(rpm -q gcc-c++) 
rpm -e $(rpm -q libtool)
rpm -e $(rpm -q gcc)
 
#在gcc-build-7.3.0目录下运行安装gcc 7.3.0版本
make install -j4

       设置gcc环境变量

export PATH=$PATH:/usr/local/bin
ln -s /usr/local/bin/gcc /usr/bin/gcc

更换gcc的lib库

cd /usr/lib64/
#备份,避免编译出错可恢复
 cp libstdc++.so.6 libstdc++.so.6.old
 rm -rf libstdc++.so.6
 cp /usr/local/lib64/libstdc++.so.6 ./
 cp /usr/local/lib64/libatomic.so.1 ./

验证gcc版本

gcc --version
gcc (GCC) 7.3.0

3.3 编译安装MySQL

下载相应的源码包

wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
wget https://github.com/mysql/mysql-server/archive/mysql-5.7.22.tar.gz

新建Mysql用户和用户组,保证mysql服务的独立性

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

预编译

tar -zxvf boost_1_59_0.tar.gz
tar -zxvf mysql-5.7.22.tar.gz
#需提前创建,否则后面会提示报错
 mkdir -p /data/mysql
 cd mysql-5.7.22
#这一步需下载补丁,解决高并发下死锁的bug
https://bugs.mysql.com/file.php?id=28180&bug_id=9469
patch –p1 < 0001-Bug-94699-Mysql-deadlock-and-bugcheck-on-aarch64.patch
# -DCMAKE_INSTALL_PREFIX 指定mysql安装路径
# -DMYSQL_DATADIR 指定数据安装路径,且指定版本1.59.0
# -DWITH_BOOST Mysql5.7 以后Bootst为必须选项,
# -DSYSCONFDIR 指定配置文件的安装路径
# -DWITH_INNOBASE_STORAGE_ENGINE  安装INNOBASE存储引擎
# -DWITH_PARTITION_STORAGE_ENGINE 安装PARTITION存储引擎
# -DWITH_BLACKHOLE_STORAGE_ENGINE 安装BLACKHOLE存储引擎
# -DWITH_MYISAM_STORAGE_ENGINE    安装MYISAM存储引擎
# -DENABLED_LOCAL_INFILE          是否启动本地的LOCAL_INFILE 
# -DENABLE_DTRACE
# -DDEFAULT_CHARSET               默认字符集
# -DDEFAULT_COLLATION             默认的字符集排序规则 
 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci

编译安装

make -j4  
 make install

      设置启动脚本,开机自启动

ls -lrt /usr/local/mysql
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 chmod +x /etc/init.d/mysqld
 systemctl enable mysqld

修改配置文件

#/etc/my.cnf,仅供参考 
 vi /etc/my.cnf
[client]
port = 3306
socket = /dev/shm/mysql.sock
[mysqld]
port = 3306
socket = /dev/shm/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
#skip-name-resolve
#skip-networking
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

添加mysql的环境变量

# 将/etc/profile文件尾部加入 export PATH=$PATH:/usr/local/mysql/bin
 vi /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
 
#环境变量生效
 source /etc/profile
#验证环境变量
 echo $PATH

初始化数据库

# "–initialize-insecure"不会生成密码
# "–datadir"目录下不能有数据文件
 mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

启动数据库

systemctl start mysqld
# 验证状态 active
 systemctl status mysqld
# 验证mysql进程已起
 ps -ef | grep mysql
# 查看mysql服务端口
 netstat -tunpl | grep 3306

设置数据库root用户密码

# 设置root密码,密码策略有LOW、MEDIUM,STRONG三个等级
 mysql_secure_installation

3.4 测试

安装结束后执行命令启动MySQL:

mysql -uroot -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

  3.5 参考信息

[1] 在CentOS7上编译安装MySQL 5.7.13步骤详解:https://www.jianshu.com/p/95a103add722

[2] 安装MySQL常见的三种方式:https://www.jb51.net/article/71860.htm

[3] mysql.sock的作用:https://www.cnblogs.com/mrwang1101/p/4887842.html

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞