数据库存储引擎—InnoDB

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

14周-存储引擎

  • InnoDB引擎特点

支持事务,适合处理大量短期事务

行级锁

读写阻塞与事务隔离级别相关

可缓存数据和索引

支持聚簇索引

崩溃恢复性更好

支持MACC高并发

从MySQL5.5后支持全文索引

从MySQL5.5.5开始为默认的数据库引擎

 

删除数据库

MariaDB [dingDB]> drop database dingDB;

 

 

创建数据库的时候不定义存储引擎,存储引擎是基于表的,所以叫表类型,而不叫数据库类型

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;

 

即使是一个数据库中,也可两张表使用不同的存储引擎,这样做容易乱,不要这样玩!

 

从运维标准化来讲,应该用一种,要想实现自动化,就需要先实现标准化,标准化是运维自动化的前提。

 

也可以在导出的文件中,把MyISAM存储引擎的数据库,修改为InnoDB的存储引擎,替换一下ENGINE=InnoDB就好

 

 

[root@localhost ~]# sed -i.bak ‘s/ENGINE=MyISAM/ENGINE=InnoDB/g’ hellodb_MyISAM.sql

 

[root@localhost ~]# ll

-rw-r–r–. 1 root root 7786 Feb  8 05:12 hellodb_MyISAM.sql

-rw-r–r–. 1 root root 7786 Feb  7 18:24 hellodb_MyISAM.sql.bak

 

 

导入数据库

[root@localhost ~]# mysql < hellodb_MyISAM.sql

 

 

查看

MariaDB [(none)]> show table status from hellodb\G

*************************** 1. row ***************************

Name: classes

Engine: InnoDB

Version: 10

Row_format: Compact

 

InnoDB的小缺点是不支持全文索引,后来才支持,在一个大文章中搜索关键字

[c] InnoDB support for FULLTEXT indexes is available in MySQL 5.6 and later.

 

存放文件的类型,只哟偶表结构,表数据在数据库目录下

[root@localhost /var/lib/mysql/hellodb]# ll

total 88

-rw-rw—-. 1 mysql mysql 8636 Feb  8 05:13 classes.frm

 

数据文件

[root@localhost /var/lib/mysql]# ll

-rw-rw—-. 1 mysql mysql 18874368 Feb  7 21:20 ibdata1

 

修改导入的数据库备份文件

[root@localhost ~]# vim hellodb_MyISAM.sql

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb2` /*!40100 DEFAULT CHARACTER SET utf8 */;

 

USE `hellodb2`;

 

重新导入

[root@localhost ~]# mysql < hellodb_MyISAM2.sql

 

查看

MariaDB [(none)]> show databases;

| hellodb            |

| hellodb2           |

 

本地数据文件,没有变大,文件的大小已经能够放的下新导入的数据了,时间变了

[root@localhost /var/lib/mysql]# ll -h

-rw-rw—-. 1 mysql mysql  18M Feb  7 21:22 ibdata1

 

不同的数据库,都是InnoDB存储引擎,创建的数据库对应的文件夹中,只有表的结构和定义,数据,在数据库目录下,这样不好。可以进行改进

 

每个表,都会有自己独立的表文件了

启用:innodb_file_per_table=ON

两类文件放在数据库独立目录中

 

修改配置文件

[root@localhost ~]# vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

innodb_file_per_table ON可以不加,默认就是NO

 

 

MariaDB [hellodb2]> show variables like ‘%innodb_file_per_table%’;

+———————–+——-+

| Variable_name         | Value |

+———————–+——-+

| innodb_file_per_table | ON    |

+———————–+——-+

1 row in set (0.00 sec)

 

重启服务

[root@localhost ~]# systemctl restart mariadb

 

旧的数据不会拆成多个文件,新的会放到独自的文件夹中

 

删除数据库重新导入一次

MariaDB [(none)]> drop database hellodb2;

 

MariaDB [(none)]> source /root/hellodb_MyISAM.sql

 

 

拆分前

[root@localhost /var/lib/mysql/hellodb]# ll

total 88

-rw-rw—-. 1 mysql mysql 8636 Feb  8 07:51 classes.frm

-rw-rw—-. 1 mysql mysql 8630 Feb  8 07:51 coc.frm

 

拆分后的表

[root@localhost /var/lib/mysql/hellodb2]# ll

total 1432

-rw-rw—-. 1 mysql mysql  8636 Feb  8 07:53 classes.frm 表定义、表结构

-rw-rw—-. 1 mysql mysql 98304 Feb  8 07:53 classes.ibd 表数据、表索引

-rw-rw—-. 1 mysql mysql  8630 Feb  8 07:53 coc.frm

-rw-rw—-. 1 mysql mysql 98304 Feb  8 07:53 coc.ibd

 

索引和数据都放入到单独的文件中了

 

修改配置文件后,添加的InnoDB表才会拆成两个文件!

 

 

把文件备份数来、先停止数据库,拷贝数据库数据文件和表结构文件,做hash完整性校验,防止数据在拷贝的过程中丢失!

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91620

(0)
无言胜千言无言胜千言
上一篇 2018-02-22 17:16
下一篇 2018-02-23 16:12

相关推荐

  • 如何练好yum的一招一式

      工作时间越久,就越有这样一个深刻体会,一个新知识或者新的技能一个人学习起来并不会觉得吃力,反而要想把你学习的新知识或者新技能给讲清楚让普通人听得懂才是最难的,之前我写过一篇博客讲述linux下的RPM包管理器,今天写的练好yum的一招一式,同样都是都是在linux系统的软件包的安装、卸载、升级等功能的,为什么我们还需要yum那,记得一位大哲学家…

    Linux干货 2015-11-10
  • CentOS 5.0系统启动流程

    注:CentOS系统5.x,6.x和7.x的启动流程不同,所以本文仅讨论CentOS 5.x的启动流程。 1. POST加电自检 服务器在开机之后首先会先进行硬件的检测,在开机界面我们可能会看到检测硬盘,cpu或raid卡等信息,此界面即硬件自检界面。 2. BIOS引导 BIOS(BootSequence)用于通过指定的引导装置引导系统启动。 3. Boo…

    2017-05-14
  • 第三周-作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     ~]# who | cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。     ~]# who |  t…

    Linux干货 2016-12-14
  • 马哥教育网络班21期第10周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST加电自检—— 根据bios设定,顺序查找引导设备—— 读取引导设备MBR(共512字节,前446为bootloader,后64表示分区信息,后2表示bootloader有效性),加载bootloader程序—— 以grub为例,grub1.0阶段将零磁道一扇区加载到内存,gr…

    Linux干货 2016-10-24
  • 今天正式加入马帮开启我的学习Linux之路

    3月26日马哥教育30期开学仪式,终于见到了我们的马哥马永亮先生,同时马哥还有前大众点评架构师张Sir以及国内首批通过红帽授权认证讲师(RHCI)的老王给我们新生做了开学演讲。接着我们的宗华老师以及云珍老师对我们平时的学习以及生活做出了各种介绍与规定,还有我们同学之间也进行了相互自我介绍彼此熟悉….

    2018-03-26
  • linux磁盘管理

    硬盘接口类型:         IDE:并口,133M/s;100个IO/s        SCSI:并口,UltraSCSI320,320M/s UltraSCSI640 640M/s 150-200IO/s&nbsp…

    Linux干货 2016-08-29