You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 5
Next »
ID | IEP-43 |
Author | |
Sponsor | |
Created | |
Status | |
Motivation
The most of open-source distributed systems provide `cluster snapshots` functionality, but the Apache Ignite doesn't have such one. Cluster snapshots will allow users to copy their data from an active cluster and load it later on another, such as copying data from a production system into a smaller QA or development system.
Management
Create snapshot
[public] Java API
public interface IgniteSnapshot {
/**
* @return List of all known snapshots.
*/
public List<String> getSnapshots();
/**
* Create a consistent copy of all persistence cache groups from the whole cluster.
*
* @param name Snapshot name.
* @return Future which will be completed when a process ends.
*/
public IgniteFuture<Void> createSnapshot(String name);
}
[public] JMX MBean
package org.apache.ignite.mxbean;
/**
* Snapshot features MBean.
*/
@MXBeanDescription("MBean that provides access for snapshot features.")
public interface SnapshotMXBean {
/**
* Gets all created snapshots on the cluster.
*
* @return List of all known snapshots.
*/
@MXBeanDescription("List of all known snapshots.")
public List<String> getSnapshots();
/**
* Create the cluster-wide snapshot with given name.
*
* @param snpName Snapshot name to created.
* @see IgniteSnapshot#createSnapshot(String) (String)
*/
@MXBeanDescription("Create cluster-wide snapshot.")
public void createSnapshot(@MXBeanParameter(name = "snpName", description = "Snapshot name.") String snpName);
}
[public] Command Line
# Starts cluster snapshot operation.
control.sh --snapshot ERIB_23012020
# Display all known cluster snapshots.
control.sh --snapshot -list
[internal] File Transmission
Internal API which allows to request and receive the required snapshot of cache groups from a remote. Used as a part of IEP-28: Rebalance peer-2-peer.
/**
* @param parts Collection of pairs group and appropriate cache partition to be snapshot.
* @param rmtNodeId The remote node to connect to.
* @param partConsumer Received partition handler.
* @return Future which will be completed when requested snapshot fully received.
*/
public IgniteInternalFuture<Void> createRemoteSnapshot(
UUID rmtNodeId,
Map<Integer, Set<Integer>> parts,
BiConsumer<File, GroupPartitionId> partConsumer);
Snapshot creation
Snapshot recovery
Risks and Assumptions
// Describe project risks, such as API or binary compatibility issues, major protocol changes, etc.
Discussion Links
http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSSION-Hot-cache-backup-td41034.html
Reference Links
// Links to various reference documents, if applicable.
Tickets
// Links or report with relevant JIRA tickets.