`
zhengdl126
  • 浏览: 2538827 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

MYSQL安装优化、my.cnf启动参数优化、Innodb引擎参数优化、Linux服务器简化.

 
阅读更多

./configure --prefix=/usr/local/mysql \
--without-debug \                #去除debug模式.
--enable-thread-safe-client \        #以线程方式编译客户端.
--with-pthread    \                #强制使用pthread线程库编译.
--enable-assembler \           #允许使用汇编模式.
--enable-profiling \                #Build a version with query profiling code (req.community-features)
--with-mysqld-ldflags=-all-static \    #静态编译mysqld的额外link参数.
--with-client-ldflags=-all-static \    #静态编译client的额外link参数.
--with-charset=utf8 \           #默认字符utf8.
--with-extra-charsets=all \       #支持所有的语言字符.
--with-innodb \                #innodb数据引擎.
--with-plugins=innobase \            
--with-plugins=heap \           #内存数据引擎.
--with-mysqld-user=mysql \      #mysql安装使用的帐号
--without-embedded-server \     #去除安装embedded-server.         
--with-server-suffix=-community \  #社区形式安装.
--with-unix-socket-path=/tmp/mysql.sock


MYSQl启动的一般设置:
/etc/my.cnf基本部设参数设置.
# back_log 是操作系统在监听队列中所能保持的连接数,
# 队列保存了在MySQL连接管理器线程处理之前的连接.
# 如果你有非常高的连接率并且出现"connection refused" 报错,
# 你就应该增加此处的值.
# 检查你的操作系统文档来获取这个变量的最大值.
# 如果将back_log设定到比你操作系统限制更高的值,将会没有效果
# 在MYSQL的连接请求等待队列中允许存放的最大连接请求数. defautl=50,最大65535,根据os对网络监听队列的情况来设置.
back_log = 20000

# MySQL 服务所允许的同时会话数的上限
# 其中一个连接将被SUPER权限保留作为管理员登录.
# 即便已经达到了连接数的上限.
# 整个Mysql允许的最大连接数.这个参数会影响mysql的应用并发处理能力.有些资料上提到 500-800,以我们的机子来说单个mysql实例设置10000应该是没有问题的。如果还需可能需要第三方软件解决php连接池的问题,提高还需要连接池.
max_connections = 10000

# 每个客户端连接最大的错误允许数量,如果达到了此限制.
# 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启
# 非法的密码以及其他在链接时的错误会增加此值.
# 查看 "Aborted_connects" 状态来获取全局计数器.
max_connect_errors = 10

# 所有线程所打开表的数量.
# 增加此值就增加了mysqld所需要的文件描述符的数量
# 这样你需要确认在[mysqld_safe]中 "open-files-limit" 变量设置打开文件数量允许至少4096
# 根据以下命今进行实际需要设置.
#  mysq> show variables like 'table_cache';
#  mysq> show status lie 'open_tables';
table_cache = 2048

# 允许外部文件级别的锁. 打开文件锁会对性能造成负面影响
# 所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)
# 或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表
#external-locking

# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)
# 每个连接独立的大小.大小动态增加
# 这个是根据net_buffer相对应,是net buffer的最大值。 default是16M
max_allowed_packet = 16M

# 在一个事务中binlog为了记录SQL状态所持有的cache大小
# 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.
# 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中
# 如果事务比此值大, 会使用磁盘上的临时文件来替代.
# 此缓冲在每个连接的事务第一次更新状态时被创建
binlog_cache_size = 1M

# 独立的内存表所允许的最大容量.
# 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
max_heap_table_size = 64M

# 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序
# 如果排序后的数据无法放入排序缓冲,
# 一个用来替代的基于磁盘的合并分类会被使用
# 查看 "Sort_merge_passes" 状态变量.
# 在排序发生时由每个线程分配
sort_buffer_size = 8M

# 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).
# 类似的联合在极大多数情况下有非常糟糕的性能表现,
# 但是将此值设大能够减轻性能影响.
# 通过 "Select_full_join" 状态变量查看全联合的数量
# 当全联合发生时,在每个线程中分配
join_buffer_size = 8M

# 我们在cache中保留多少线程用于重用
# 当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,
# 则客户端线程被放入cache中.
# 这可以在你需要大量新连接的时候极大的减少线程创建的开销
# (一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)
# thread cache池中应该存放的连接线程数.长连接的应用中,设为50-100之间.
thread_cache_size = 80

# 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.
# 此值只对于支持 thread_concurrency() 函数的系统有意义( 例如Sun Solaris).
# 你可可以尝试使用 [CPU数量]*(2..4) 来作为thread_concurrency的值
thread_concurrency = 8

# 查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果.
# 打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表.
# 查看 "Qcache_lowmem_prunes" 状态变量来检查是否当前值对于你的负载来说是否足够高.
# 注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同,
# 查询缓冲也许引起性能下降而不是性能提升.
query_cache_size = 64M

# 只有小于此设定值的结果才会被缓冲
# 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.
query_cache_limit = 2M

# 被全文检索索引的最小的字长.
# 你也许希望减少它,如果你需要搜索更短字的时候.
# 注意在你修改此值之后,
# 你需要重建你的 FULLTEXT 索引
ft_min_word_len = 4







Innodb相关优化及说明:
#设置存储引擎默认引擎为InnoDB.
default-storage_engine = InnoDB

# 附加的内存池被InnoDB用来保存 metadata 信息
# 如果InnoDB为此目的需要更多的内存,它会开始从OS这里申请内存.
# 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值.
# SHOW INNODB STATUS 命令会显示当先使用的数量.
# 根据表的多少来确定大小,一般16M己能适用于几百个表了.
innodb_additional_mem_pool_size = 16M   

# InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM.
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
# 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
# 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
# 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,
# 所以不要设置的太高.
# 这个参数影响会较大,在没有其它服务在此计算机上跑,80%是完全可以的。一般linux系统给它800M问题系统使用己足够
innodb_buffer_pool_size = 14G

# InnoDB 将数据保存在一个或者多个数据文件中成为表空间.
# 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.
# 其他情况下.每个设备一个文件一般都是个好的选择.
# 你也可以配置InnoDB来使用裸盘分区 - 请参考手册来获取更多相关内容
innodb_data_file_path = ibdata1:10M:autoextend

# 设置此选项如果你希望InnoDB表空间文件被保存在其他分区.
# 默认保存在MySQL的datadir中.
#innodb_data_home_dir = <directory>

# 用来同步IO操作的IO线程的数量. This value is
# 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.
# innodb_file_io_threads只是在5.4版本之前使用这个参数,一般设置为cpu多少核,就设多少。能达到比较好的效果.
innodb_file_io_threads = 12

# mysql 5.4版本设置为(在测试过程中以下方式能达到更好的效果):
innodb_read_io_threads = 12  
innodb_write_io_threads = 6


# 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.
# 从1开始并且增加此值知道你能够成功的导出表.
#innodb_force_recovery=1

# 在InnoDb核心内的允许线程数量.
# 最优值依赖于应用程序,硬件以及操作系统的调度方式.
# 过高的值可能导致线程的互斥颠簸.默认是16,在这里我们不做限制最好。所以设定为0
innodb_thread_concurrency = 0


# 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上,
# 这提供了完整的ACID行为.
# 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O
# 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
# 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.
# 0与1和2影响的性能将是5倍以上,强列建议是0,最多会丢失1秒的数据.
innodb_flush_log_at_trx_commit = 0

# 加速InnoDB的关闭. 这会阻止InnoDB在关闭时做全清除以及插入缓冲合并.
# 这可能极大增加关机时间, 但是取而代之的是InnoDB可能在下次启动时做这些操作.
#innodb_fast_shutdown

# 用来缓冲日志数据的缓冲区的大小.
# 当此值快满时, InnoDB将必须刷新数据到磁盘上.
# 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)
innodb_log_buffer_size = 8M

# 在日志组中每个日志文件的大小.
# 你应该设置日志文件总合大小到你缓冲池大小的25%~100%
# 来避免在日志文件覆写上不必要的缓冲池刷新行为.
# 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.
innodb_log_file_size = 256M

# 在日志组中的文件总数.
# 通常来说2~3是比较好的.
innodb_log_files_in_group = 3

# InnoDB的日志文件所在位置. 默认是MySQL的datadir.
# 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能
#innodb_log_group_home_dir

# 在InnoDB缓冲池中最大允许的脏页面的比例.
# 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.
# 这是一个软限制,不被保证绝对执行.
innodb_max_dirty_pages_pct = 90

# InnoDB用来刷新日志的方法.
# 表空间总是使用双重写入刷新方法
# 默认值是 "fdatasync", 另一个是 "O_DSYNC".
# O_DSYNC是要配置innodb_max_dirty_pages_pct来使用.
#innodb_flush_method=O_DSYNC

# 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.
# InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.
# 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎
# 那么一个死锁可能发生而InnoDB无法注意到.
# 这种情况下这个timeout值对于解决这种问题就非常有帮助.
innodb_lock_wait_timeout = 120

Linux服务定制简化.
vim /etc/inittab
id:3:initdefault:   #3为命令行,不需要启动桌面.

将3,4,5,6注释掉,用不了那么多TTY,节约资源.
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

DB服务器下需要的服务(简化后):
service        init     on/off
acpid        2,3,5    on
cpuspeed        2,3,5    on
crond        2,3,5    on
messagebus    2,3,5    on
mysqld        2,3,5    on
network        2,3,5    on
ntpd            2,3,5    on
snmpd        2,3,5    on
sshd            2,3,5    on
syslog        2,3,5    on
xfs            2,3,5    on
xinetd        2,3,5    on

分享到:
评论

相关推荐

    MYsql5.6.25 用cmake安装,包含my.cnf,安装文档

    这里,`/usr/local/mysql` 是安装路径,`/var/lib/mysql` 是数据文件存放位置,`mysql` 是运行 MySQL 服务的用户名,`3306` 是默认端口,`WITH_INNOBASE_STORAGE_ENGINE=1` 表示启用 InnoDB 存储引擎。 6. **构建...

    mysql5.7.20-install.tar.gz

    正确配置my.cnf可以优化MySQL的性能并确保系统的稳定性。 接下来是“mysql.sh”,这很可能是一个安装或启动MySQL的服务脚本。用户可以通过运行这个脚本来自动化安装过程,包括解压二进制文件、设置环境变量、创建...

    mysql自定义启动

    除了`my.cnf`文件,还可以通过命令行参数来启动MySQL。例如,如果你想要在不读取配置文件的情况下启动MySQL,可以使用`--skip-grant-tables`参数。但这仅应在紧急情况下使用,因为这会跳过权限检查,可能导致安全...

    mysql安装配置教程.txt

    - **my.cnf/my.ini**:MySQL的主要配置文件,位于/etc/mysql/或C:\ProgramData\MySQL\MySQL Server x.x\my.ini等位置。 - **常用配置项**: - **[mysqld]**:服务器相关的配置参数。 - `datadir`:指定数据文件...

    mysql5.7.30.zip(mysql5.7.30一键安装部署)

    例如,InnoDB存储引擎的改进,支持JSON数据类型,以及更强大的查询优化器。此外,这个版本还强化了安全性,包括默认的加密连接和增强的审计日志功能。 2. **一键安装部署**: 这意味着用户无需手动配置和设置多个...

    mysql-5.6.23.tar.zip

    “my.cnf”文件是MySQL的配置文件,用于定义MySQL服务器的启动参数和配置选项。它通常包含如端口号、数据目录、用户认证、内存分配等设置。在Linux环境中安装MySQL时,正确配置my.cnf至关重要,因为它会影响MySQL的...

    linux下mysql安装手册

    4. **安装DBD for MySQL**:在DBD-mysql目录下,创建到`/web/mysql/bin/mysql_config`的链接,以简化安装过程中的数据库参数配置。然后执行`perl Makefile.PL`,`make`,最后`make install`。 通过以上步骤,您将...

    mysql57-rpms.tar.gz

    - **配置文件**: MySQL的配置文件通常位于`/etc/my.cnf`,可以在此调整服务器参数以优化性能或安全性。 - **用户和权限**: `mysql_secure_installation`脚本会引导用户设置root用户的密码,并删除匿名用户、测试...

    Mysql8.0.34安装包(win、linux)

    - **配置文件**:在安装后,你需要配置my.cnf(Linux)或my.ini(Windows)文件,以设置服务器的参数,如端口、数据目录、用户权限等。 - **安全性**:确保遵循最佳实践,如使用强密码,限制远程访问,启用SSL加密,...

    mysql-5.5.32-linux2.6-x86_64.tar

    8. **配置文件**:MySQL的配置文件通常位于`/etc/my.cnf`,可以在这里调整各种参数以优化性能,例如缓冲池大小、连接数限制、日志设置等。 9. **客户端工具**:安装包中通常会包含MySQL命令行客户端和其他管理工具...

    mysql--软件.zip

    安装MySQL涉及下载安装文件、配置服务器参数、启动服务等步骤。在Windows上,通常有图形化的安装向导;而在Linux系统中,通常使用命令行进行安装。配置文件my.cnf(或my.ini)允许用户调整诸如端口、最大连接数、...

    mysql5.6.zip

    - **配置文件优化**:通过修改my.cnf配置文件,可以调整各种参数以优化性能,例如`innodb_buffer_pool_size`、`query_cache_size`等。 - **索引策略**:合理设计索引可以显著提升查询速度,但过多的索引可能影响写...

    mysql 5.7 linux 解压版

    这个解压版适用于在Linux环境下安装和运行MySQL,无需通过编译源代码的方式,大大简化了部署流程。以下是对MySQL 5.7在Linux环境下的安装、配置和使用的一些关键知识点的详细说明: 1. **下载与解压** - 首先,你...

    MySQL.Pocket.Reference.2nd.Edition

    2. **配置**:MySQL提供了丰富的配置选项,可以通过`my.cnf`(Linux/Unix)或`my.ini`(Windows)文件进行设置。配置项包括但不限于端口号、最大连接数、缓存大小等。 3. **启动MySQL服务**:根据不同的操作系统,...

    mysql-5.0-40.tar

    在安装和使用MySQL 5.0.40时,用户需要熟悉如何配置`my.cnf`文件以调整服务器参数,根据硬件资源来优化性能。同时,理解日志系统(如错误日志、慢查询日志)可以帮助监控和调试数据库运行情况。此外,掌握基本的SQL...

    mysql5.6安装包

    4. **增强的存储引擎功能**:InnoDB 存储引擎在 MySQL 5.6 中得到了进一步增强,支持在线索引创建、外键约束检查延迟等功能。 5. **扩展的诊断信息**:新增了大量系统变量和性能监控工具,方便管理员进行故障排查和...

    mysql5.5官方最新开发手册

    2. 配置文件:my.cnf是MySQL的主要配置文件,其中包含了服务器的启动选项和参数设置。 3. 数据库初始化:首次启动MySQL服务时,需要进行数据库的初始化,包括设置root用户的密码和创建系统数据库。 四、MySQL 5.5的...

    mysql-5.7.24-linux-glibc2.12-x86_64.tar.7z

    在日常维护中,定期更新MySQL的系统参数和配置文件(如my.cnf),根据业务需求调整内存分配、连接限制、索引策略等,有助于保持数据库的高效运行。同时,定期备份数据,使用像mysqldump这样的工具,确保数据的安全。...

    mysql安装包

    - **配置my.cnf文件**:这是MySQL的主要配置文件,可以根据需要调整内存分配、缓存大小等参数。 - **备份与恢复**:定期备份数据是非常重要的。可以使用`mysqldump`工具创建逻辑备份,或使用物理备份工具如`...

    about learning mysql. 关于mysql的学习与总结。.zip

    1. **安装与配置**:MySQL的安装包括下载安装包、配置服务器、创建数据目录以及启动服务。在不同操作系统上,如Windows、Linux或macOS,安装步骤略有不同。配置文件`my.cnf`用于设置数据库的各项参数,如端口号、...

Global site tag (gtag.js) - Google Analytics