release: github.com/cloudfoundry/cf-mysql-release / 20

Github source: caa23b3d or master branch

Highlights

  • Support AWS multi-availability zone deployments #87241160
    See below for upgrade instructions.
    • Added networks and resource pools for Multiple AZs
    • Updated job names for Multiple AZs
  • Operator can now configure cf-mysql-release with different instance types for each job #87242348
  • Improved Operator-visible logging from mariadb_ctrl #88102590
  • We have updated MariaDB to version 10.0.17, Galera to 25.3.9, and Xtrabackup to 2.2.10 #90127848, #94023216
  • use xtrabackup-v2 as replication mechanism (improved stability during replication) #88835488
  • Compile against the MariaDB connector instead of additionally including the MySQL connector #92725528
  • We have rewritten the Quota Enforcer to improve stability #88665590

New Documentation

Bug Fixes and Miscellaneous Changes

  • Once over quota, write privs are not restored by dropping all tables #86454200
  • Upgrade sample stub to allow self signed certificates #82316314
  • CF-MySQL service broker must speak to the CC API via SSL #93485852
  • Update Ruby version for service broker - address any CVEs #93485852
  • Upgrade Rails and other gems to latest version for broker repos #86044548
  • Configurable defaults for MariaDB in-memory behavior #94043690
    max_heap_table_size = 16777216 # Rows
    tmp_table_size = 33554432 # Bytes
  • Compilation instances now use new instance types on AWS #89434250
  • Added small bosh-lite helper scripts
  • Improved MySQL node startup speed
    • Nodes come online more quickly
    • Nodes fail faster if sub-processes fail
  • Enabled option to run acceptance-tests errand against pre-existing org (instead of creating a random one each time) #90070764

v20 Upgrade Instructions for AWS #93040612

If you’ve deployed v19 or earlier, there are specific manifest changes you’ll need to make to take advantage of the new multi-AZ templates. You’ll need to rename the mysql job to mysql_z1; this is a one-time change as you upgrade to v20. Future versions of cf-mysql-release will continue to use the _z1, _z2, _z3 pattern. 1. Download existing manifest

$ bosh download manifest [your deployment name] cf-mysql-deployment.yml
2. Set manifest to newly-downloaded manifest
bosh deployment cf-mysql-deployment.yml
3. Edit the manifest to rename mysql job to mysql_z1
$ bosh edit deployment
4. Rename job
$ bosh rename job mysql mysql_z1
5. Create a stub file called cf-mysql-aws-stub.yml by copying and modifying the sample_aws_stub.yml in templates/sample_stubs.
$ cp templates/sample_stubs/sample_aws_stub.yml cf-mysql-aws-stub.yml
6. Make a new manifest with multiple availability zones
$ ./generate_deployment_manifest aws cf-mysql-aws-stub.yml > cf-mysql-new.yml
7. Set manifest to newly-created manifest
$ bosh deployment cf-mysql-new.yml
8. Edit manifest
$ bosh edit deployment
Configure only one node of mysql_z1 and 0 of mysql_z2 and mysql_z3 - Set instances of mysql_z2 and mysql_z3 to 0 - Remove static ips from mysql_z2 and mysql_z3 - Set cluster IPs on mysql_z1 to just the IP of the mysql_z1 instance - Set cluster IPs on proxy jobs to just the IP of the mysql_z1 instance 9. Deploy (resulting in a single mysql node, 2 brokers and 2 proxies correctly distributed across AZs)
$ bosh deploy
10. Validate by running bosh vms cf-mysql. Your output should look similar to this:
    +———————-+———+——————–+————-+
    | Job/index            | State   | Resource Pool      | IPs         |
    +———————-+———+——————–+————-+
    | cf-mysql-broker_z1/0 | running | cf-mysql-broker_z1 | 10.10.3.101 |
    | cf-mysql-broker_z2/0 | running | cf-mysql-broker_z2 | 10.10.4.101 |
    | mysql_z1/0           | running | mysql_z1           | 10.10.3.10  |
    | proxy_z1/0           | running | proxy_z1           | 10.10.3.11  |
    | proxy_z2/0           | running | proxy_z2           | 10.10.4.11  |
    +———————-+———+——————–+————-+
    
11. Make a new manifest using templates, as above (leave unchanged at 3 mysql nodes, etc). 12. Set manifest to newly-created manifest, as above. 13. Deploy (resulting in 3 mysql nodes, 2 proxies and 2 brokers distributed across multiple AZs), as above. Bosh should show you manifest changes that look similar to this:

Jobs
mysql_z1
  properties
    ± cluster_ips: 
      + 10.10.4.10
      + 10.10.5.10
mysql_z2
  ± instances: 
    - 0
    + 1
  ± networks: 
    - {"name"=>"mysql2", "static_ips"=>nil}
    + {"name"=>"mysql2", "static_ips"=>["10.10.4.10"]}
mysql_z3
  ± instances: 
    - 0
    + 1
  ± networks: 
    - {"name"=>"mysql3", "static_ips"=>nil}
    + {"name"=>"mysql3", "static_ips"=>["10.10.5.10"]}
proxy_z1
  properties
    ± cluster_ips: 
      + 10.10.4.10
      + 10.10.5.10
proxy_z2
  properties
    ± cluster_ips: 
      + 10.10.4.10
      + 10.10.5.10
  1. Validate by running bosh vms cf-mysql. Your output should look similar to this:
    +———————-+———+——————–+————-+
    | Job/index            | State   | Resource Pool      | IPs         |
    +———————-+———+——————–+————-+
    | cf-mysql-broker_z1/0 | running | cf-mysql-broker_z1 | 10.10.3.101 |
    | cf-mysql-broker_z2/0 | running | cf-mysql-broker_z2 | 10.10.4.101 |
    | mysql_z1/0           | running | mysql_z1           | 10.10.3.10  |
    | mysql_z2/0           | running | mysql_z2           | 10.10.4.10  |
    | mysql_z3/0           | running | mysql_z3           | 10.10.5.10  |
    | proxy_z1/0           | running | proxy_z1           | 10.10.3.11  |
    | proxy_z2/0           | running | proxy_z2           | 10.10.4.11  |
    +———————-+———+——————–+————-+
    

Upload this release version to the Director:

$ bosh upload-release https://bosh.io/d/github.com/cloudfoundry/cf-mysql-release?v=20 --sha1 143fb43504f046baf243de4774e0a8013b851fb0

Modify deployment manifest to use this release in addition to any other used releases:

releases:
- name: cf-mysql
  version: "20"

Finally add needed deployment jobs and specify values for required properties.

Optionally download sha1: 143fb43504f046baf243de4774e0a8013b851fb0 release tarball locally:

# ...or download it directly using curl
$ curl -L -J -O https://bosh.io/d/github.com/cloudfoundry/cf-mysql-release?v=20

# or with wget...
$ wget --content-disposition https://bosh.io/d/github.com/cloudfoundry/cf-mysql-release?v=20