csatblogspotdotcom

Tuesday, February 14, 2017

MySQL的迁移

前天从原Ubuntu把某数据库迁移到新装Ubuntu虚拟机,开始以为每个数据库是一个独立文件夹,例如自带的 /var/lib/mysql/mysql/、/var/lib/mysql/performance_schema/,自己创建的数据库**,于是只迁移了**,其余没理,后来发现原来mysql中创建的用户没了,于是新建了用户: create user 'username'@'localhost' identified by 'password'; grant all privileges on name_of_db.* to 'username'@'localhost'; 接下来发现进去数据库**后能看到表,但是列不出表的内容,查了下,原来数据库内容不在**文件夹,仔细一看,**文件夹很小,几十万条数据不可能存在里面,一查原来mysql数据库默认都是放在 ibdata1 这个文件里面的,新ibdata1大小只有18M,原有ibdata1有90M。如果需要每个数据库单独存储,则需要设置,今天重新查了下,使用 show global variables; 里面显示的选项 innodb_file_per_table 默认 OFF,开启此项后默认存放在每个数据库的文件夹里,每个表单独一个文件。 于是将原有的 ibdata1 移动到新机,终于可以看到数据了,但是发现数据不全,前天睡前想了想,要仔细看下数据,看创建时间,以及对应的ID是否和log一致,昨天早上一看是OK的,之前吓了一跳,以为几个月来爬到的东西全没了。 总结下经验,移动数据库要么导出数据导入另一机器的数据库,或者使用mysql自带数据库迁移、复制之类的功能,要么将相关文件夹和文件全部移动或复制,包括 /var/lib/mysql/mysql/、/var/lib/mysql/performance_schema/、**自己的数据库、ibdata1、ib_logfile0、ib_logfile1,这些相关的文件都需要保留。

Labels: , ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home