All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
0.17.0 - 2023-09-11
We migrated the image repository of mysql, fluent-bit, and mysqld_exporter to ghcr.io
.
From MOCO v0.17.0, please use the following images.
- ghcr.io/cybozu-go/moco/mysql
- ghcr.io/cybozu-go/moco/fluent-bit
- ghcr.io/cybozu-go/moco/mysqld_exporter
The quay.io/cybozu/mysql
, quay.io/cybozu/fluent-bit
, and quay.io/cybozu/mysqld_exporter
will not be updated in the future.
In addition, from this time, the mysql image does not contain the moco-init binary.
Therefore, MOCO v0.13.0 or lower cannot use ghcr.io/cybozu-go/moco/mysql
.
The default mysqld_exporter has been upgraded to v0.15.0. Accordingly, the following metrics will no longer be output.
mysql_exporter_scrapes_total
mysql_exporter_scrape_errors_total
mysql_last_scrape_failed
- Support Kubernetes 1.27 #525
- Support redunce volume size #538, #552
- Upgrade fluent-bit v2.1.8 and mysqld-exporter v0.15.0 #553, #554
- Add Updated Conditon in Status #546
- Disable innodb_undo_log_truncate #526
- Migrate image registry from qury.io to ghcr.io #528, #529, #533, #535, #542, #555
- incorporate moco-agent v0.10.0 #551
- Fix retry message when gathering mysqld status #559
- backup: PITR did not work sometimes #565
- Set kubeVersion compatible with EKS #536
- MySQLClusterSpec.BackupPolicyName should be annotated omitempty #532
- Fix broken links #541
- Fix log message when demote annotation is added #560
- @fgeorgeanybox
0.16.1 - 2023-04-07
- Add podAntiAffinity to MySQL Cluster StatefulSet. #513
- Support Google Cloud Storage #493 #501
- Add qps flag #518
- Bump golang.org/x/net from 0.3.1-0.20221206200815-1e63c2f08a10 to 0.7.0 #514
- Wait until all Pods are deleted in E2E #510
- Fix flaky test #515
- Disable the delay check if .spec.maxDelaySeconds == 0 #516
- Stop releasing ARM64 image #522
This release was canceled because the release workflow was incorrect.
0.15.0 - 2023-02-21
- Support Kubernetes v1.26 #495
- Support MySQL 8.0.32 #505
- Add default affinity for BackupPolicySpec #471
- Add max-concurrent-reconciles option #498
- Add metrics to measure processing time #499
- Add pprof server to moco-controller #500
- Update fluent-bit v2.0.9 #508
- Add id to cluster manager's log #503
- Build moco-controller with go 1.19 #506
- Ignore primary's event when detecting errant replicas #491
- Use ExecutedGtidSet and RetrievedGtidSet when determining the primary #474
- Enable go.mod cache #504
0.14.1 - 2022-12-08
- Downgrade mysqlsh to 8.0.30 #485
0.14.0 - 2022-11-28
This release allows MOCO users to leave the moco-init binary out of a custom mysqld container image. Now the moco-init binary is copied from the moco-agent container through an emptyDir volume.
To maintain backward compatibility, the mysql
images provided by Cybozu still contain the old moco-init binary.
- Copy moco-init binary from moco-agent image #461
- Support Kubernetes v1.25 #467
- Support MySQL 8.0.31 #479
- Introduce completion #470, #473
- Uses a probe defined by the user #472
- Ignore MySQL error 1094 when killing connections #476
- Detect differences of service appropriately #457
- Normalize time values in Certificate resource #460
0.13.0 - 2022-09-12
- Support apply PVC template changes to StatefulSet (#403, #412, #417, #420, #424)
- Support kubernetes v1.24 (#429)
- Support MySQL 8.0.30 (#444)
- Make sure partial_revokes is enabled (#414)
- Use Docker action (#416, #418)
- Disable the delay check if .spec.maxDelaySeconds == 0 in MySQLCluster (#434)
- Remove ineffective default setting (max_connect_errors) (#446)
- Add fsGroup and fsGroupChangePolicy to Pod specs (#443)
- Migrate batch/v1beta1.CronJob to batch/v1.CronJob (#447)
- Migrate from policyv1beta1.PodDisruptionBudget to policyv1.PodDisruptionBudget (#452)
- Update fluent-bit and mysqld_exporter container (#453)
- Delete cluster after E2E to reduce flaky test failures (#448)
- Update release procedure (#423)
- @inductor
- @jelmer
0.12.1 - 2022-04-26
- Increase memory limit and request for moco-init (#409)
0.12.0 - 2022-04-22
- Allow users to customize containers resources (#394, #395)
- Clarify a known issue about multi-threaded replication (#400, #401)
- Update mysqld_exporter and Fluent Bit (#402)
- Support k8s 1.23 (#399)
- Update actions (#398)
- Fix broken helm chart (#397)
0.11.1 - 2022-03-16
- Using SSA to create Secret (#387)
- Validate that container name is non-nil in validation webhook (#388)
- Fixed duplicate key in structured log (#386)
- Add securityContext to the user-supplied containers (#390)
0.11.0 - 2022-03-07
- Add MySQLCluster v1beta2 (#350, #359, #376)
- Support MySQL 8.0.28 (#369)
- Using SSA with moco-controller (#364, #372, #373, #374, #379)
- Update krew description (#351)
- Update klog to v2 (#355)
- Update Fluent Bit container image to v1.8.11 (#357)
- Stop using Reconcile's context for ClusterManager (#353)
- backup: calculate disk usage accurately (#356)
- Do not stop gathering cluster status if one or more Pods are pending (#366)
- Add nil check when restoring errant replica status (#367)
- Update how-to doc to grant PROXY when replicating cluster from outside (#381)
0.10.9 - 2021-11-18
- Pass spec.startupWaitSeconds for Clone request (#345)
- Update moco-agent to v0.7.1 (#345)
0.10.8 - 2021-11-12
- Add Kubernetes 1.22 Support (#338)
- Fix backup failure due to incorrect part size calculation (#339)
- Fix installation procedure of kubectl-moco (#341)
0.10.7 - 2021-11-02
- Add MySQL 8.0.27 Support (#330)
- Add Helm charts (#317)
- Support krew release (#312)
- Fix available status when all replicas are not ready (#323)
- Dynamically adjust part size when uploading backup files (#319)
- Disable replication_sender_observe_commit_only (#333)
- kubectl-moco: Fix crash bug when kubeconfig file does not exist (#327)
- kubeclt-moco: Import auth plugin (#328)
- kubectl-moco: Remove redundant error message (#329)
0.10.6 - 2021-10-05
- Add MySQL 8.0.26 Support (#302)
- Supports more than 5 MySQL instances (#303)
- Fix a dead link in GitHub pages (#301)
- Set TMPDIR for mysqlbinlog (#309)
0.10.5 - 2021-07-29
- Create ServiceAccount for moco controller (#281)
- Change LICENSE from MIT to Apache 2 (#291)
- Random failure when restoring a database (#284)
- Failed to restore data due to missing PROXY privilege (#287)
0.10.4 - 2021-07-07
- Fix delete BackupPolicy error (#276)
- Fix not to be affected by the system time zone (#277)
- Add History Limit to BackupPolicySpec (#279)
0.10.3 - 2021-07-06
- Watch ConfigMap for customizing my.cnf (#271)
0.10.2 - 2021-06-24
- Update moco-agent to 0.6.8 (#269)
0.10.1 - 2021-06-22
- Update moco-agent to 0.6.7 (#266)
0.10.0 - 2021-06-13
- Migrate the official MySQL image repository to quay.io/cybozu/mysql (#262)
- Update controller-runtime to 0.9.0 (#262)
- Update fluent-bit to 1.7.8 (#263)
- Update mysqld_exporter to 0.13.0 (#263)
0.9.5 - 2021-06-04
- Timeout while cloning large data (#261)
- Better handling of Cloning state (#261)
- Manual switch over did not take place immediately (#261)
- Update
moco-agent
to 0.6.6 (#261)
0.9.4 - 2021-06-03
- Automatic switchover did not take place immediately (#260)
0.9.3 - 2021-06-02
- Failed to update Service if
spec.externalTrafficPolicy
was set toLocal
(#259)
0.9.2 - 2021-06-01
- Fix RBAC for BackupPolicy (#258)
0.9.1 - 2021-05-31
- Change the way to shrink MySQLCluster CRD (#257)
0.9.0 - 2021-05-31
- Backup and Point-in-Time Recovery feature (#247)
- To use the new backup feature, clusters created with MOCO v0.8 needs to be re-created.
- Support for Kubernetes 1.21 (#251)
- Allow opaque
my.cnf
configurations (#252) - Documentation site on https://cybozu-go.github.io/moco/ (#254)
- Update
moco-agent
to v0.6.5 (#247)
- Controller failed to update Service if
spec.externalTrafficPolicy
is set to Local (#250)
0.8.3 - 2021-05-12
- Set UID/GID of containers to 10000:10000 (#243)
0.8.2 - 2021-05-10
- gRPC communication between moco-controller and moco-agent is protected with mTLS (#241)
0.8.1 - 2021-05-06
- built-in
mysqld_exporter
to exposemysqld
metrics (#237)
- binlog filename now has a proper prefix
binlog.
(#237)
0.8.0 - 2021-04-27
- Everything. There is no backward compatibility. (#228)
- The older release must be uninstalled before installing this version.
0.7.0 - 2021-02-22
Since v0.7.0, MOCO will no longer use CronJob for log rotation. Please remove existing CronJobs manually after upgrading MOCO.
- Stop using CronJob for log rotation. (#190, moco-agent#10)
- Update moco-agent to v0.2.1. (#202)
0.6.0 - 2021-02-16
Caution
- Since MOCO v0.6.0, MySQL data volumes (PVC) will be automatically deleted when the parent MySQLCluster resource is deleted. If you want to keep the volumes, please delete the owner reference manually from the volumes (PVCs) resource. https://github.com/cybozu-go/moco/blob/main/docs/design.md#how-to-delete-resources-garbage-collection
- The
volumeClaimTemplates
field in the generated StatefulSet will be changed. This change will not be applied automatically. After upgrading moco from v0.5.x, please delete the existing StatefulSet manually.
- Add kubectl-moco command for Mac OS (darwin/amd64). (#184)
- Add PVC auto deletion. (#189)
- Generate secrets for cluster from ControllerSecret. (#185, #192)
0.5.1 - 2021-02-04
- Download e2e test tools for the host OS. (#182)
0.5.0 - 2021-02-03
Breaking change
The MySQLCluster
created by MOCO < v0.5.0
has no compatibility with >= v0.5.0
caused by the naming method of k8s resources (PR #161). Please recreate the cluster.
- Add kubectl-moco release workflow for windows. (#169)
- Support official MySQL container image. (#165)
- Add 'moco-' prefix to resource name and remove UUID suffix (#161)
0.4.0 - 2021-01-26
- Add document about how to build MySQL container image. (#122)
- Add document about example of MySQLCluster CR. (#124)
- Support MySQL 8.0.18 and 8.0.20 (#125, #141, #142)
- Support Kubernetes 1.19 and 1.20 (#157, #160)
- Update Go to 1.15 and Ubuntu base image to 20.04 (#153)
- Publish editor/viewer ClusterRoles with aggregation labels. (#116)
- Fix the login user option of
kubectl-moco
. (#117) - Fix agent process crash bug. (#143)
- Prevent unnecessary reconciliation. (#146)
- Add
loose_
prefix to theinnodb_numa_interleave
system variable. (#158)
0.3.1 - 2020-11-11
- Add support for klog options to
kubectl-moco
plugin (#110). - Add
logRotationSecurityContext
field toMySQLCluster
CRD to give PodSecurityContext for the log rotation CronJob (#111).
- Fix the location of an annotation in the deployment manifest (#107).
- Fix the behavior of
-it
option forkubectl-moco
plugin (#109). - Fix the default value of
-u
option forkubectl-moco
plugin (#109). - Add
moco-
prefix to the names in the deployment manifest (#112). You need to deletemoco-controller-manager
Deployment to apply the updated manifest. - Remove the resource limits for the controller from the deployment manifest (#115).
0.3.0 - 2020-11-05
- Use ServiceTemplate. (#65, #92)
- Configure intermediate primary (#74, #87)
- Add metrics for controller (#81)
- Add metrics for agents (#83)
- Add Event recording. (#84)
- kubectl-moco plugin (#93, #95)
- create PodDisruptionBudget (#99)
- Modify manifests for deployment. (#97)
0.2.0 - 2020-10-07
- Generate MySQL configuration file with merging configmap resource (#39, #42)
- Add periodic log rotation mechanism (#43)
- Setup MySQL cluster with primary-replica (#50)
- Add Service resources to connect primary and replicas (#52)
- Do failover when a replica becomes unavailable (#53)
- Add token mechanism to call agent APIs (#55)
- Do failover when a primary becomes unavailable (#58)
- Support for Kubernetes 1.18 (#61)
0.1.1 - 2020-06-18
- Fix a build target bug (#36).
0.1.0 - 2020-06-18
- Bootstrap a vanilla MySQL cluster with no replicas (#2).