Change/modify replication-factor on the fly? (AER-3242)


#1

I want to change the replication factor on a running cluster without downtime. Can I do a rolling restart with the following change and expect everything to adjust?

# Original config
namespace ns1 {
    replication-factor 3
    memory-size 16G
    default-ttl 86400
    single-bin false
    storage-engine memory
}
# New config
namespace ns1 {
    replication-factor 2   # Changed from 3
    memory-size 16G
    default-ttl 86400
    single-bin false
    storage-engine memory
}

Does the answer apply to other namespace settings?


#2

You cannot change the replication factor on a running cluster without a down time.

Making changes to replication factor as suggested by you is theoretically correct, but the state of various partitions could be undetermined in a proper manner and may cause read and write failures. Hence it is not a suggested or supported method presently.

Most of the settings in aerospike can be changed dynamically. However, for static configurations, you will have to restart the node. While most of such changes can be done with rolling restart, some changes require entire cluster restart for a reliable performance/availability.

You can find the list of static and dynamic parameters here: http://www.aerospike.com/docs/reference/configuration/