序号更新时间备注12024.03.26初始化笔记22024.03.27细化ES 集群和单节点的描述32024.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 下mccp--recursive myminio/source-bucket backup/
# 备份全部桶 到backup 下mccp--recursive myminio/ backup/
# ======== 恢复操作 =======# 恢复特定桶mccp--recursive backup/ myminio/destination-bucket
# 恢复全部桶mccp--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:[email protected]/test?authSource=test"--out=/tmp/test
# 汇入数据 - 记得/
mongorestore --uri="mongodb://mongodb://test:[email protected]/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"#特定快照存储库 ———— testcurl-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 服务端sudoapt-getinstall nfs-kernel-server
# nfs 客户端sudoapt-getinstall nfs-common
# 启动内容sudo systemctl start nfs-kernel-server
# 自启动配置sudo systemctl enable nfs-kernel-server
(2)挂载配置
# 编辑NFS内容sudovim /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 -e192.168.0.1
# 挂载操作
//将 NFS 服务器 192.168.0.1 上的共享目录 /opt/test 挂载到本地 /opt/test
sudomount-t nfs 192.168.0.1:/opt/test /opt/test
# 查看已经挂载的内容mount|grep nfs
a、检查存储库
如果不存在存储库,建议新建存储库用于恢复
用共享盘来存储文件,来达成同一个存储库,并从存储库内容恢复的操作
b1、利用快照恢复(空数据的ES)
共享盘联通的情况下,建立同一个存储库,会自动加载存储库里面的快照
snapshot_20240325
,这时候我们可选择指定
index1
和
index1
恢复,也可以什么都不加,全部恢复
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 迁移
暂时遇到滑动窗口的问题
版权归原作者 CoffeeAndIce 所有, 如有侵权,请联系我们删除。