Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2353702
  • 博文数量: 276
  • 博客积分: 5998
  • 博客等级: 大校
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 14:43
文章分类

全部博文(276)

文章存档

2014年(25)

2013年(11)

2012年(69)

2011年(167)

2010年(4)

分类: Mysql/postgreSQL

2011-10-13 12:35:13



1. 安装
  1. [@s1.yejr.com ~]# tar zxf mysql-5.1.24-rc.tar.gz

  2. [@s1.yejr.com ~]# tar zxf innodb_plugin-1.0.0-5.1.tar.gz

  3. [@s1.yejr.com ~]# cd mysql-5.1.24-rc/storage/innobase

  4. [@s1.yejr.com ~]# cp -rf ../../../innodb_plugin-1.0.0-5.1/* .

检查 innobase 目录下的 Makefile,原来的 MKDIR_P 有问题,需要修改 MKDIR_P 值

MKDIR_P = @MKDIR_P@

MKDIR_P = mkdir -p --

开始编译、安装

#设置一下 CFLAGS 和 CXXFLAGS,尤其要注意打开 HAVE_DLOPEN 选项
  1. [@s1.yejr.com ~]# CFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 \
  2. -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic'

  3. [@s1.yejr.com ~]# CXXFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 \
  4. -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic'

  5. [@s1.yejr.com ~]# cd ../../

  6. [@s1.yejr.com ~]# ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex \
  7. --enable-thread-safe-client --enable-local-infile --localstatedir=/home/mysql \
  8. --libexecdir=/usr/local/mysql/bin/ --with-embedded-server --with-innodb \
  9. --with-partition --without-plugin-archive --without-plugin-blackhole --with-big-tables \
  10. --disable-shared --without-man --without-doc --with-client-ldflags=-all-static \
  11. --with-mysqld-ldflags=-all-static --without-geometry --without-bench \
  12. --without-test && make && make install-strip

安装完毕。

2. 配置

以下是 innodb 相关的几个主要配置:

  1. transaction_isolation = READ-COMMITTED
  2. innodb_additional_mem_pool_size = 16M
  3. innodb_buffer_pool_size = 12G
  4. innodb_data_file_path = ibdata1:1024M:autoextend
  5. innodb_file_io_threads = 4
  6. innodb_thread_concurrency = 16
  7. innodb_flush_log_at_trx_commit = 1
  8. innodb_log_buffer_size = 16M
  9. innodb_log_file_size = 256M
  10. innodb_log_files_in_group = 3
  11. innodb_max_dirty_pages_pct = 90
  12. innodb_lock_wait_timeout = 120
  13. innodb_file_per_table=1
  14. innodb_rollback_on_timeout






InnoDB Plugin较之Built-in版本新增了很多特性:包括快速DDL、压缩存储等,而且引入了全新的文件格式Barracuda。也表明,Plugin在很多方面优于Built-in版本。当前Plugin版本是1.0.6,一个RC版本。MySQL的官方版本中从5.1.42开始也内置了InnoDB Plugin1.0.6。

这里简单的介绍InnoDB Plugin的编译安装

1. 下载源码

这里使用MySQL5.1.45和InnoDB Plugin1.0.6版本安装。需要单独下载MySQL和InnoDB Plugin的源码:MySQL Community Server


2. 解压并替代源码

我们需要使用下载的Plugin源码代替MySQL源码中的storage/innobase目录。

  1. tar zxvf mysql-5.1.45.tar.gz
  2. $tar zxvf innodb_plugin-1.0.6.tar.gz
  3. $rm -rf mysql-5.1.45/storage/innobase
  4. $mv innodb_plugin-1.0.6 mysql-5.1.45/storage/innobase
3. 编译并安装
  1. $./configure --prefix=/opt/mysql --with-extra-charsets=all \
  2. >--with-plugins=csv,innobase,myisam,heap
  3. $make && make install
  4. $cd /opt/mysql
  5. $./bin/mysql_install_db --basedir=/opt/mysql #初始化数据(权限表等)
  6. $vi /etc/my.cnf #初始化你的配置文件
  7. $./bin/mysqld_safe & #启动数据库

这里需要注意的是,如果想使用InnoDB的Barracuda文件格式,需要在配置文件my.cnf新增
  1. loose_innodb_file_format=barracuda
  2. loose_innodb_strict_mode=1

4. 查看版本

安装完成后,可以通过如下命令查看当前版本:

  1. root@(none) 10:49:15>select @@innodb_version;
  2. +------------------+
  3. | @@innodb_version |
  4. +------------------+
  5. | 1.0.6 |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8. root@(none) 10:51:10>show plugins;
  9. ......

5. 更多关于安装

上面演示的是使用InnoDB Plugin源码覆盖MySQL源码(./storage/innobase)的方式安装。事实上,还可以使用MySQL5.1.45自带的InnoDB Plugin代码安装,无需再单独下载InnoDB Plugin源码。这种安装,会同时安装两个InnoDB版本:Built-in和Plugin,启动时需要特别注意。

5.1 直接解压MySQL并编译安装

  1. $./configure --prefix=/opt/mysql --with-extra-charsets=all \
  2. > --with-plugins=csv,innobase,innodb_plugin,myisam,heap
  3. $make && make install
  4. $cd /opt/mysql
  5. $./bin/mysql_install_db --basedir=/opt/mysql #初始化数据(权限表等)
  6. $vi /etc/my.cnf #初始化你的配置文件

(编译参数中,with-plugins部分新增了innodb_plugin部分)

5.2 准备加载InnoDB Plugin插件

1,查看一下,mysql配置是不是支持动态添加插件
mysql> show variables like "have_%";
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| have_compress        | YES   |
| have_crypt           | YES   |
| have_csv             | YES   |
| have_dynamic_loading | YES   |    //在这里是YES表示是支持的

如果是no呢,就不太好办,因为have_dynamic_loading是只读变量,
解决方法是:
在编译mysql时先执行下面的命令
  1. # CFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 \
  2. -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic'
  3. # CXXFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 \
  4. -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m64 -mtune=generic'




这一步是比较复杂的,为了加载Plugin,需要先将built-in禁用。首先将配置配置文件中所有innodb相关的选择注释掉(也可以使用loose前缀);然后在配置文件中添加忽略InnoDB built-in的参数:

  1. ignore_builtin_innodb #忽略InnoDB built-in

  2. #注释InnoDB选择
  3. #innodb_flush_method = O_DIRECT
  4. #innodb_file_per_table = 1
  5. #innodb_flush_log_at_trx_commit = 2
  6. #innodb_lock_wait_timeout = 100
  7. ......
5.3 启动MySQL并加载InnoDB Plugin 这里需要登入MySQL并手动加载Plugin相关的插件:
  1. $./bin/mysqld_safe & #启动数据库
  2. $mysql -uroot
  3. root>INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';
  4. root>INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so';
  5. root>INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so';
  6. root>INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so';
  7. root>INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so';
  8. root>INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so';
  9. root>INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so';
  10. root>INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so'


5.4 查看版本 安装完成,可以通过如下命令查看安装是否成功:

  1. root>select @@innodb_version;
  2. +------------------+
  3. | @@innodb_version |
  4. +------------------+
  5. | 1.0.6 |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8. root>show plugins;
  9. ......


阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~