当前位置: 首页 > article >正文

【随笔笔记】将mysql数据迁移到群晖NAS

将mysql数据迁移到群晖NAS

  • 情况和问题
  • 前提条件
  • 方法1,使用管道方式传递数据
  • 方法2,导出数据为文件,复制到NAS上再导入

情况和问题

原本大量的金融数据保存在电脑本地硬盘的mysql数据库中,随着数据量越来越大,电脑的硬盘吃紧,正好把我的群晖NAS升级到了DS923+并且增加了4T的存储空间,可以使用Docker安装mysql并且存储空间不再是个问题,因此打算将电脑中的数据全部迁移到群晖NAS中。

这里记录的方法可以用来将电脑本地mysql数据库中的数据转移到群晖NAS中。

前提条件

  • 本地电脑上运行一个mysql server,并存有大量数据
  • 群晖NAS中已经安装好mysql
  • 在mysql中创建好一个空数据库,并且已经可以通过局域网或外网远程访问
  • 群晖NAS中启用了SSH服务(如果使用第二种方法,需要这个条件)

在群晖NAS中安装mysql需要用到Docker(现在已经更名为Container Manager,但实质是一回事),关于在群晖NAS中安装mysql,请参考另一片文件,这里不赘述。

方法1,使用管道方式传递数据

使用mysqldump命令在本地terminal中可以直接传递数据到远程数据库:

mysqldump -u user -pPassword db_name table_name [table_name] | mysql -u user -pPassword -h host db_name
# 如果在命令行中直接输入密码,密码与'-p'之间不要留空格

示例如下,如果要将本地数据传至192.168.0.5的远程服务器上:

mysqldump -u jackie -p test_db index_daily | mysql -u jackie -p -h 192.168.0.5 test_db

这种方法胜在简单容易,但是如果传输数据量大,这种方法速度相当慢,而且随着数据量增大,速度是越来越慢的,导致耗时呈指数级上升,如果一张数据表的数据量达到千万行级别,数据表占用空间达到1GB以上,迁移耗时会达到数小时甚至几十小时。

方法2,导出数据为文件,复制到NAS上再导入

使用下面命令导出数据表为本地文件:

mysqldump -u user -p db_name table_name > file_name.sql
例如
mysqldump -u jackie -p test_db index_daily > index_daily.sql

导出文件后将文件复制到NAS,然后使用以下命令通过ssh登录NAS的命令行:

ssh user@host_ip -p port
其中port是在群晖NAS上开启的SSH服务端口,host_ip是群晖NAS的局域网IP,例如:
ssh jackie@192.168.0.5 -p 22

进入群晖NAS的命令行模式后,就能看到复制过来的sql文件了。但这个文件现在在NAS本地路径下,而mysql是在docker容器中运行的,我们还必须把NAS本地路径下的sql文件复制到docker容器路径中,才能使用它。使用下面的命令将文件复制过去(注意必须使用sudo权限):

sudo docker cp file_path_name container_id:target_path_name
例如,将文件index_daily从群晖NAS本地路径复制到id为mysql的容器中:
sudo docker cp /index_daily.sql mysql:/

接下来,就可以进入容器,查看文件是否存在,使用下面命令进入容器:

sudo docker exec -it container_id bash
例如:
sudo docker exec -it mysql bash

在容器中确认文件存在后,使用下面命令导入数据:

mysql -u user -p db_name < file_name.sql
例如,将刚才导出的文件导入数据库:
mysql -u jackie -p test_db < index_daily.sql

通过上面命令,将数据导入数据库。
这种方法比前一种稍微复杂一些,能够节省一点点时间,但是如果传输数据量大,速度还是相当慢,实际上,最终耗时跟前一种方法没有太大的区别。


http://www.kler.cn/a/427469.html

相关文章:

  • 阿拉丁论文助手:一键点亮学术之路
  • 仿真键盘输入遇到Edge环境不识别 回车符如何处理
  • PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)
  • 零基础学鸿蒙开发--第九篇--网络请求
  • lvgl9 消息框控件Message(lv_message)使用指南
  • macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表
  • 学习23种设计模式
  • 刷算法心得
  • 人工智能在云计算中的运维优化:智能化的新时代
  • 本文介绍麒麟信安服务器系统(kylinsec)的安装。
  • R语言使用“纽约市数据集中的优步皮卡”数据创建不同年度时间范围的可视化
  • https/http访问接口工具类,附带ssl忽略证书验证,以及head头部的添加-java版
  • [241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板
  • Python编程语言学习书籍和课程建议
  • Java Serializable 序列化
  • 【Copilot 】TAB keybinding not working on JetBrains Client
  • 梯度下降法求解局部最小值深入讨论以及 Python 实现
  • Android H5调起微信支付宝支付
  • ip所属地址是什么意思?怎么改ip地址归属地
  • CmakeLists学习刨根问底