最近尝试了一下小型数据迁移。本地迁移,windows平台,修改配置文件中的data_dir项,然后将旧的data文件下的数据文件全部拷贝过去。
之后登陆数据库,竟然1145错误。可以看到数据库的结构,各个表的名称,但是想深入表看其中数据却看不了。
不知道为什么,搜了一下,有人说拷贝的时候原SQL服务没有停下,有的说InnoDB引擎创建的表不支持这种直接拷贝,而MyISAM则可以。
没办法,只能采取笨办法咯~先在原来数据库上进行备份,然后再导入。
mysqldump -u root -p databasename > new_database_name.sql
mysql -u root -p databasename < new_database_name.sql
然而,又没这么简单。。出现了两个问题。
第一个问题。设定好心得data_dir之后,就什么都不做,直接启动MySQL么?结果是,mysql起不来。看日志,说Table 'mysql.user' doesn't exist。回去看了看,把整个mysql文件夹拷贝过去了,里面有user表啊~
第二个问题,导入过程中,直接导不进去。总是说no database selected。原来尼玛还要先创建一个名称一样的新数据库,然后才能导入啊~
最后总算成功搞定。蛋疼。。好了,继续接下来的学习。。