mysql大量数据迁移
2016-04-06 17:09
190 查看
最近有个需求,要把机器a上的一个数据库迁移到机器b上,这个数据库的数据有100多个G。所以,果断抛弃用mysqldump的方法来迁移。这时候想到的就是直接复制文件来做迁移。
于是我按照网上的说法,步骤如下:
一、把机器b的mysql停掉。
二、把机器a上要迁移的库的整个目录复制到机器b的mysql data目录下。
三、修改目录权限为700,修改文件权限为660,并修改他们的所属用户和所属组为mysql。
四、再启动机器b的mysql。
操作完成后,我进入机器b的mysql,此时,执行show databases可以看到要迁移的数据库。然后执行use databasename,再执行show tables,也可以看到所有的表。但是问题来了,我执行select * from table limit 10,这时候却报错了,提示表不存在。
所以,我们大致可以指定mysql的工作机制,show databases和show tables时,mysql其实是去目录下扫描,但执行select这些操作的时候,mysql优化器会去information_schema.TABLES 这个表里面获取信息。由于我们是直接复制文件过去,所以,这个表里面是没有信息的,所以就会提示表不存在。
知道了这点之后,我修改了上述步骤:
一、在机器b上,创建需要的database
二、在该database建好所有的表。
三、把机器b的mysql停掉。
四、到机器b上,刚才建的那个数据库的目录下,把所有的(.ibd)文件删除掉。
五、把机器a上,对应数据库目录下所有的(.ibd)文件复制到机器b上,修改文件的权限。
六、启动机器b的mysql。
这时候再连接上b的mysql,就可以看到所有的数据了。
于是我按照网上的说法,步骤如下:
一、把机器b的mysql停掉。
二、把机器a上要迁移的库的整个目录复制到机器b的mysql data目录下。
三、修改目录权限为700,修改文件权限为660,并修改他们的所属用户和所属组为mysql。
四、再启动机器b的mysql。
操作完成后,我进入机器b的mysql,此时,执行show databases可以看到要迁移的数据库。然后执行use databasename,再执行show tables,也可以看到所有的表。但是问题来了,我执行select * from table limit 10,这时候却报错了,提示表不存在。
所以,我们大致可以指定mysql的工作机制,show databases和show tables时,mysql其实是去目录下扫描,但执行select这些操作的时候,mysql优化器会去information_schema.TABLES 这个表里面获取信息。由于我们是直接复制文件过去,所以,这个表里面是没有信息的,所以就会提示表不存在。
知道了这点之后,我修改了上述步骤:
一、在机器b上,创建需要的database
二、在该database建好所有的表。
三、把机器b的mysql停掉。
四、到机器b上,刚才建的那个数据库的目录下,把所有的(.ibd)文件删除掉。
五、把机器a上,对应数据库目录下所有的(.ibd)文件复制到机器b上,修改文件的权限。
六、启动机器b的mysql。
这时候再连接上b的mysql,就可以看到所有的数据了。
相关文章推荐
- mysql 数据库引擎
- mysqli连接提示 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory
- MySql相关及如何删除MySql服务
- MySQL安装之“测试”
- MySQL主从同步的机制
- MAC下安装与配置MySQL
- mysql设置中文utf-8
- mysql-5.6.15_winX64在win764位系统下的安装操作步骤总结
- Mysql主从配置
- MySQL安装教程
- MySQL 提高Insert性能
- mysql 分页存储过程
- MYSQL基本使用
- Ubuntu下XAMPP连接MySql数据库一些问题的处理方法
- Mysql 操作集锦
- mysql远程登录权限命令
- mysql 5.6.17 x64 安装
- R连接mysql以及一些操作
- MySQL单表最大限制
- MySQL 学习笔记--源自技术