2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > mysql表空间转移_mysql共享表空间扩容 收缩 迁移

mysql表空间转移_mysql共享表空间扩容 收缩 迁移

时间:2020-06-14 21:24:09

相关推荐

mysql表空间转移_mysql共享表空间扩容 收缩 迁移

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

一.扩容innodb文件

1.关闭mysql db

/usr/local/mysql/bin/mysqladmin -S /tmp/mysql3307.sock shutdown

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/f --user=mysql &

二.缩小表空间

共享表空间文件,一旦扩展无法自动缩小,需要通过手工缩小

1.导出全部数据库

/usr/local/mysql/bin/mysqldump -uroot -p -A -S /tmp/mysql3307.sock > /tmp/3307all.sql

Enter password:

2.关闭mysql db

/usr/local/mysql/bin/mysqladmin -S /tmp/mysql3307.sock shutdown

3.删除mysql的数据目录

rm -rf /home/mysql3307/mysql3307/*

4.初始化mysql

/usr/local/mysql/bin/mysqld --defaults-file=/etc/f --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql3307/mysql3307 --user=mysql

5.启动mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/f --user=mysql &

6.导入数据

source /tmp/3307all.sql

三.innodb表空间迁移

原库表结构:

CREATE TABLE wwj.t1 (

id INT NOT NULL,

name VARCHAR(45) NULL,

PRIMARY KEY (id));

alter table wwj.t1 add index idx_name (name) ;

insert into wwj.t1 values(1,‘wwj’);

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

CREATE TABLE wwj2.t1 (

id INT NOT NULL,

name VARCHAR(45) NULL,

PRIMARY KEY (id));

2.在目标库上执行ALTER TABLE t DISCARD TABLESPACE;

ALTER TABLE t1 DISCARD TABLESPACE;

discard的意思就是从数据库detached,会删除ibd文件,保留frm文件。

也就意味着,你可以对frm文件操作,比如:rename table,drop table ,但是不能对ibd文件操作,比如:dml

3.在源库上执行FLUSH TABLES t FOR EXPORT;生成.cfg文件

flush tables t1 for export;

-rw-r-----. 1 mysql mysql 67 Mar 24 06:59 db.opt

-rw-r-----. 1 mysql mysql 467 Mar 24 18:32 t1.cfg

-rw-r-----. 1 mysql mysql 8586 Mar 24 06:59 t1.frm

-rw-r-----. 1 mysql mysql 114688 Mar 24 06:59 t1.ibd

此时,.cfg文件在InnoDB的data directory中

flush tables … for export 会加锁,这时候,千万不能退出终端或session,否则加锁无效且.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.在源库执行unlock tables;

mysql> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

6.在目标库执行ALTER TABLE t IMPORT TABLESPACE;

第一次执行:在目标库追加index后成功

mysql> alter table t1 import tablespace;

ERROR (HY000): MySQL server has gone away

No connection. Trying to reconnect…

Connection id: 3

Current database: wwj2

ERROR 1808 (HY000): Schema mismatch (Number of indexes don’t match, table has 1 indexes but the tablespace meta-data file has 2 indexes)

innodb可传输表空间注意事项

必须开启 innodb_file_per_table

当这个表处于quiesced状态,甚至不能被select

两边实例的page size 一致

5.7 版本之前,不支持分区表transport

外键相关的表,必须设置 foreign_key_checks=0 才能成功

ALTER TABLE … IMPORT TABLESPACE 不需要.cfg metadata file . 但是,这样的话,MySQL就不会对schema进行verificate

5.6以及更高版本,import&export 版本必须在同一个series

在replication环境中,master & slave 都必须开启 innodb_file_per_table

对于InnoDB general tablespace,不支持discard & import tablespace

如果两边服务器的table row_format设置的不一样,会导致schema mismatch error

加密过的InnoDB tablespace 必须要拷贝.cfp 文件

四.MyISAM表空间迁移

flush table with read lock

直接复制数据文件和表结构文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。