迁移 Innodb 共享表空间至独立表空间 – MySQL邯郸学步

关于 MySQL 中的 Innodb 引擎就不多说了, 毕竟除了MyISAM 之外, 它的应用最广泛. Innodb 存储数据有两种方式: 共享表空间 和 独立表空间. 顾名思义, 共享表空间 就是把所有数据库数据放在一个或多个文件中( 这种方式的话,使用裸设备倒是很方便); 独立表空间 就是采用和MyISAM 想同的方式, 每个表拥有一个独立的数据文件( .idb )。

在服务器资源有限,单表数据不是特别多的情况下, 独立表空间明显比共享方式效率更高. 但是MySQL 默认是共享表空间, 现在LD 来演示一下转换方法.

### 备份数据库, mysqldump 参数请根据自个儿情况修改
#mysqldump -uroot -p123456 -A –opt > backup.sql

### 停止服务器
#sudo /etc/rc.d/mysqld stop

### 清空数据
#sudo rm -rf /var/mysql/data/*

### 重新生成表结构, 修改权限
#sudo mysql_install_db
#sudo chown mysql:mysql -R /var/mysql/data/

### 关键: 修改配置
#sudo vim /etc/mysql/my.cnf
### [mysqld] 段添加 innodb_file_per_table

### 启动MySQL, 修改数据库用户授权
#sudo /etc/rc.d/mysqld start
#mysqladmin -uroot password ‘123456′

### 导回数据
#mysql -uroot -p123456 < backup.sql

OK 大功告成! [mysqld] 有个很有用的配置项 memlock :使MySQL 不写入Swap. 可惜只有在运行MySQL 的用户具有root 权限才行.

Query Cache 在以内容为主的需求下表现很不错, 但业务逻辑一复杂就拖后腿,郁闷ing, set global query_cache_size = 0; 可以运行时关闭Query Cache.

相关文章:

雁过留声,风过流痕, 人过留名.
请领导点评: