表空间迁移
5.5直接拷贝走就可以使用
5.6版本之后 ibd frm ibdata1 不能单独的去cp ibd和frm 不能cp达到迁移的目的,只能在同一版本迁移小版本也不能差
1先把表结构创建出来 建表语句创建空表
show create table 表名;
2把空表的ibd文件删除
alter table 表名 discard tablespace;
3把原表ibd文件拷贝到新主机,改个权限
4登录新数据库,导入一下
alter table 表名 import tablespace;只适合大表的离线迁移
5.7版本数据库
ibdata1被删除恢复,官方找插件MySQL Utilities 二进制解压即用,业务库中有两百张表
1表太多
2建表语句如何获得
mysqlfrm --diagnostic 指定要看的frm文件 导出建表语句
3如何批量把ibd文件删除
select concat("alter table 库名.",table_name,"discard tablespace;") from information_schema.tables where table_schema='库名';
4将磁盘ibd文件考入新库,改权限
5进行 import恢复
6进行数据检查
7有外键关系只能删除掉
8总结8.0如何获取 ibd2sdi ibd文件
undo tablespace
撤销 回滚日志会生成两个undo文件在目录下,在5.7版本需要在初始化是指定undo文件才能独立
8.0可以随时生成undo
创建 undo文件
create undo tablespace 表名 add datafile '文件名字.ibu'
查看有几个undo文件
select tablespace_name ,file_name from information_schema.files where file_type like 'undo log'
删除undo
alter undo tablespace 表名 set inactive;
drop undo tablespace 表名;
tmp tablespace
作用 存储临时表
innodb_temp_data_file_path = ibtmp1:128M;ibtmp2:128M:autoextend:max:500M
一般设置2-3个 512m-1g
通用表空间
作用所有的应用都往里面写 然后我们在扩容跟oracle差不多
表空间包括三个结构
段
区(簇) 一个区默认是连续64个的数据页 默认是1m的空间
页默认是16kb
有7个部分
文件头
配置头
下确界和上确界记录
user records 已经存储的用户记录
free space 可用空间
page directory 页目录
fil trailer 文件预告片
行格式
查看行格式
show varibales like '%fromat%';
+---------------------------------+---------+
| Variable_name | Value |
+---------------------------------+---------+
| binlog_format | ROW |
| default_week_format | 0 |
| information_schema_stats_expiry | 86400 |
| innodb_default_row_format | dynamic |
结构说明
存储单元为页(page),16kb
每个页至少要存两条数据
每条记录都会有记录头
每条记录都会有三个隐藏的列
记录都是按照聚簇索引组织
5.6 默认是compact
变长字段(记录长度)列表+ null列表+记录头信息+列值
变长字段(记录长度)列表采用一到两个字节来表示一个字段的长度
记录头信息:使用5个字节来表示,主要包含记录是否被删除记录类型,下一条记录的相对偏移量
5.7后 默认是 dynamic
和compact格式很像,差异在页面溢出上
redo日志(wal)
log buffer 记录的是buffer pool中数据的变化
8.0 + 后会记录ddl操作
大部分是物理日志
逻辑日志能看见 类似于sql 物理日志是指数据页的变化
在修改之后会记录到log buffer 会比数据页先落盘
日志优先写
1快 因为日志是追加形式顺序io
2日志只会记录变化的字节
3日志提交成功就算成功 更快
undo日志
回滚日志
在提交前可以回滚
记录的是逻辑日志,大概记录的是反操作
8.0+ 会记录ddl
undo会现在redo前落盘
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。