MySQL-InnoDB配置

2009-09-18T14:03:00

InnoDB配置示例

    
    [mysqld]
    # Uncomment the following if you are using InnoDB tables
    #innodb_data_home_dir = /data/mysql/innodb/
    #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
    #innodb_log_group_home_dir = /data/mysql/innodb/log/
    #innodb_log_arch_dir = /data/mysql/innodb/log/
    # You can set .._buffer_pool_size up to 50 - 80 %
    # of RAM but beware of setting memory usage too high
    #innodb_buffer_pool_size = 1024M
    #innodb_additional_mem_pool_size = 20M
    # Set .._log_file_size to 25 % of buffer pool size
    #innodb_log_file_size = 192M
    #innodb_log_buffer_size = 18M
    #innodb_flush_log_at_trx_commit = 1
    #innodb_lock_wait_timeout = 50

InnoDB不会自己建立目录,必须自己使用操作系统命令建立相应的目录。检查你的 MySQL 服务程序在 datadir 目录里有足够的权限建立文件。

一份关于innodb配置文件的解释

    
    [mysqld]
    #在这里加入其它 的 MySQL 服务器配置
    #...
    # 如果不使用InnoDB表将一列一行注释去除
    # skip-innodb
    #
    # 数据文件必须
    # 能够容下数据与索引
    # 确定有足够的
    # 磁盘空间
    innodb_data_file_path = /ibdata/ibdata1:2000M;/dr2/ibdata/ibdata2:2000M:autoextend
    # 设置缓冲池的大小为
    # 你的主内存大小的
    # 50 - 80 %,但是
    # 在 Linux x86 总内存
    # 使用必须小于 2 GB
    set-variable = innodb_buffer_pool_size=1G
    set-variable = innodb_additional_mem_pool_size=20M
    innodb_log_group_home_dir = /dr3/iblogs
    # .._log_arch_dir 必须和
    # .._log_group_home_dir一样;
    # 从 4.0.6开始,可以省略它
    innodb_log_arch_dir = /dr3/iblogs
    set-variable = innodb_log_files_in_group=3
    # 设置日志文件的大小约为
    # 缓冲池(buffer pool)
    # 大小的 15 %
    set-variable = innodb_log_file_size=150M
    set-variable = innodb_log_buffer_size=8M
    # 如果丢失最近几个事务影响
    # 不大的话可以设置
    # .._flush_log_at_trx_commit = 0
    innodb_flush_log_at_trx_commit=1
    set-variable = innodb_lock_wait_timeout=50
    #innodb_flush_method=fdatasync
    #set-variable = innodb_thread_concurrency=5

我们已在不同的硬盘上放置了两个数据文件, InnoDB 将从数据文件的底部填充表空间。在某些情况下所有的数据被分配到不同的物理硬盘中会提高数据库的性能。将日志文件与数据文件分别放在不同的物理硬盘中对提高性能通常是很有益的。你同样可以使用一个 RAW 磁盘分区( raw disk partitions(raw devices)) 作为数据文件, 在一些 Unix 系统中这将提高 I/O 能力。警告:在 Linux x86 上必须小心不能将内存使用设置太高,glibc 会把进程堆增长到线程堆栈之上,这将会使服务器崩溃。下面的接近或超过于 2G 将会很危险: innodb_buffer_pool_size + key_buffer +max_connections (sort_buffer + record_buffer) + max_connections 2 MB

每个线程将使用 2MB(MySQL AB 二进制版本为 256 KB)的堆栈,在最坏的环境下还会使用sort_buffer + record_buffer
的附加内存。


问题与解决

配置完InnoDB相关项之后MySQL无法启动,查看一下日志 发现有如下错误

    
    usr/local/mysql/libexec/mysqld: unknown variable ‘innodb_data_home_dir=/usr/local/mysql/var/’

这说明MySQL没有带InnoDB引擎(最新的MySQL默认不带innodb引擎),用源码需要重新编译,在configrue的时候,加上–with-plugins=innobase这个参数

源码的编译好之后如果还没有就可以进入数据库,执行

    
     mysql>install plugin innodb soname ‘ha_innodb.so’;

另外,mysql从5.1.23后,安装innodb引擎,以前的–with-innodb编译参数已经无效了,需要用–with-plugins方式安装,这个选项可选参数很多,包括partition daemon_example ftexample archive blackhole csv example federated heap innobase myisam myisammrg ndbcluster这些东西,而–with-plugins默认的参数是none,也就是说不指定一些参数,上面很多新特性,都不会编译进去Mysql 了。

mysql5.1.25 innoDB引擎的安装

       1. 下载 MySQL  version 5.1.24或者更新的源码   下载地址:http://dev.mysql.com/down...ysql/5.1.html  下载之后解压.
       2. 下载 InnoDB 插件源码             下载地址: http://www.innodb.com/innodb_plugin/download/
       3. Replace the contents of the storage/innobase directory in the MySQL source tree with the InnoDB Plugin source tree.
       4. Compile and build MySQL. Instead of building a dynamic InnoDB Plugin, it is advisable to build a version of MySQL that contains the InnoDB Plugin. This is because a dynamic InnoDB Plugin must be built with exactly the same tools and options as the mysqld executable, or spurious errors may occur. Example:
    
          % wget ftp://ftp.easynet.be/mysq...L-5.1/mysql-5.1.31.tar.gz
          % tar -zxf mysql-5.1.31.tar.gz
          % cd mysql-5.1.31/storage
          % wget http://www.innodb.com/dow...nnodb_plugin-1.0.3.tar.gz
          % tar -zxf innodb-1.0.3.tar.gz
          % rm -fr innobase
          % mv innodb-1.0.3 innobase
          % cd ..
          % ./configure --with-plugins=innobase
          % make
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »