{"action":"created","comment":{"url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/comments/212409490","pull_request_review_id":149034211,"id":212409490,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMjQwOTQ5MA==","diff_hunk":"@@ -0,0 +1,195 @@\n+---\n+layout: single\n+title:  \"Orca: Redis to SQL\"\n+sidebar:\n+  nav: guides\n+---\n+\n+{% include toc %}\n+\n+Orca's execution state is stored in Redis by default, but can be configured for SQL. In this topology, Redis will still be required for the work queue.\n+\n+This guide will go over MySQL setup, how to configure Orca, as well as how to perform a zero-downtime migration from Redis to SQL.\n+\n+## MySQL Setup\n+\n+Orca ships with MySQL drivers by default, but you can include your own JDBC drivers on the classpath if you need to connect to a different database.\n+\n+First, you'll need to create the schema:\n+\n+```sql\n+CREATE SCHEMA `orca` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;\n+```\n+\n+Orca is configured to support a `service` user and a `migration` user:\n+\n+```sql\n+GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `orca`.* TO 'orca_service'@'%'\n+\n+GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, LOCK TABLES, EXECUTE, SHOW VIEW ON `orca`.* TO 'orca_migrate'@'%'\n+```\n+\n+When Orca starts up, it will perform database migrations to ensure its running the correct schema.\n+\n+### Amazon Aurora\n+\n+At Netflix, we use Amazon Aurora MySQL and have configured it with the following settings, missing values are defaults.\n+Your mileage may vary.\n+\n+#### Aurora Parameter Groups\n+\n+- *binlog_cache_size*: `32768`\n+- *default_tmp_storage_engine*: `InnoDB`\n+- *general_log*: `0`\n+- *innodb_adaptive_hash_index*: `0`\n+- *innodb_buffer_pool_size*: `{DBInstanceClassMemory*3/4}`\n+- *key_buffer_size*: `16777216`\n+- *log_queries_not_using_indexes*: `0`\n+- *log_throttle_queries_not_using_indexes*: `60`\n+- *long_query_time*: `0.5`\n+- *max_allowed_packet*: `25165824`\n+- *max_binlog_size*: `134217728`\n+- *query_cache_size*: `{DBInstanceClassMemory/24}`\n+- *query_cache_type*: `1`\n+- *read_buffer_size*: `262144`\n+- *slow_query_log*: `1`\n+- *sync_binlog*: `1`\n+- *tx_isolation*: `READ-COMMITTED`","path":"guides/operator/orca-redis-to-sql.md","position":57,"original_position":57,"commit_id":"45c59ce29c979f0cfb81085bc99da99e221ef026","original_commit_id":"45c59ce29c979f0cfb81085bc99da99e221ef026","user":{"login":"asher","id":59994,"node_id":"MDQ6VXNlcjU5OTk0","avatar_url":"https://avatars1.githubusercontent.com/u/59994?v=4","gravatar_id":"","url":"https://api.github.com/users/asher","html_url":"https://github.com/asher","followers_url":"https://api.github.com/users/asher/followers","following_url":"https://api.github.com/users/asher/following{/other_user}","gists_url":"https://api.github.com/users/asher/gists{/gist_id}","starred_url":"https://api.github.com/users/asher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/asher/subscriptions","organizations_url":"https://api.github.com/users/asher/orgs","repos_url":"https://api.github.com/users/asher/repos","events_url":"https://api.github.com/users/asher/events{/privacy}","received_events_url":"https://api.github.com/users/asher/received_events","type":"User","site_admin":false},"body":"I think our use of `READ-COMMITTED` is worth noting outside of this block as it is both non-default and essential. While orca attempts to set this at the session level regardless, it may be of interest to DBE's operating mysql for orca.","created_at":"2018-08-23T18:19:52Z","updated_at":"2018-08-23T18:44:01Z","html_url":"https://github.com/spinnaker/spinnaker.github.io/pull/988#discussion_r212409490","pull_request_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/comments/212409490"},"html":{"href":"https://github.com/spinnaker/spinnaker.github.io/pull/988#discussion_r212409490"},"pull_request":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988"}}},"pull_request":{"url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988","id":210297353,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwMjk3MzUz","html_url":"https://github.com/spinnaker/spinnaker.github.io/pull/988","diff_url":"https://github.com/spinnaker/spinnaker.github.io/pull/988.diff","patch_url":"https://github.com/spinnaker/spinnaker.github.io/pull/988.patch","issue_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/988","number":988,"state":"open","locked":false,"title":"feat(guides): Orca SQL setup","user":{"login":"robzienert","id":108741,"node_id":"MDQ6VXNlcjEwODc0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/108741?v=4","gravatar_id":"","url":"https://api.github.com/users/robzienert","html_url":"https://github.com/robzienert","followers_url":"https://api.github.com/users/robzienert/followers","following_url":"https://api.github.com/users/robzienert/following{/other_user}","gists_url":"https://api.github.com/users/robzienert/gists{/gist_id}","starred_url":"https://api.github.com/users/robzienert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robzienert/subscriptions","organizations_url":"https://api.github.com/users/robzienert/orgs","repos_url":"https://api.github.com/users/robzienert/repos","events_url":"https://api.github.com/users/robzienert/events{/privacy}","received_events_url":"https://api.github.com/users/robzienert/received_events","type":"User","site_admin":false},"body":"@asher Would appreciate you keeping me honest on the SQL settings.\r\n\r\nHappy to move the mariadb extension repo into spinnaker org if we want, although I don't think it'll get a whole lot of activity.\r\n\r\nShouldn't be merged until we upstream `orca-sql`.","created_at":"2018-08-23T00:08:33Z","updated_at":"2018-08-23T18:44:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9aec5ba44b9e7e14090274c73204ffd94a161ffe","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988/commits","review_comments_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988/comments","review_comment_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/988/comments","statuses_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/statuses/45c59ce29c979f0cfb81085bc99da99e221ef026","head":{"label":"robzienert:orca-sql","ref":"orca-sql","sha":"45c59ce29c979f0cfb81085bc99da99e221ef026","user":{"login":"robzienert","id":108741,"node_id":"MDQ6VXNlcjEwODc0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/108741?v=4","gravatar_id":"","url":"https://api.github.com/users/robzienert","html_url":"https://github.com/robzienert","followers_url":"https://api.github.com/users/robzienert/followers","following_url":"https://api.github.com/users/robzienert/following{/other_user}","gists_url":"https://api.github.com/users/robzienert/gists{/gist_id}","starred_url":"https://api.github.com/users/robzienert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robzienert/subscriptions","organizations_url":"https://api.github.com/users/robzienert/orgs","repos_url":"https://api.github.com/users/robzienert/repos","events_url":"https://api.github.com/users/robzienert/events{/privacy}","received_events_url":"https://api.github.com/users/robzienert/received_events","type":"User","site_admin":false},"repo":{"id":88899944,"node_id":"MDEwOlJlcG9zaXRvcnk4ODg5OTk0NA==","name":"spinnaker.github.io","full_name":"robzienert/spinnaker.github.io","owner":{"login":"robzienert","id":108741,"node_id":"MDQ6VXNlcjEwODc0MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/108741?v=4","gravatar_id":"","url":"https://api.github.com/users/robzienert","html_url":"https://github.com/robzienert","followers_url":"https://api.github.com/users/robzienert/followers","following_url":"https://api.github.com/users/robzienert/following{/other_user}","gists_url":"https://api.github.com/users/robzienert/gists{/gist_id}","starred_url":"https://api.github.com/users/robzienert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robzienert/subscriptions","organizations_url":"https://api.github.com/users/robzienert/orgs","repos_url":"https://api.github.com/users/robzienert/repos","events_url":"https://api.github.com/users/robzienert/events{/privacy}","received_events_url":"https://api.github.com/users/robzienert/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/robzienert/spinnaker.github.io","description":"spinnaker documentation site","fork":true,"url":"https://api.github.com/repos/robzienert/spinnaker.github.io","forks_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/forks","keys_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/teams","hooks_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/hooks","issue_events_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/events","assignees_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/tags","blobs_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/languages","stargazers_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/stargazers","contributors_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/contributors","subscribers_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/subscribers","subscription_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/subscription","commits_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/merges","archive_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/downloads","issues_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/labels{/name}","releases_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/robzienert/spinnaker.github.io/deployments","created_at":"2017-04-20T18:51:32Z","updated_at":"2017-04-20T18:51:34Z","pushed_at":"2018-08-23T00:06:15Z","git_url":"git://github.com/robzienert/spinnaker.github.io.git","ssh_url":"git@github.com:robzienert/spinnaker.github.io.git","clone_url":"https://github.com/robzienert/spinnaker.github.io.git","svn_url":"https://github.com/robzienert/spinnaker.github.io","homepage":null,"size":61659,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"spinnaker:master","ref":"master","sha":"f5d48ef62e7f7199f554da0310d7a6005627da30","user":{"login":"spinnaker","id":7634182,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MzQxODI=","avatar_url":"https://avatars1.githubusercontent.com/u/7634182?v=4","gravatar_id":"","url":"https://api.github.com/users/spinnaker","html_url":"https://github.com/spinnaker","followers_url":"https://api.github.com/users/spinnaker/followers","following_url":"https://api.github.com/users/spinnaker/following{/other_user}","gists_url":"https://api.github.com/users/spinnaker/gists{/gist_id}","starred_url":"https://api.github.com/users/spinnaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spinnaker/subscriptions","organizations_url":"https://api.github.com/users/spinnaker/orgs","repos_url":"https://api.github.com/users/spinnaker/repos","events_url":"https://api.github.com/users/spinnaker/events{/privacy}","received_events_url":"https://api.github.com/users/spinnaker/received_events","type":"Organization","site_admin":false},"repo":{"id":86486443,"node_id":"MDEwOlJlcG9zaXRvcnk4NjQ4NjQ0Mw==","name":"spinnaker.github.io","full_name":"spinnaker/spinnaker.github.io","owner":{"login":"spinnaker","id":7634182,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MzQxODI=","avatar_url":"https://avatars1.githubusercontent.com/u/7634182?v=4","gravatar_id":"","url":"https://api.github.com/users/spinnaker","html_url":"https://github.com/spinnaker","followers_url":"https://api.github.com/users/spinnaker/followers","following_url":"https://api.github.com/users/spinnaker/following{/other_user}","gists_url":"https://api.github.com/users/spinnaker/gists{/gist_id}","starred_url":"https://api.github.com/users/spinnaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spinnaker/subscriptions","organizations_url":"https://api.github.com/users/spinnaker/orgs","repos_url":"https://api.github.com/users/spinnaker/repos","events_url":"https://api.github.com/users/spinnaker/events{/privacy}","received_events_url":"https://api.github.com/users/spinnaker/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spinnaker/spinnaker.github.io","description":"spinnaker documentation site","fork":false,"url":"https://api.github.com/repos/spinnaker/spinnaker.github.io","forks_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/forks","keys_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/teams","hooks_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/hooks","issue_events_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/events","assignees_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/tags","blobs_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/languages","stargazers_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/stargazers","contributors_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/contributors","subscribers_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/subscribers","subscription_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/subscription","commits_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/merges","archive_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/downloads","issues_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/labels{/name}","releases_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/spinnaker/spinnaker.github.io/deployments","created_at":"2017-03-28T17:09:59Z","updated_at":"2018-08-22T22:20:53Z","pushed_at":"2018-08-23T00:08:34Z","git_url":"git://github.com/spinnaker/spinnaker.github.io.git","ssh_url":"git@github.com:spinnaker/spinnaker.github.io.git","clone_url":"https://github.com/spinnaker/spinnaker.github.io.git","svn_url":"https://github.com/spinnaker/spinnaker.github.io","homepage":null,"size":61663,"stargazers_count":21,"watchers_count":21,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":173,"mirror_url":null,"archived":false,"open_issues_count":79,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":173,"open_issues":79,"watchers":21,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988"},"html":{"href":"https://github.com/spinnaker/spinnaker.github.io/pull/988"},"issue":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/988"},"comments":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/issues/988/comments"},"review_comments":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988/comments"},"review_comment":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/pulls/988/commits"},"statuses":{"href":"https://api.github.com/repos/spinnaker/spinnaker.github.io/statuses/45c59ce29c979f0cfb81085bc99da99e221ef026"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"asher"}}