AmberApp is a K8s native framework for application consistency that can work together with Velero and other backup solutions. It will lock databases when backup PVCs.
Installation
Clone the repo
git clone git@github.com:jibudata/amberapp.git
Enter the repo and run
kubectl apply -f deploy
Supported databases
#
Type
Databases required
lock method
description
1.
PostgreSQL
y
pg_start_backup
no impact on CRUD
2.
MongoDB
n
fsync lock
lock all DBs in current user, db modify operatrion will hang until unquiesced
3.
MySQL
y
FLUSH TABLES WITH READ LOCK
lock all DBs, cannot create new table, insert or modify data until unquiesced
MySQL > 8.0
y
LOCK INSTANCE FOR BACKUP
lock current DB, Cannot create, rename or, remove records. Cannot repair, truncate and optimize tables. Can perform DDL operations hat only affect user-created temporary tables. Can create, rename, remove temporary tables. Can create binary log files.
4.
Redis >= 2.4
n
-
standalone and cluster mode support for now, no impact on CRUD, use bgsave for rbd snapshot or disable auto aof rewrite before backup to guarantee consistent aof log
Usage
CLI example
Clone repo, do install as above, run make to build binaries
Create an hook to MySQL database. NOTE: use WATCH_NAMESPACE to specify the namespace where amberapp operator is installed.
# export WATCH_NAMESPACE=amberapp-system
# bin/apphook create -n test -a mysql -e "wordpress-mysql.wordpress" -u root -p passw0rd --databases mysql
# kubectl get apphooks.ys.jibudata.com -n amberapp-system test-hook
NAME AGE CREATED AT PHASE
test-hook 8s 2021-10-20T12:26:28Z Ready
Quiesce DB:
# bin/apphook quiesce -n test -w
# kubectl get apphooks.ys.jibudata.com -n amberapp-system test-hook
test-hook 18m 2021-10-20T12:26:28Z Quiesced
Unquiesce DB:
# bin/apphook unquiesce -n test
# kubectl get apphooks.ys.jibudata.com -n amberapp-system test-hook
test-hook 18m 2021-10-20T12:26:28Z Unquiesced
Delete hook:
# bin/apphook delete -n test
Use CR
Other backup solution can use CR for API level integration with AmberApp, below are CR details.