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/my3307.cnf --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/my3307.cnf --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql3307/mysql3307 --user=mysql
5.啟動mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf --user=mysql &
6.匯入資料
source /tmp/3307all.sql
三.innodb表空間遷移
原庫表結構:
1.在目標例項上建立一個相同的表
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 2006 (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表空間遷移
1. flush table with read lock
2. 直接複製資料檔案和表結構檔案
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/my3307.cnf --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/my3307.cnf --initialize-insecure --basedir=/usr/local/mysql --datadir=/home/mysql3307/mysql3307 --user=mysql
5.啟動mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf --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`));
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 2006 (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表空間遷移
1. flush table with read lock
2. 直接複製資料檔案和表結構檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2152422/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql收縮共享表空間MySql
- MySQL 遷移表空間,備份單表MySql
- 表空間遷移
- 遷移表空間
- 分析表空間空閒率並收縮表空間
- Oracle表空間收縮方案Oracle
- Oracle表空間擴容Oracle
- 【遷移】表空間transport
- RMAN遷移表空間
- MySQL 5.7新特性之線上收縮undo表空間MySql
- DB2_收縮表空間DB2
- ORACLE表批量遷移表空間Oracle
- 遷移SYSTEM表空間為本地管理表空間
- expdp/impdp 遷移表空間
- MySQL InnoDB 共享表空間和獨立表空間MySql
- MySQL InnoDB 共享表空間和獨立表空間MySql
- 收縮表空間 for Oracle 10gOracle 10g
- 跨平臺表空間遷移(傳輸表空間)
- MySQL Innodb表空間解除安裝和遷移案例MySql
- 遷移表到新的表空間
- oracle空間收縮Oracle
- table/index/LOBINDEX遷移表空間Index
- lob欄位表空間遷移
- 基於可傳輸表空間的表空間遷移
- 【RESIZE】Oracle收縮表空間主要命令Oracle
- oracle之臨時表空間的收縮Oracle
- Oracle 不同平臺間表空間遷移Oracle
- 表、索引遷移表空間alter table move索引
- Oracle RAC+DG 表空間擴容Oracle
- 空間遷移
- Oracle中表空間、表、索引的遷移Oracle索引
- 表空間遷移辦法補充
- 使用RMAN簡單遷移表空間
- 資料庫物件遷移表空間資料庫物件
- 建立表空間、使用者、擴容、移動資料檔案
- 表空間(資料檔案shrink)收縮示例
- Oracle效能優化:收縮臨時表空間Oracle優化
- MySQL innodb共享表空間新增表空間資料檔案方法MySql