添加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)

2.在mysql命令行安装一下

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


增加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错误日志,来监控是否出错

时间: 2024-11-05 16:29:50

添加InnoDB到安装好的MySQL中的例子的相关文章

MySQL中对于索引的基本增删查改操作总结_Mysql

创建索引 MySQL创建索引的语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL] 中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引. index_name

Mysql 之 添加innodb支持

在对mysql进行编译安装时,当安装完成后有时会发现不支持innodb存储引擎,这是因为编译安装时缺少支持innodb的参数: --with-plugins=PLUGIN[,PLUGIN..] Plugins to include in mysqld. (default is: none) Must be a configuration name or a comma separated list of plugins. Available configurations are: none ma

mysql中engine=innodb和engine=myisam的区别介绍

MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持,本文为大家讲解下mysql中engine=innodb和engine=myisam的区别,不懂的朋友可以学习下,希望对大家有所帮助   最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什么区别,就去查了查.原来是MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持. My

MySQL中Innodb的事务隔离级别和锁的关系的讲解教程_Mysql

前言: 我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力.所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在.这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么. 一次封锁or两段锁?因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用

原版MySQL中如何恢复单个InnoDB数据库表

Percona 中的 xtrabackup 真是个好工具, 简单的介绍的他的功能: 1.创建热备份(主要依靠innodb的 crash recovery 功能) 2.增量备份 3.直接对备份文件压缩打包 4.负载小 在测试最新版本2.0时,发现问题: importing  and   exporing  individual tables中这个工具对Oracle 原版的MySQL是不起作用的. 本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/ 解释

Navicatfor Mysql中添加外键方法

环境:NavicatforMysql 8.2 + MySQL Sever 5.1 问题:NavicatforMysql中添加外键 解 决: 方法一: 使用SQL语句创建外键: alter table 外键表 add constraint 约束 名 foreign key(栏位名) references 参照表(外键栏位名) on delete restrict/set null/cascade on update restrict/set null/ cascade; 不指定外键的名称,mysq

MySQL中MyISAM引擎与InnoDB引擎性能简单测试

[硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows XP SP2 SE : PHP5.2.1 DB : MySQL5.0.37 Web: IIS6 [MySQL表结构] CREATE TABLE `myisam` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) default NULL, `content` text, PRIMARY

MySql中启用InnoDB数据引擎的方法

1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

MySQL中InnoDB存储引擎的锁的基本使用教程_Mysql

MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 各种锁特点 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生冲突的概率最高,并发度最低 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最高 页面锁:开销和加锁时间介于表锁和行锁之间:会出现死锁:锁定粒度介于表锁和行锁之