• 云途科技成立于2010年 - 专注全球跨境电商服务器租赁托管!
  • 帮助中心

    您可以通过下方搜索框快速查找您想知道的问题

    innodb 共享表空间 转 独立表空间 详细说明,以及遇到的问题

      in  数据库      Tags: 

    最近在优化mysql innodb存储引擎,准备把共享表空间转换成独立表空间。刚开始的没考虑这么多,过段时间又要推广,所以优化一下,看看效果如何。说一个转换过程。

    1,查看一下是共享表空间,还是独立表空间

    mysql> show variables like '%per_table%';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | OFF   |
    +-----------------------+-------+
    1 row in set (0.00 sec)

    如果是OFF,肯定不是独立表空间。如果是ON的话,也不一定是独立表空间。最直接的方法就是查看硬盘上的文件,独立表空间,每个表都对应了一个空间。

    [root@localhost tg]# ll
    总用量 64
    -rw-rw----. 1 mysql mysql   65 12月 30 20:09 db.opt
    -rw-rw----. 1 mysql mysql 8658 12月 30 23:17 gb.frm
    -rw-rw----. 1 mysql mysql 8658 12月 30 23:19 qr.frm
    -rw-rw----. 1 mysql mysql 8658 12月 30 23:19 qy.frm
    -rw-rw----. 1 mysql mysql 8658 12月 30 23:19 tg.frm
    -rw-rw----. 1 mysql mysql 8658 12月 30 23:19 xcy.frm

    tg是一个数据库名,里面的都是innodb的。像这种情况就是共享表空间。

    2,停掉mysql

    /etc/init.d/mysqld stop

    3,修改my.cnf的配置文件

    innodb-file-per-table=1

    4,备份使用innodb引擎的数据库

    Mysqldump -u tg -p tg >/home/6fan/tg.sql;

    5,删除使用innodb的数据库,以及日志文件

    cd /var/lib/mysql    //数据库文件位置
    
    rm -f ib*           //删除日志和空间
    
    rm -rf tg           //删除使用innodb引擎的数据库文件夹

    如果不删除使用innodb的数据库文件夹,启动不了innodb引擎,我查看了一下错误日志。如下

    111231 20:54:44 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
    InnoDB: Setting log file ./ib_logfile0 size to 512 MB
    InnoDB: Database physically writes the file full: wait...
    InnoDB: Progress in MB: 100 200 300 400 500
    111231 20:54:50 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
    InnoDB: Setting log file ./ib_logfile1 size to 512 MB
    InnoDB: Database physically writes the file full: wait...
    InnoDB: Progress in MB: 100 200 300 400 500
    InnoDB: Cannot initialize created log files because
    InnoDB: data files are corrupt, or new data files were
    InnoDB: created when the database was started previous
    InnoDB: time but the database was not shut down
    InnoDB: normally after that.
    111231 20:54:55 [ERROR] Plugin 'InnoDB' init function returned error.
    111231 20:54:55 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
    111231 20:54:55 [Note] Event Scheduler: Loaded 0 events

    6,启动mysql

    /etc/init.d/mysqld start

    7,导入数据库

    mysql -u root -p  < /home/6fan/tg.sql

    8,在查看一下,是转换好了

    //进入到mysql后的查寻
    mysql> show variables like '%per_table%';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | ON   |
    +-----------------------+-------+
    1 row in set (0.00 sec)
    
    //查看数据库目录下的文件
    [root@localhost tg]# ll
    总用量 544
    -rw-rw----. 1 mysql mysql    65 12月 31 22:48 db.opt
    -rw-rw----. 1 mysql mysql  8658 12月 31 22:49 gb.frm
    -rw-rw----. 1 mysql mysql 98304 12月 31 22:49 gb.ibd
    -rw-rw----. 1 mysql mysql  8658 12月 31 22:49 qr.frm
    -rw-rw----. 1 mysql mysql 98304 12月 31 22:49 qr.ibd
    -rw-rw----. 1 mysql mysql  8658 12月 31 22:49 qy.frm
    -rw-rw----. 1 mysql mysql 98304 12月 31 22:49 qy.ibd
    -rw-rw----. 1 mysql mysql  8658 12月 31 22:49 tg.frm
    -rw-rw----. 1 mysql mysql 98304 12月 31 22:49 tg.ibd
    -rw-rw----. 1 mysql mysql  8658 12月 31 22:49 xcy.frm
    -rw-rw----. 1 mysql mysql 98304 12月 31 22:49 xcy.ibd

    从这里可以看出,每一张表都对应有一个.ibd的文件,根共享表空间是不一样的。到这儿就完全配置好了。



    • 外贸虚拟主机

      1GB硬盘

      2个独立站点

      1000M带宽

      不限制流量

      美国外贸专用虚拟主机,cPanel面板,每天远程备份.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥180/年

    • 美国/荷兰外贸VPS

      2核CPU

      1G内存

      30硬盘

      10M带宽

      美国/荷兰外贸云服务器,专注外贸服务器行业12年.
      服务器配置:2*E5 32核,96GB 内存,4*2TB 硬盘 RAID10 阵列.

      ¥99/月

    • 全球外贸服务器

      8核CPU

      32G内存

      1TB硬盘

      1000M带宽

      已部署数据中心:美国洛杉矶/亚特兰大、荷兰、加拿大、英国伦敦、德国、拉脱维亚、瑞典、爱沙尼亚
      自有机柜(全球九大数据中心),稳定在线率:99.9%

      ¥999/月 原价1380

    7*24小时 在线提交工单

    如果您的问题没有得到解决,推荐您在线提交工单,我们的客服人员会第一时间为您解决问题

    展开