说明
percona-server-5.7 的安装对硬件配置的要求较高,至少需要4G内存或者2G物理内存+2Gswap。
编译安装过程中注意所在分区的空间大小,编译安装需要使用到大量的临时空间。
环境配置
[root@ ~]# groupadd mysql
[root@ ~]# useradd -g mysql -M mysql
使用 yum 命令安装以下软件,已安装的可以略去:
[root@ ~]# yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* readline-devel
percona-server 从 5.7 开始要求使用高于2.8版本的 cmake 进行编译
[root@ ~]# yum update -y cmake
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能, 与标准的glibc库的malloc相比,TCMalloc在内存的分配效率和速度要高,可以在高并发的情况下很好的控制内存的使用,提高服务器的性能,降低负载。TCMalloc的安装这里省略
安装percona-server-5.7.18-14
编译安装
[root@ ~]# CPUcount=`cat /proc/cpuinfo | grep processor | wc -l`
[root@ ~]# cd /dist/dist
[root@ dist]# wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.18-14/source/tarball/percona-server-5.7.18-14.tar.gz
[root@ dist]# cd /dist/src
[root@ src]# tar xf /dist/dist/percona-server-5.7.18-14.tar.gz
percona-server 从 5.7 开始需要使用 boost_1.59.x
[root@ src]
[root@ percona-server-5.7.18-14]
[root@ percona-server-5.7.18-14]
[root@ percona-server-5.7.18-14]
[root@ build]
cmake .. \
-DMYSQL_USER=mysql \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DSYSCONFDIR:PATH=/usr/local/mysql \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
-DENABLED_PROFILING:BOOL=ON \
-DENABLE_DEBUG_SYNC:BOOL=OFF \
-DMYSQL_DATADIR:PATH=/data/database/mysql \
-DMYSQL_MAINTAINER_MODE:BOOL=OFF \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BIG_TABLES:BOOL=ON \
-DWITH_FAST_MUTEXES:BOOL=ON \
-DENABLE-PROFILING:BOOL=ON \
-DWITH_SSL:STRING=bundled \
-DWITH_UNIT_TESTS:BOOL=OFF \
-DWITH_ZLIB:STRING=bundled \
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \
-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \
-DEFAULT_COLLATION=utf8_general_ci \
-DEFAULT_CHARSET=utf8 \
-DENABLED_ASSEMBLER:BOOL=ON \
-DENABLED_LOCAL_INFILE:BOOL=ON \
-DENABLED_THREAD_SAFE_CLIENT:BOOL=ON \
-DENABLED_EMBEDDED_SERVER:BOOL=OFF \
-DWITH_CLIENT_LDFLAGS:STRING=all-static \
-DINSTALL_LAYOUT:STRING=STANDALONE \
-DCOMMUNITY_BUILD:BOOL=ON \
-DCMAKE_EXE_LINKER_FLAGS="-ltcmalloc" \
-DWITH_SAFEMALLOC=OFF \
-DWITH_BOOST=..
5.7版本,不再支持: innodb_additional_mem_pool_size、table_cache 两个参数
[root@ percona-server-5.7.18-14]# make -j $CPUcount
[root@ percona-server-5.7.18-14]# make install
初始化配置
[root@ percona-server-5.7.18-14]
[root@ percona-server-5.7.18-14]
[root@ percona-server-5.7.18-14]
[root@ mysql]
[root@ mysql]
[root@ mysql]
[root@ mysql]
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 16M
max_heap_table_size = 16M
table_open_cache = 2048
sort_buffer_size = 8M
net_buffer_length = 8K
read_buffer_size = 8M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 16M
back_log = 200
skip-name-resolve
query_cache_size = 16M
join_buffer_size=8M
bulk_insert_buffer_size=16M
concurrent_insert=2
delay_key_write=ON
delayed_insert_limit=4000
delayed_insert_timeout=600
delayed_queue_size=4000
tmp_table_size = 16M
thread_cache_size=120
character-set-server=utf8
max_connections = 1024
log_output=FILE
slow_query_log=1
slow_query_log_file=/data/database/mysql/slowquery.log
max_slowlog_size=10m
max_slowlog_files=20
long_query_time=1
wait_timeout=1814400
server-id=1
log-bin=mysql-bin
expire_logs_days=3
binlog_format=mixed
max-binlog-size=128M
binlog_cache_size = 4M
skip-slave-start=1
innodb_file_format=barracuda
innodb_strict_mode=1
binlog_direct_non_transactional_updates=1
innodb_data_home_dir = /data/database/mysql/
innodb_data_file_path = ibdata1:200M:autoextend
innodb_log_group_home_dir = /data/database/mysql/
innodb_file_per_table= 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 20
innodb_adaptive_flushing = 1
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = 'O_DIRECT'
transaction-isolation=READ-COMMITTED
innodb_rollback_on_timeout = On
innodb_read_io_threads = 5
innodb_write_io_threads = 5
innodb_io_capacity=500
innodb_thread_concurrency = 8
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_fast_shutdown = 1
innodb_status_file=1
open-files-limit = 10240
memlock
datadir = /data/database/mysql/
tmpdir = /data/database/mysql/
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF
5.7版本的,不再支持: innodb_additional_mem_pool_size、table_cache 两个参数
生成初始数据库
5.7版本使用 bin/mysqld --initialize 进行初始化
[root@ mysql]#/usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/var/ --user=mysql
MySQL数据库初始化完成以后,会产生一个 root@localhost 用户,从MySQL 5.7开始,root用户的密码不再是空,而是随机产生一个密码。初始化过程中将随机生成root密码:
[Note] A temporary password is generated for root@localhost: KJ1foE6BFX;3
这个密码在第一次登录时会被要求重制。
启动数据库
[root@ ~]# /usr/local/mysql/bin/mysqld_safe &
数据库启动时,可能会启动失败并提示没有错误日志文件,手动创建并授权即可
2017-06-30T06:24:07.752061Z mysqld_safe Logging to '/data/database/mysql
2017-06-30T06:24:07.761038Z mysqld_safe error: log-error set to '/data/database/mysql
[1]+ Exit 1 /usr/local/mysql/bin/mysqld_safe
[root@ ~]# touch /data/database/mysql
[root@ ~]# chown mysql:mysql /data/database/mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能