mysql数据库迁移

时间:2022-07-12 14:20:38

分享一个处理mysql数据量大的话迁移的方法

一天晚上,生产环境下,一个用户分析数据库挂掉了,原因是服务器磁盘只读了,但是又不敢重启只好迁移了。

找到datadir目录下du -sh * 看了一下吓死了。240G大!

一般我们都会做一个主从数据库,就是为了备份数据方便宕机的时候快速切换过来,可是这台机器很早就有,现在没有从库备份,这就麻烦了。

现在脑子里两种方案:

  1. 数据库直接导出,拷贝文件到新服务器,在新服务器上导入。
  2. 数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。

第一种方案时间太长240G啊什么概念,那要导到什么时候,虽然说第二种方案也是非常耗时的,但是想不第一种还较为快点。犹豫了一会采用第二种方案。

操作步骤

服务器只读了,并不代表不可以传文件。所以找了一台磁盘容量大点的可以存放的下这240G大量数据的服务器。

  1. 两台服务器保证Mysql版本一致,安装配置一致
  2. 停止两边的Mysql服务
  3. 删除B服务器Mysql的datadir(my.cnf里面设置的datadir参数)目录下所有文件
  4. 用rsync服务开始传datadir下面的文件(A服务器--迁移-->B服务器)
  5. 启动B服务器的Mysql服务,测试

迁过去后有个报错:

mysql数据库迁移

这时候才想起来用rsync传的时候目录使用的nobody权限,启动是要MySQL用户权限的。查了查资料也是说要修改目录权限。修改完之后,启动没有问题了。

 如果遇到启动不起来然后报错是与ibdata1有关的,建议把my.cnf里面的innodb_buffer_pool_size         = 2G参数改下,这个是要根据服务器内存考虑的。或者把他删了重建也行。