mysql共享表空间的扩容,收缩和迁移

  介绍

本篇内容介绍了“mysql共享表空间的扩容,收缩和迁移”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

<强>一。扩容innodb文件
1。关闭mysql数据库
#/usr/local/mysql/bin/mysqladmin  s/tmp/mysql3307。袜子关闭

2。打开参数文件
innodb_data_file_path =ibdata1:512M: autoextend
将ibdata1调整至接近实际大小,并在后面追加新的文件:
innodb_data_file_path =, ibdata1:512M; ibdata2:512M: autoextend

3。启动数据库
#/usr/local/mysql/bin/mysqld_safe——defaults-file=/etc/my3307.cnf——mysql用户=,

<强>二。缩小表空间
共享表空间文件,一旦扩展无法自动缩小,需要通过手工缩小
1。导出全部数据库
#/usr/local/mysql/bin/mysqldump -uroot - p - s/tmp/mysql3307。袜子比;/tmp/3307。sql
输入密码:

2。关闭mysql数据库
#/usr/local/mysql/bin/mysqladmin  s/tmp/mysql3307。袜子关闭

3。删除mysql的数据目录
rm射频/home/mysql3307/mysql3307/*

4。初始化mysql
/usr/地方/mysql/bin/mysqld——defaults-file=/etc/my3307.cnf——initialize-insecure basedir=/usr/地方/mysql——datadir=/home/mysql3307/mysql3307——mysql用户=

5。启动mysql
/usr/地方/mysql/bin/mysqld_safe——defaults-file=/etc/my3307.cnf——mysql用户=,

6。导入数据
源/tmp/3307 all.sql

<强>三.innodb表空间迁移
原库表结构:

  点击(此处)折叠或打开

<李>

创建表的wwj。“t1”(

<李>

  “id”才能INT NOT NULL,

<李>

  “名字”才能VARCHAR (45) NULL,

<李>

  主键才能(id));

<李>

  ,,

<李>

  alter table wwj。t1添加索引idx_name(名字),

<李>


<李>

插入wwj。t1值(& # 39;wwj& # 39;);


1。在目标实例上创建一个相同的表

  点击(此处)折叠或打开

<李>

创建表“wwj2”。“t1”(

<李>

  “id”才能INT NOT NULL,

<李>

  “名字”才能VARCHAR (45) NULL,

<李>

  主键才能(id));

2。在目标库上执行ALTER TABLE t丢弃表空间;
ALTER TABLE t1丢弃表空间;
的背后,丢弃的意思就是从数据库分离,会删除ibd文件,保纳文留件。
——也就意味着,你可以对纳文件操作,比如:重命名表,删除表,但是不能对ibd文件操作,比如:dml

3。在源库上执行刷新表t出口;生成。cfg文件
刷新表t1出口;

-rw-r - - - - - -。1 mysql mysql,,67年3月24日06:59 db.opt
-rw-r - - - - - -。1 mysql mysql,,467年3月24日32 t1.cfg
-rw-r - - - - - -。1 mysql mysql,8586年3月24日06:59 t1.frm
-rw-r - - - - - -。114688 3月24 06:59 mysql mysql t1.ibd

此时,。cfg文件在InnoDB的数据目录中
刷新表. .出口会加锁,这时候,千万不能退出终端或会话,否则加锁无效且. cfg文件自动删除。

4。讲.ibd文件和。cfg文件拷贝到目标实例
[root@mysql5 wwj] # cp t1。cfg/home/mysql3306/mysql3306/wwj2
[root@mysql5 wwj] # cp t1。ibd/home/mysql3306/mysql3306/wwj2

  修改权限


5。在源库执行解锁表;
mysql>打开表;
查询好,0行影响(0.00秒)

6。在目标库执行ALTER TABLE t导入表空间;

第一次执行:在目标库追加索引后成功
mysql>alter table t1导入表空间;
错误2006 (HY000): MySQL服务器消失
没有连接。尝试重新连接…
连接id:,,3
当前数据库:wwj2

错误1808 (HY000):模式不匹配(索引数量不要# 39;t匹配,表1索引表空间元数据文件有两个索引)

innodb可传输表空间注意事项
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
必须开启innodb_file_per_table
当这个表处于quiesced状态,甚至不能被选择
两边实例的页面大小一致
5.7版本之前,不支持分区交通
表外键相关的表,必须设置foreign_key_checks=0才能成功
ALTER table……导入表空间不需要。cfg文件的元数据。但是,这样的话,MySQL就不会对模式进行verificate
5.6以及更高版本,import&出口版本必须在同一个系列
在复制环境中,主人,奴隶都必须开启innodb_file_per_table
对于InnoDB表空间,不支持丢弃,导入表空间
如果两边服务器的表row_format设置的不一样,会导致模式失配误差

mysql共享表空间的扩容,收缩和迁移