添加InnoDB到安装好的MySQL中的例子

作者:简简单单 2014-12-02

添加InnoDB到安装好的MySQL

添加InnoDB到安装好的MySQL中的例子

1.首先确定,在mysql的’plugin_dir’下是否有ha_innodb_plugin.so和ha_innodb.so两个文件,如果没有找到,在你的mysql编译目录里有下面的目录文件(内置的innodb和innodb_plugin)
storage/innobase/.libs/ha_innodb.so
storage/innodb_plugin/.libs/ha_innodb_plugin.so
你需要把它们(ha_innodb_plugin.so和ha_innodb.so)拷贝到mysql的plugin目录中(/usr/local/mysql/lib/mysql/plugin)

添加InnoDB到安装好的MySQL中的例子

2.在mysql命令行安装一下

mysql> INSTALL PLUGIN InnoDB SONAME ‘ha_innodb.so';
Query OK, 0 rows affected (1.74 sec)

添加InnoDB到安装好的MySQL中的例子


增加mysql InnoDB的表空间


innodb_data_file_path
该变量设置innoDB数据文件的位置和大小。指定的文件必须大于10M,如果不受系统文件限制,可以设置大于4G。该变量是mysql服务器容量规划和性能扩展能力的核心要素。通常设置是创建一个数据目录内容的基线大小,在10M到128M之间,第二个文件设置为10M并自动扩展。如innodb_data_file_path = ibdata1:128M;ibdata2:10M:autoextend。

innodb_file_per_table
有三种分配和管理表空间:
1. 原始分区的表空间也就是raw
2. 共享文件表空间
3. 每个表单独的表空间

使用innodb_file_per_table的好处有:
1. 如果使用软链接将大表分配到不同的分区上,易于管理数据文件
2. 易于监控解决IO资源使用的问题
3. 易于修复和恢复损坏的数据
3.1 相互独立的,不会影响其他innodb表
3.2 导出导入只针对单个表,而不是整个共享表空间
4. 解决单个文件大小的限制
5. 对于大量的delete操作,更易于回收磁盘空间
6. 碎片较少,易于整理optimize table
7. 易于安全审计
8. 易于备份

如果在innodb表已创建后设置innodb_file_per_table,那么数据将不会迁移到单独的表空间上,而是续集使用之前的共享表空间。
只有新创建的表才会分离到自己的表空间文件。
[warning]innodb_file_per_table是静态变量,更改后要重启mysql服务才能生效。[/warning]

增加表空间
当没有使用innodb_file_per_table也没有启用自动扩展,那么随着数据的增长,表空间将满了。在这情况下,需要添加额外的表空间来扩展容量。方法如下:
1. 停止mysql服务
2. 备份配置文件,便于出现问题好回退
3. 编辑innodb_data_file_path值
根据你的环境更改ibdata1:$size;ibdataN:$size;…ibdataN:$size; 当前定义的表空间或默认表空间是不能改变的,否则启动失败,但是,可以额外的添加表空间,ibdataN序列根据当前的数量递增,$size自定义。
4. 启动mysql服务
6. 观察mysql错误日志是否有错


添加和调整innodb log文件

innodb_log_group_home_dir

在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里。这些日志位于innodb_log_group_home_dir变量定义的目录中,通常我们把这个目录设置与innodb_data_home_dir变量相同。为了获得最佳性能,建议分离innodb_data_home_dir和innodb_log_group_home_dir到单独的物理存储阵列上,这样可以保证IO资源不起冲突,利于服务器处理大量高并发连接。

innodb_log_file_size
这个选项决定着性能,要慎重设置。默认设置为5M,难以满足生产环境下的需求。日志文件在mysql实例第一次启动时初始化,该文件是旋转的,因此可以根据文件修改时间来判断日志文件的旋转频率,旋转频率太频繁,说明日志文件太小了,要扩大。
innodb_log_file_size设置大小通常视innodb_buffer_pool_size而定。影响日志文件性能的变量是innodb_log_buffer_size,确保有足够大的日志缓冲区来保存脏数据在被写入到日志文件之前。
对于比较小的innodb_buffer_pool_size,建议是设置一样大。 但是,对于比较大的innodb_buffer_pool_size,不建议这么设置,这会存在一个潜在的问题,那就是当mysql挂掉时,恢复数据需要很久,造成大量的停机时间。官方文档的建议设置是innodb_buffer_pool_size/innodb_log_files_in_group。
[warning]innodb_log_file_size是静态的变量,需要以“干净”的方式更改并重新启动,否则mysql启动不起来。[/warning]

innodb_log_buffer_size
该变量将数据存导入到内存中,可以减少大量的IO资源消耗。当事务提交时,保存脏数据,后续在刷新到磁盘。当我们调整innodb_buffer_pool_size大小时,innodb_log_buffer_size和innodb_log_file_size也应该做出相应的调整。

innodb_log_files_in_group
该变量控制日志文件数。默认值为2。日志是以顺序的方式写入。
[warning]innodb_log_files_in_group是静态的变量,需要以“干净”的方式更改并重新启动,否则mysql启动不起来。[/warning]

添加和调整innodb log文件步骤:
1. 停止mysql服务

# /etc/init.d/mysqld stop
[warning]一定要正常的关闭。[/warning]2. 根据innodb_log_group_home_dir变量进入到日志目录下

# cd /data/mysql_data
3. 备份旧的日志文件,以防不测便于回退

# mv ib_logfile* /backup/
4. 按照要求调整日志文件大小或数量并写入到my.cnf文件中
innodb_log_file_size调整日志文件大小。
innodb_log_files_in_group调整日志文件数量。
innodb_log_group_home_dir调整日志文件位于目录。
5. 重新启动mysql服务
该过程将会按照新的日志配置来创建日志文件。同时,注意查看mysql错误日志,来监控是否出错

相关文章

精彩推荐