All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- rclone extra arguments are now properly passed to the backup job.
- Added a
ServiceMonitor
to the operator chart that scrapes all MySQL instances. - Added a test suite for RunCloneCommand logic, along with a mock backup server.
- Added checks for service availability when cloning.
- Added "fail fast" logic when unexpected errors occur during cloning/download.
- Added
dataDir
cleanup code so that interrupted cloning does not leave dataDir in an inconsistent state. - Added e2e test demonstrating cloning failure when PVC is removed and pod recreated.
- Add
MetricsExporterExtraArgs
field on MySQLCluster resource that allows to specify command line arguments to pass to MySQL metrics exporter. - Allow using custom secret for app credentials in
mysql-cluster
chart. - Add
XbstreamExtraArgs
field on MySQLCluster resource that allows to specify extra command line arguments to xbstream. - Add
XtrabackupExtraArgs
,XtrabackupPrepareExtraArgs
,XtrabackupTargetDir
to parametrize xtrabackup. - Add
RcloneExtraArgs
to parametrize rclone command. - Add
InitFileExtraSQL
to insert custom init SQL queries that will be run at MySQL initialization. - Add
Volumes
andVolumesMounts
in.Spec.PodSpec
to allow the user specifying custom volume mounts. - Add
InitContainers
andContainers
in.Spec.PodSpec
to allow the user specifying custom containers. - Add
MetricsExporterResources
andMySQLOperatorSidecarResrouces
in.Spec.PodSpec
to allow the user specifying resources for thos sidecars containers. - Add command line flag to configure number of workers for orchestrator controller.
- #422 adds the
SidecarServerPort
to theMasterService
and introduces one new service, HealthyReplicasService, so that we can try to clone from replicas first, then fall back to master. - Changed the connect timeout from the default of 30s to 5s so that an empty k8s service will not cause cloning attempts to hang unnecessarily for 30s.
- Update documentation structure and formatting.
- Udate Orchestrator version to v3.1.4
- Update orchestrator base image to
alpine:3.11
. - Update FailoverInProgress condition to false when both Replicas and ReadyNodes are 0.
- Fall back to current master, not pod 0, when no healthy replicas found for backup candidate.
- Change the
mysql-operator
chart to be helm v3 compatible while keeping backward compatibility. - Change logging: change
cluster
logging field tokey
; normalize logging and more details; output Stackdrive compatible format. - Decrease
MASTER_CONNECT_RETRY
interval from 10 to 1 second. - Deprecate
TmpfsSize
because can be handled usingExtraVolumes
andExtraMySQLVolumesMounts
. - Update cron documentation
- Set InnoDB buffer parameter:
innodb_buffer_pool_instances
tomin(resources.limit.cpu, floor(innodb_buffer_pool_size/1G))
(see #502) - Change default resource requests/limits for
sidecar
container: requested=10m/32Mi, limit=the same as.spec.podSpec.resources.limit
- Change default resource requests/limits for
exporter
container: requested=10m/32Mi, limit=100m/128Mi - Change default resource requests/limits for
heartbeat
container: requested=10m/32Mi, limit=100m/64Mi - If
extra_port
is defined in the cluster spec, metrics exporter will use it to connect to MySQL providing thatextra_max_connections
is larger than the default1
. If MySQL server runs out of available connections, usingextra_port
allows the exporter to continue collecting MySQL metrics. - Change the default number of workers for orchestrator controller from 1 to 10.
- Update and fix e2e tests
- Fix double date string in backup path
- Fix double date string in bakup path
- Copy the nodeSelector as-is in the statefulset (fixes #454)
- Fix flakines in ReadOnly cluster condition (fixes #434)
- Fix rounding in computing
innodb-buffer-pool-size
(fixes #501)
0.3.8 - 2020-01-22
- Fixed
TmpfsSize
type in CRD
0.3.7 - 2020-01-22
- Add support for mounting a tmpfs into /tmp. Add
TmpfsSize
field on the cluster
0.3.6 - 2020-01-08
- Update
mysql-cluster
chart to support settingbackupScheduleJobsHistoryLimit
- Increase size of
value
column insys.operator
table (see #447) (fixes #446) - Determine master logic: prevent to follow infinit loops
- Use custom server offset (
MyServerIDOffset
) when deciding to clone from bucket
0.3.5 - 2019-11-28
- Update Orchestrator version to v3.1.2
- Update Go lang to 1.13.4
- Don't require
backupSecretName
if not set. Fixes delete on remove when using workload identity
0.3.4 - 2019-11-04
- Update
mysql-cluster
chart to support custom server id offset
- During failover don't interfere with readdable/wriatable master (fixes #411)
- Imorove logging
0.3.3 - 2019-10-03
- Allow server id offset to be set via
MySQLCluster
resource by addingMyServerIDOffset
field
- Make app credentials optional for mysql-cluster chart
- Don't create user with empty password (fixes #385)
- Fix wrong enviroment for
mysql
container - Fix pt-kill client configure file prefix
0.3.2 - 2019-07-26
- Update docs structure on presslabs.com/docs/mysql-operator/
- Set limit on mysql
mysql-init-only
container the same as on themysql
container (fixes #371) - Don't limit memory on sidecars containers
0.3.1 - 2019-07-17
- Upgrade path from version
v0.2.x
(#369) - Changes the default leader election id from
controller-leader-election-helper
tomysql-operator-leader-election
(#368)
0.3.0 - 2019-07-08
- add a new cluster condition
FailoverInProgress
that marks the cluster during a failover - set orchestrator related events on the cluster:
OrcFailureDetection
,OrcPostUnsuccessfulFailover
,OrcPostMasterFailover
,OrcPostIntermediateMasterFailover
- new command line flag
--mysql-versions-to-image
to allow user to specify image for a mysql version - add print column in mysqlcluster CRD:
Ready
,Replicas
,Age
- allow specifying more PodSpec on MySQL cluster (9b6b46f)
- add a node controller for MySQL configuration (1950812)
- add "standard" labels on services created by the operator (#299)
- merge Orchestrator chart with the mysql-operator chart. Now instead of deployment it uses a statefulset
- nodes are removed from cluster status at scale down
- use init container for MySQL initialization (#342)
- enhance Backup Job Pod for Workload Identity (#366)
- refactor of how the information flow works: from k8s -> Operator -> Orchestrator; the sidecar container does not connect to Orchestrator anymore.
- rename of
initBackupURI
toinitBackupURL
(a3c6556) - use of Percona CentOS based images (#254)
- don't run as
root
user in containers (#291) - rename orchestrator finalizer (to block cluster deletion while it's registered into Orchestrator)
from
OrchestratorFinalizer
tomysql.presslabs.org/registered-in-orchestrator
(bfe4646) - improvement of
getBackupCandidate
function (9ce4e68) - configure MySQL using
init-file
(beb41ce, e5823cb) - rename
AWS_SECRET_KEY
field from bucket/backup secret toAWS_SECRET_ACCESS_KEY
(#301) - use an internal status table to store the MySQL status (181909f)
- use a common headless service for all MySQL nodes to reduce the host-name length (#246)
- cleanup of deprecated fields:
bucketURI
and top-levelMySQLCluster.spec.volumeSpec
PVC specification (d909ab9, df80b28)
- fix readiness probe for MySQL container
- fix remote storage delete bug
- fix mysqlbackup deletion failure when cluster is not found
- fix #350 where no backups were created when one fails
- fix #107, the orchestrator RAFT issue