mysql innodb创建数据文件失败

本文记录了一次MySQL服务启动失败的问题排查过程。通过调整配置文件中InnoDB数据目录的位置,最终解决了启动失败的问题。文章详细展示了错误日志及修改后的配置。

/etc/my.cnf配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

default-character-set=utf8
default-storage-engine=innodb
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/mysql/innodb/
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /var/mysql/innodb/log/
innodb_log_arch_dir = /var/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

[client]
default-character-set=gbk

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

 

启动mysqld失败,目录权限已设置为777, 并已 /usr/bin/mysql_install_db --user=mysql

原因似乎是innodb的数据目录必须处于datadir配置的子目录下!

 

查看日志 /var/log/mysqld.log

.........................

120817 13:08:17  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /var/mysql/innodb/ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
120817 13:08:17  mysqld ended

 

修改/etc/my.cnf配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

default-character-set=utf8
default-storage-engine=innodb
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir=/var/lib/mysql/innodb/
innodb_data_file_path=ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir=/var/lib/mysql/innodb/log/
innodb_log_arch_dir=/var/lib/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

[client]
default-character-set=gbk

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

 

启动成功。

 

 

### 回答1MySQL InnoDBMySQL 中一种常用的数据存储引擎,其特点是支持事务处理和外键约束,并且具有良好的性能和可伸缩性。 InnoDB 的数据存储是以表为单位的,每个表都有一个对应的数据文件,用于存储表中的数据。除了数据文件之外,InnoDB 还有一个索引文件,用于存储索引信息。 InnoDB 使用了一种称为 B+ Tree 的算法来存储和维护索引,这种算法使得索引查询的效率很高。同时,InnoDB 还支持自适应哈希索引,可以提高对哈希索引的查询性能。 InnoDB 还有一个叫做缓冲池的功能,用于缓存常用的数据和索引,可以提高数据访问的效率。 总的来说,MySQL InnoDB 是一种高效的数据存储引擎,适用于许多不同的应用场景。 ### 回答2: MySQL InnoDB是一种常用的数据库存储引擎,它提供了可靠、高性能的数据存储方式。 InnoDB使用B+树索引来组织数据,这种索引结构能够快速地定位到所需的数据行,提高了查询速度。此外,InnoDB还支持主键索引、唯一索引、全文索引等多种索引类型,以满足不同的查询需求。 InnoDB还支持事务处理,它能够保证在多个并发操作的情况下,数据的一致性和完整性。当需要进行一系列的数据操作时,可以通过事务来确保这些操作要么全部成功,要么全部失败,避免了数据的不一致性问题。 另外,InnoDB还提供了行级锁和事务隔离级别。行级锁可以在并发操作时,更细粒度地锁定数据行,提高了并发操作的效率。而事务隔离级别则可以控制事务之间的相互影响,避免了数据的混乱和冲突。 此外,InnoDB还支持自动增量列和外键约束。自动增量列可以自动生成唯一标识,简化了开发的复杂度。而外键约束可以保证数据的一致性,防止出现不合法的引用。 总之,InnoDB是一种功能强大的数据存储引擎,它具有高性能、可靠性和完整性保证等特点,适用于各种规模的应用和数据存储需求。 ### 回答3: InnoDBMySQL关系型数据库管理系统中的一种数据存储引擎。它拥有许多独特的特性,可以提供高度的数据完整性和可靠性。 首先,InnoDB使用事务来管理数据的插入、删除和更新操作。这意味着所有的操作要么全部成功完成,要么全部回滚。这保证了数据的一致性和完整性。 其次,InnoDB支持行级锁定。这意味着在并发操作时,只有被修改的行会被锁定,而不是整个数据表。这提高了多用户环境下的并发性能。 另外,InnoDB还支持外键约束。这意味着在不同的表之间创建关联关系,确保数据的一致性和完整性。当删除或更新主表中的记录时,相关的外键记录也会相应进行操作,防止出现数据不一致的情况。 此外,InnoDB还具有自动崩溃恢复的能力。它具有一个称为“重做日志”的机制,可以记录所有在事务中所做的修改,以便在意外崩溃或系统故障后可以恢复数据到事务开始之前的状态。 总的来说,InnoDBMySQL中一种强大的存储引擎,它提供高度的数据完整性和可靠性,同时还具备了高并发性和灵活性。在开发和管理大规模数据库时,InnoDB是一个非常理想的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazyclough

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值