MySQL作为开源数据库领域的佼佼者,广泛应用于各种规模的企业级应用中
本文将以MySQL 5.6.20版本为例,详细介绍如何通过合理配置与优化,打造一个高效稳定的数据库环境
MySQL 5.6系列引入了众多性能改进和新特性,而20版本作为其中的一员,同样具备不俗的性能潜力,关键在于如何正确配置
一、安装前的准备 1. 硬件与操作系统要求 -CPU:至少2核,推荐4核或更多,以支持并发访问
-内存:根据数据量和并发量决定,一般至少4GB,推荐8GB以上
-磁盘:使用SSD替代HDD可以显著提升I/O性能
-操作系统:Linux(如CentOS、Ubuntu)是MySQL的主流部署平台,确保系统更新到最新稳定版本
2. 软件依赖 - 确保已安装GCC编译器、cmake构建工具、libaio库等必要依赖
- 下载MySQL 5.6.20的官方源码包或二进制安装包
二、安装MySQL 5.6.20 1. 源码编译安装 bash 下载源码包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.20.tar.gz 解压 tar -zxvf mysql-5.6.20.tar.gz cd mysql-5.6.20 安装依赖并编译 sudo yum install -y cmake gcc gcc-c++ ncurses-devel libaio-devel cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNODB_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make && sudo make install 2. 二进制包安装 从MySQL官方网站下载对应平台的二进制安装包,解压后执行以下命令进行初始化配置: bash 解压二进制包 tar -zxvf mysql-5.6.20-linux-glibc2.5-x86_64.tar.gz sudo mv mysql-5.6.20-linux-glibc2.5-x86_64 /usr/local/mysql 创建用户和组 sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql 初始化数据库 cd /usr/local/mysql sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 三、配置文件优化 MySQL的配置文件通常是`/etc/my.cnf`或`/etc/mysql/my.cnf`,优化MySQL性能的关键在于合理调整配置参数
1. 【mysqld】 部分 -innodb_buffer_pool_size:设置为物理内存的60%-80%,用于缓存数据和索引,显著提高读写性能
ini innodb_buffer_pool_size = 4G -innodb_log_file_size:建议设置为256M至2G,根据写操作频繁程度调整,影响事务提交速度和恢复时间
ini innodb_log_file_size = 512M -innodb_flush_log_at_trx_commit:控制日志刷新策略,1表示每次事务提交都刷新到磁盘,保证数据安全但影响性能;0或2则减少磁盘I/O,适合对数据安全要求不高的场景
ini innodb_flush_log_at_trx_commit = 1 -innodb_file_per_table:开启独立表空间模式,每个表的数据和索引存储在单独的.ibd文件中,便于管理和备份
ini innodb_file_per_table = 1 -query_cache_size:查询缓存大小,5.6版本后查询缓存效率不高,建议禁用或设置较小值
ini query_cache_size = 0 -- tmp_table_size 和 max_heap_table_size:控制内部临时表的最大大小,根据查询复杂度调整,避免磁盘临时表的使用
ini tmp_table_size = 256M max_heap_table_size = 256M -table_open_cache:打开的表缓存数量,根据表数量调整
ini table_open_cache = 2000 -thread_cache_size:线程缓存大小,减少线程创建和销毁的开销
ini thread_cache_size = 16 -key_buffer_size:MyISAM存储引擎的键缓存大小,如果使用MyISAM表,需根据索引大小调整
ini key_buffer_size = 256M 2. 【mysqld_safe】 部分 -log-error:指定错误日志文件路径
ini log-error = /var/log/mysql/error.log -pid-file:指定MySQL进程ID文件路径
ini pid-file = /var/run/mysqld/mysqld.pid 四、启动与停止MySQL服务 1. 启动MySQL bash sudo /usr/local/mysql/support-files/mysql.server start 或者将MySQL添加到系统服务并启动: bash sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql sudo chkconfig --add mysql sudo service mysql start 2. 停止MySQL bash sudo service mysql stop 或者 bash sudo /usr/local/mysql/support-files/mysql.server stop 五、安全与性能监控 1. 初始化安全设置 使用`mysql_secure_installation`脚本进行安全加固,包括设置root密码、删除匿名用户、禁止远程root登录、删除测试数据库等
2. 性能监控 -慢查询日志:开启慢查询日志,分析并优化慢查询
ini slow_query_log = 1 slow_que