博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL学习【第十篇存储引擎实际应用】
阅读量:6822 次
发布时间:2019-06-26

本文共 2007 字,大约阅读时间需要 6 分钟。

一.将现有的myiasm引擎转化为innodb引擎

1.首先我们知道myisam有几点特别烦

  a( 运用的是表级锁

  b( 不支持csr(故障自动恢复)

2.mysql的5.1.177版本innodb引擎支持并不完善,到了5.6.38支持则非常完美,所以不要拿太低版本来做实验了

3.开始备份我们的数据

mysqldump -uroot -p123 库名 表名 >/tmp/a.sql

4.对备份进行处理,将引擎转化为engine

sed -i 's#ENGINE=MYISAM#ENGINE=INNODB#g' /tmp/a.sql

5.将修改后的备份导入

mysql> source /tmp/a.sql

6.测试一下是否发生改变,用命令看看

mysql> show table status like '表名'\G

 

二.存储引擎共享表空间和独立空间

1.表空间概念实在5.5版本之后出现的,目的是为了让数据库的存储更容易扩展

2.共享表空间中默认存储(临时表、undo、系统数据)5.7版本中默认会将undo和临时表独立出来,5.6版本也可以独立,只不过需要在初始化的时候进行配置

3.查看共享表空间

#物理查看[root@db01 ~]# ll /application/mysql/data/-rw-rw---- 1 mysql mysql 79691776 Aug 14 16:23 ibdata1#命令行查看mysql> show variables like '%path%';innodb_data_file_path =bdata1:12M:autoextend

 

4.设置方法(第一个ibdata的数值要求与查看一样

#编辑配置文件[root@db01 ~]# vim /etc/my.cnf[mysqld]innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

 

5.独立表空间:对于用户自主创建的表,会采用此种模式,每个表由一个独立的表空间进行管理

6.查看独立表空间

#物理查看[root@db01 ~]# ll /application/mysql/data/world/-rw-rw---- 1 mysql mysql 688128 Aug 14 16:23 city.ibd#命令行查看mysql> show variables like '%per_table%';innodb_file_per_table=ON

 

 

三.在没备份数据时,由于意外你表坏了,如何恢复

1.拷贝你的表到新的mysql数据库中

[root@db01 ~]# cp -r /application/mysql/data/world/ /xingku/data/

 2.启动新的数据库

mysqld_safe --defaults-file=/xingku/my.cnf &

 

3.登陆以前的数据库进行查看

mysql> select * from city;ERROR 1146 (42S02): Table 'world.city' doesn't exist

 4.找到以前的表结构在新库中创建(没有,就找开发要)

mysql> show create table world.city;#删掉外键创建语句CREATE TABLE `city` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `Name` char(35) NOT NULL DEFAULT '',) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

 

5.删除新库的表空间文件

mysql> alter table city_new discard tablespaces;

 

6.拷贝旧表空间文件

[root@db01 world]# cp /application/data/world/city.ibd /xingku/data/world/city_new.ibd

 

7.授权

chown -R mysql.mysql /xingku

 

8.导入表空间

mysql> alter table city_new import tablespace;

 

接下来有两种方法

  a( 让开发把代码改一下链接到新库中

  b( 将新表导入到旧库中(小数据使用,大量数据你试试

9.导出新的表

mysqldump -uroot -p123 world city > /tmp/a.sql

 

10.删除旧库中的表文件

rm -rf city.*

 

11.登陆旧库,导入新表

mysql> source /tmp/a.sql

 

转载于:https://www.cnblogs.com/busiren/p/10593986.html

你可能感兴趣的文章
利用ArcGIS水文分析工具提取河网
查看>>
看58同城9月招聘季 大数据显示蓝领薪酬更高
查看>>
跳台阶
查看>>
栈1--出栈序列
查看>>
原码 补码
查看>>
ListView setOnItemClickListener无效原因分析
查看>>
DD测磁盘读写性能
查看>>
CUDA编程(六)进一步并行
查看>>
UML类图和时序图
查看>>
C#中的Form,textBox,Bitmap,PictureBox,Button,WebBrowser
查看>>
Oracle Restart能够用来给Oracle GoldenGate 做 High Availability 使用么?
查看>>
css 五角星 (转)
查看>>
python—networkx:在一张图中画出多个子图
查看>>
Java 泛型 一
查看>>
Linux 系统lsblk和blkid命令
查看>>
SNF快速开发平台MVC-表格单元格合并组件
查看>>
laravel 如何引入自己的函数或类库
查看>>
Android学习笔记进阶十一图片动画播放(AnimationDrawable)
查看>>
简单工厂模式(C++)
查看>>
session cookie 原理2
查看>>