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
- MySQL 5.7新特性之線上收縮undo表空間MySql
- table/index/LOBINDEX遷移表空間Index
- Oracle中表空間、表、索引的遷移Oracle索引
- Oracle RAC+DG 表空間擴容Oracle
- 【RESIZE】Oracle收縮表空間主要命令Oracle
- Oracle 12cbigfile表空間物件遷移Oracle物件
- MySQL 中的共享表空間與獨立表空間如何選擇MySql
- 表空間(資料檔案shrink)收縮示例
- mysql Innodb表空間解除安裝、遷移、裝載的使用方法MySql
- oracle RAC+DG 擴容ASM和表空間(Linux)OracleASMLinux
- Ubuntu 22.04擴容LVM空間UbuntuLVM
- Ubuntu空間不足,如何擴容Ubuntu
- MySQL共享表空間各個版本之間的演變圖MySql
- lvm收縮邏輯卷空間LVM
- redis工具擴容收縮運維工具Redis運維
- 用傳輸表空間跨平臺遷移資料
- 華納雲:如何配置oracle表空間自動擴容?Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- 達夢資料庫DSC架構下ASM擴容及表空間擴容實施資料庫架構ASM
- windchill 擴充USERS表空間
- MySQL 5.7 新特性 共享臨時表空間及臨時表改進MySql
- mysql 大表mysqldump遷移方案MySql
- MySQL InnoDB表空間加密MySql加密
- MySQL 傳輸表空間MySql
- win10 已經壓縮出的空間怎麼擴容到c盤Win10
- 256變4096:分庫分表擴容如何實現平滑資料遷移?
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 達夢(DM)資料庫的表空間建立和遷移維護資料庫
- lvm 擴充邏輯卷空間(linux的磁碟擴容)LVMLinux
- mysql之 表空間傳輸MySql
- MySQL InnoDB Undo表空間配置MySql
- MySQL 可以壓縮或回收磁碟空間嗎MySql
- 在擴容表空間的時候出現ORA-19502,ORA-27072