#mysiam数据文件 frm=fotmat 结构 #myisam的数据文件由3个组成 1、查看mysql的安装目录下的所有user文件 [root@db01 ~]# cd /app/mysql-5.6.50/data/mysql
2、查看所有user的文件 [root@db01 mysql]# ll user* -rw-rw---- 1 mysql mysql 10684 Aug 7 23:30 user.frm -rw-rw---- 1 mysql mysql 664 Aug 13 15:27 user.MYD -rw-rw---- 1 mysql mysql 2048 Aug 13 22:01 user.MYI
#InoDd的数据文件由2个组成 进入随意一个库文件 [root@db01 student]# cd /app/mysql-5.6.50/data/student [root@db01 student]# ll -rw-rw---- 1 mysql mysql 8726 Aug 13 03:17 stu1.frm -rw-rw---- 1 mysql mysql 98304 Aug 15 20:52 stu1.ibd
#查看共享表空间 #物理查看 [root@db01 ~]# ll /app/mysql-5.6.50/data/ -rw-rw---- 1 mysql mysql 56 Aug 7 23:44 auto.cnf #UUID文件 -rw-rw---- 1 mysql mysql 79691776 Aug 15 20:56 ibdata1 #共享表空间 -rw-rw---- 1 mysql mysql 50331648 Aug 15 20:56 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Aug 7 23:30 ib_logfile1 ... ...
#查看共享表空间的配置 root@localhost:(none) > show variables like '%path%'; +----------------------------------+------------------------+ | Variable_name | Value | +----------------------------------+------------------------+ | innodb_data_file_path | ibdata1:12M:autoextend | +----------------------------------+------------------------+ 这个表空间默认大写只能存储12M数据 autoextend自动扩展:如果说共享表空间越来越大,存储系统数据的、存undo、临时表的速度越来越慢,所以共享表空间要做切割
#共享表空间的切割 1、编辑配置文件 [root@db01 ~]# vim /etc/my.cnf [mysqld] innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend #后面再切的话改ibdata3 ibdata4就行了
2、重启数据库失败 [root@db01 ~]# /etc/init.d/mysqld restart Shutting down MySQL.... SUCCESS! Starting MySQL.... ERROR! The server quit without updating PID file (/app/mysql-5.6.50/data/db01.pid).
5、重新修改配置文件,再启动 [root@db01 ~]# vim /etc/my.cnf [mysqld] innodb_data_file_path=ibdata1:76M;ibdata2:50M:autoextend
[root@db01 ~]# /etc/init.d/mysqld restart
6、切割完成查看多出ibdata2,以后就往ibdata2保存系统数据,undo、临时表,ibdata1就固定在76M了 [root@db01 ~]# ll /app/mysql-5.6.50/data/ -rw-rw---- 1 mysql mysql 79691776 Aug 16 11:07 ibdata1 -rw-rw---- 1 mysql mysql 52428800 Aug 16 11:07 ibdata2 #会新增这个
独立表空间:存储用户真实数据、每一张inodb存储引擎的表都有一个自己独立表空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14
所有的idb文件,就是每一张表的独立表空间
#查看独立表空间 [root@db01 ~]# ll /app/mysql-5.6.50/data/student/stu* -rw-rw---- 1 mysql mysql 8726 Aug 13 03:17 stu1.frm -rw-rw---- 1 mysql mysql 98304 Aug 15 20:52 stu1.ibd #独立表空间
#查看独立表空间是否开启,默认是开启的 root@localhost:(none) > show variables like '%per_table%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+
[root@db01 ~]# ll /app/mysql-5.6.50/data/ total 229028 -rw-rw---- 1 mysql mysql 56 Aug 17 02:16 auto.cnf -rw-rw---- 1 mysql mysql 1995 Aug 17 02:16 db01.err -rw-rw---- 1 mysql mysql 5 Aug 17 02:16 db01.pid -rw-rw---- 1 mysql mysql 79691776 Aug 17 02:16 ibdata1 -rw-rw---- 1 mysql mysql 52428800 Aug 17 02:15 ibdata2 -rw-rw---- 1 mysql mysql 50331648 Aug 17 02:16 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Aug 17 02:15 ib_logfile1 drwx------ 2 mysql mysql 4096 Aug 17 02:15 mysql -rw-rw---- 1 mysql mysql 69408 Aug 17 02:15 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1640526 Aug 17 02:15 mysql-bin.000002 -rw-rw---- 1 mysql mysql 120 Aug 17 02:16 mysql-bin.000003 -rw-rw---- 1 mysql mysql 57 Aug 17 02:16 mysql-bin.index drwx------ 2 mysql mysql 4096 Aug 17 02:15 performance_schema drwx------ 2 mysql mysql 6 Aug 17 02:15 test
查看表结构完整,但是没数据 root@localhost:(none) > desc world.city; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | MUL | | | | District | char(20) | NO | | | | | Population | int(11) | NO | MUL | 0 | | +-------------+----------+------+-----+---------+----------------+ root@localhost:(none) > select * from world.city; Empty set (0.00 sec)
那么数据在哪里呢,数据在独立表空间 [root@db01 ~]# ll /app/mysql-5.6.50/data/world/ total 16 -rw-rw---- 1 mysql mysql 8710 Aug 17 02:24 city.frm -rw-rw---- 1 mysql mysql 147456 Aug 17 02:24 city.idb #独立表空间 -rw-rw---- 1 mysql mysql 61 Aug 17 02:22 db.opt
4、#删除新环境的独立表空间 root@localhost:(none) > alter table world.city discard tablespace;
[root@db01 ~]# ll /app/mysql-5.6.50/data/world/ total 16 -rw-rw---- 1 mysql mysql 8710 Aug 17 02:24 city.frm -rw-rw---- 1 mysql mysql 61 Aug 17 02:22 db.opt #独立表空间被删除
5、#从旧环境db02将city表的表空间复制过来 [root@db02 ~]# cd /app/mysql-5.6.50/data/world/ [root@db02 world]# scp city.ibd 172.16.1.51:/app/mysql-5.6.50/data/world/
#查看mysql的redo 在磁盘上面存着 [root@db01 ~]# ll /app/mysql-5.6.50/data/ -rw-rw---- 1 mysql mysql 50331648 Aug 18 00:20 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Aug 7 23:30 ib_logfile1
#查看mysql的undo [root@db01 ~]# ll /app/mysql-5.6.50/data/ -rw-rw---- 1 mysql mysql 79691776 Aug 18 00:20 ibdata1 -rw-rw---- 1 mysql mysql 52428800 Aug 18 00:20 ibdata2