数据迁移通用笔记(Minio、Mysql、Mongo、ElasticSearch)

这篇具有很好参考价值的文章主要介绍了数据迁移通用笔记(Minio、Mysql、Mongo、ElasticSearch)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

序号 更新时间 备注
1 2024.03.26 初始化笔记
2 2024.03.27 细化ES 集群和单节点的描述
3 2024.04.01 针对集群迁移失败的问题增加描述

一、Mino 数据迁移

这里主要存在两种模式

1、直接通过minio之间mirro镜像迁移

​ 整体上通过配置别名进行区分迁移

2、通过备份迁移数据

​ 通过备份文件和恢复文件来迁移

1、mc的基础操作

myminio 是您给 Minio 实例设置的别名

https://play.min.io 是 Minio 实例的端点地址,如果有端口也填入

ACCESS_KEY 是您的访问密钥,SECRET_KEY 则是您的密钥

source-bucket 是存储桶名称

a、设置别名

mc alias remove myminio

b、删除别名

mc alias remove myminio

c、查询已配置的别名

mc alias list (如需要,可以–json 格式化)

d、查询存储桶列表

mc ls myminio

e、查看存储桶中的对象列表

mc ls myminio/source-bucket

f、删除桶内容

mc rb --force myminio/source-bucket (删除指定存储桶)

mc rb --force myminio (删除所有存储桶)

g、创建桶

mc mb myminio/mybucket

h、镜像复制

--force 参数将强制备份过程,即使目标目录已存在也会覆盖它。

--remove 参数将删除目标目录中不存在的对象和存储桶。

--watch 参数将监视源目录的更改,并在检测到更改时自动更新目标目录。

mc mirror --force --remove --watch <ALIAS_NAME> <BACKUP_DIRECTORY>

2、镜像复制

① 这里首先要保证A、B服务器节点网络互通,最起码保证api端口联通,如无变更,默认是9000

② 我们可以任意在A、B中选取一个配置别名,如果有就可以直接利用,这里A为minioA ,B为minioB,主要是利用到mirror

③ 这里假设A是输出源、B是输入源,则其实我们可以任意在A和B节点下执行如下命令,如果缺乏别名需要补充。

 ./mc mirror minioA minioB

3、备份复制

这里主要看你需要复制特定桶还是全部了,根据情况参考 基础操作 中的参数是否覆盖和删除

# ======== 备份操作 =======
# 备份特定桶 到backup 下
mc cp --recursive myminio/source-bucket backup/

# 备份全部桶 到backup 下
mc cp --recursive myminio/ backup/

# ======== 恢复操作 =======
# 恢复特定桶
mc cp --recursive backup/ myminio/destination-bucket

# 恢复全部桶
mc cp --recursive backup/ myminio/destination-bucket

二、MySql数据迁移

这里主要是讨论8.0

① 假设为A、B两点

A:192.168.0.1

B:192.168.0.2

② 假设账户密码

username: test

password: test666?

③ 假设存储库

test

1、利用主从复制

直接利用主从复制,将内容复制过去,然后关闭主从状态。

2、数据汇出汇入

# 汇出A的test数据源内容
mysqldump -h 192.168.0.1 -u test -p --databases test > test_bak.sql
# 汇入到B 数据源内容
mysql -h 192.168.0.2 -u test -p < /tmp/test_bak.sql

三、Mongo数据迁移

① 假设为A、B两点

A:192.168.0.1

B:192.168.0.2

② 假设账户密码

username: test

password: test666?

③ 假设存储库

test

1、利用主从复制

2、数据汇出汇入

/tmp/test 为存放目录

# 汇出数据
mongodump --uri="mongodb://test:test666?@192.168.0.1/test?authSource=test" --out=/tmp/test


# 汇入数据 -  记得/
mongorestore --uri="mongodb://mongodb://test:test666?@192.168.0.2/test?replicaSet=mgset-75334555/test?authSource=test" /tmp/test/

四、ElasticSearch数据迁移

① 假设为A、B两点

A:192.168.0.1

B:192.168.0.2

② 假设账户密码

username: test

password: test666?

③ 假设存储库

esSnap

④快照名称

snapshot_20240325

1、基于快照

这种方式建议版本一致,否则可能出现不知名问题。

【适应离线方案】

1.1、旧数据快照备份

ES的快照是需要一个存储库来存放的,所以我们需要先创建存储库快照才能创建快照存放其中。

a、查看存储库快照
# 全部快照存储库
curl -XGET "http://192.168.0.1:9200/_snapshot/_all"

#特定快照存储库 ———— test
curl -XGET "http://192.168.0.1:9200/_snapshot/test"

#查看存储库快照列表
curl -XGET "http://192.168.0.1:9200/_snapshot/test/_all?pretty"

#删除存储库快照 - 全部
curl -XDELETE "http://192.168.0.1:9200/_snapshot/test/_all"

#删除存储库 
curl -XDELETE "http://192.168.0.1:9200/_snapshot/test"
b、创建存储库快照
  • type 字段指定了存储库类型为 “fs”,表示使用本地文件系统作为快照的存储位置。

  • settings
    

    字段包含了存储库的设置信息,其中:

    • location 指定了快照文件存储的路径,这里是 “/tmp/esSnap”。(通过打开elasticsearch.yml的 path.repo属性查看)
    • max_snapshot_bytes_per_sec 指定了快照过程中允许的最大写入速率,这里设置为 “50mb”,表示每秒最大写入速率为 50MB。
    • max_restore_bytes_per_sec 指定了恢复过程中允许的最大读取速率,这里也设置为 “50mb”,表示每秒最大读取速率为 50MB。
    • compress 指定了是否压缩快照文件,这里设置为 “true”,表示压缩快照文件。
curl -XPOST -H "Content-Type: application/json" "http://192.168.0.1:9200/_snapshot/test" -d '{"type":"fs", "settings": {"location": "/opt/test", "max_snapshot_bytes_per_sec":"50mb",   "max_restore_bytes_per_sec":"50mb", "compress": "true"}}' 
c、创建(数据)快照

wait_for_completion=true :指定等待快照过程完成后返回响应

  • ignore_unavailable 字段指定了是否忽略不可用的索引,这里设置为 “true”,表示如果有不可用的索引也继续创建快照。
  • include_global_state 字段指定了是否包含全局状态信息,这里设置为 “false”,表示不包含全局状态信息。
 curl -XPOST -H "Content-Type: application/json" "http:// 192.168.4.162:9200/_snapshot/test/snapshot_20240325?wait_for_completion=true" -d '{"ignore_unavailable":"true",   "include_global_state":"false"}'
d、分片配置(集群)
# 关闭分片配置
curl -XPUT "http://192.168.0.1:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}'

# 重启分片配置
curl -XPUT "http://192.168.0.1:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{
  "persistent": {
    "cluster.routing.allocation.enable": "all"
  }
}'
1.2、利用快照恢复 (集群)

这里需要提醒一下,存储的快照目录需要预先配置.

如果是集群节点,需要每个配置,需要配置 共享挂载盘

通常:elasticsearch.yml内设置 path.repo ,可以赋值例如 [“/opt/test”]

集群挂载共享盘

(1)安装配置

# 通用linux
yum install nfs-utils rpcbind -y
#设置开机自启动
systemctl enable rpcbind.servicesystemctl enable nfs-server.service
#启动服务
systemctl start rpcbind.servicesystemctl start nfs-server.service

# Ubuntu
# nfs 服务端
sudo apt-get install nfs-kernel-server
# nfs 客户端
sudo apt-get install nfs-common   
# 启动内容
sudo systemctl start nfs-kernel-server
# 自启动配置
sudo systemctl enable nfs-kernel-server

(2)挂载配置

# 编辑NFS内容
sudo vim /etc/exports

# 挂载
# /opt/test 挂载目录
# 1、读写(rw)模式共享给所有客户端
# 2、同步(sync)更新
# 3、no_root_squash 表示客户端以 root 用户身份连接时不会转换为匿名用户
/opt/test *(rw,sync,no_root_squash,no_subtree_check)


#使其生效
exportfs -a

(3)查看可挂载目录、挂载

# 查看可挂载目录
showmount -e 192.168.0.1
# 挂载操作
//将 NFS 服务器 192.168.0.1 上的共享目录 /opt/test 挂载到本地 /opt/test
sudo mount -t nfs 192.168.0.1:/opt/test /opt/test
# 查看已经挂载的内容
mount | grep nfs
a、检查存储库

如果不存在存储库,建议新建存储库用于恢复

用共享盘来存储文件,来达成同一个存储库,并从存储库内容恢复的操作

b1、利用快照恢复(空数据的ES)

共享盘联通的情况下,建立同一个存储库,会自动加载存储库里面的快照 snapshot_20240325 ,这时候我们可选择指定 index1index1 恢复,也可以什么都不加,全部恢复
Tips (迁移失败的问题):
这里要指定索引,避免一些本地状态的索引导致无法迁移 && include_global_state 必定加 fasle

curl -XPOST -H "Content-Type: application/json" "http://192.168.0.1:9200/_snapshot/test/snapshot_20240325/_restore?wait_for_completion=true" -d '{"indices": "index1,index2"}'
b2、利用快照恢复(已经存在数据)
#1、停止全部节点

#2、删除data数据
 通常是 `/opt/xiaoi_app/elasticsearch/data`

#3、重启节点

#4、检测集群状态
curl -XGET 'http://localhost:9200/_cat/health?v'

#5、这时候需要继续走下1.2-a 重建设存储库
curl -XPOST -H "Content-Type: application/json" "http://192.168.0.1:9200/_snapshot/test" -d '{"type":"fs", "settings": {"location": "/opt/test", "max_snapshot_bytes_per_sec":"50mb",   "max_restore_bytes_per_sec":"50mb", "compress": "true"}}' 

#6、这时候
# 共享盘联通的情况下,建立同一个存储库,会自动加载存储库里面的快照 snapshot_20240325,直接恢复即可
curl -XPOST -H "Content-Type: application/json" "http://192.168.0.1:9200/_snapshot/test/snapshot_20240325/_restore?wait_for_completion=true" 

#7、检查索引是否完好
curl -XGET 'http://localhost:9200/_cat/indices?v'
1.3、覆盖式恢复(单节点)

data/node/ 分片的内容保存,复制源数据内容,重启ES 应用

2、利用 logstash 插件同步数据

【适应网络联通方案】

3、elasticdump 迁移

暂时遇到滑动窗口的问题文章来源地址https://www.toymoban.com/news/detail-860599.html

到了这里,关于数据迁移通用笔记(Minio、Mysql、Mongo、ElasticSearch)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux MinIO 安装与配置 版本升级 数据迁移 修改密码

    Minio是一个轻量级、高性能的对象存储服务,支持多云环境,并且可以在大部分操作系统上运行,包括Linux、Windows、MacOS等。下面我们来看一下如何在Linux上搭建一个Minio。 安装Minio 1、需要下载Minio的二进制包。可以从官网下载,也可以使用命令行下载( 会比较久耐心等待)

    2024年04月14日
    浏览(45)
  • 记录一次跨越16个月的minio版本升级与数据迁移

    转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 前段时间,minio官方爆出一个安全漏洞: 在minio集群部署中,minio会返回所有的环境变量,包括MINIO_SECRET_KEY和 MINIO_ROOT_PASSWORD,导致信息泄露,分布式部署的所有用户

    2024年02月13日
    浏览(81)
  • Docker Compose V2 安装常用数据库MySQL+Mongo

    书接上篇:Docker V24 及 Docker Compose V2 的安装及使用 本篇操作都在 centos8 虚拟机 devops01 中进行,并都归属网络:devopsnetwork 主要增加对容器中 数据文件,日志,配置,网络,时区,端口映射,密码 的配置,更贴合生产实际使用 目录 /app/mysql 中创建 compose.yml 并运行 指定 mysql

    2024年02月08日
    浏览(40)
  • 【Elasticsearch学习笔记二】es的Mapping字段映射、Mapping字段常用类型、Mapping映射的创建、查看和更新、es数据迁移、ik分词器

    目录 1、Mapping字段映射概述 2、Mapping字段常用类型 3、映射中对时间类型详解 1)采取自动映射器来映射 2)手工映射提前指定日期类型 4、ES的keyword的属性ignore_above 5、Mapping映射的查看和创建 1)查看mapping信息:GET 索引名/_mapping 2)创建映射:PUT /索引名 3) 查看所有索引映

    2024年01月20日
    浏览(61)
  • VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

    这个是B站Up主:程序员程子青的视频  C++封装Mysql增删改查操作_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1m24y1a79o/?p=6spm_id_from=pageDrivervd_source=a934d7fc6f47698a29dac90a922ba5a3 安装mysql :mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径-CSDN博客 创建数据库和表: 参考这篇文章:w

    2024年01月19日
    浏览(50)
  • 本地部署Canal笔记-实现MySQL与ElasticSearch7数据同步

    本地搭建canal实现mysql数据到es的简单的数据同步,仅供学习参考 建议首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 本地搭建MySQL数据库 本地搭建ElasticSearch 本地搭建canal-server 本地搭建canal-adapter 本地环境为window11,大部分组件采用docker进行部署,MySQL采用8.0.27, 推荐

    2024年02月02日
    浏览(58)
  • Elasticsearch数据迁移(使用快照)

    前言 :由于做项目的时候没有进行长期考虑,把es,mysql,api等都部署在同一台服务器上,随着业务的增加,需要将部分服务和存储迁移到其他服务器。es上目前已有100万以上的数据,上网查资料,snapshot适合数据量大的迁移,所以没来得及考虑就果断选择尝试一下。 一.生成

    2024年04月10日
    浏览(45)
  • Elasticsearch 数据迁移方案

    倘若准备将自建的 elasticsearch 迁移K8s,或者的迁移到其他elasticsearch集群,可以根据自己的业务需要选择适当的迁移方案, 针对业务可以停服或可以暂停写操作场景 ,可以使用以下几种方案完成数据迁移: COS 快照,全程Cloud Object Storage logstash elasticsearch-dump 各种迁移方案对比

    2024年02月16日
    浏览(37)
  • 【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全栈开发软件一网打尽

    前言 全栈开发是一项复杂而令人兴奋的任务,涵盖了从前端到后端、数据库到可视化层、消息队列到文件存储的广泛领域。本文将带您深入探讨在Windows环境下进行全栈开发的过程,涵盖了Java全栈开发所需的关键技术和工具。无论您是初学者还是经验丰富的开发人员,本文都

    2024年02月05日
    浏览(58)
  • ElasticSearch 数据迁移工具elasticdump

    Elasticdump 是一个用于导入和导出 Elasticsearch 数据的命令行工具。它提供了一种方便的方式来在不同的 Elasticsearch 实例之间传输数据,或者进行数据备份和恢复。 使用 Elasticdump,你可以将 Elasticsearch 索引中的数据导出为 JSON 文件,或者将 JSON 文件中的数据导入到 Elasticsearch 索引

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包