2015-10-23 14:10:41 +00:00
---
layout: "google"
page_title: "Google: google_sql_database_instance"
sidebar_current: "docs-google-sql-database-instance"
description: |-
Creates a new SQL database instance in Google Cloud SQL.
---
# google\_sql\_database\_instance
2017-08-10 20:28:52 +00:00
Creates a new Google SQL Database Instance. For more information, see the [official documentation ](https://cloud.google.com/sql/ ),
or the [JSON API ](https://cloud.google.com/sql/docs/admin-api/v1beta4/instances ). Postgres support
for `google_sql_database_instance` is in [Beta ](/docs/providers/google/index.html#beta-features ).
2015-10-23 14:10:41 +00:00
2017-02-01 06:21:11 +00:00
~> **NOTE on `google_sql_database_instance`:** - Second-generation instances include a
default 'root'@'%' user with no password. This user will be deleted by Terraform on
2017-08-10 20:28:52 +00:00
instance creation. You should use `google_sql_user` to define a custom user with
2017-02-01 06:21:11 +00:00
a restricted host and strong password.
2015-10-23 14:10:41 +00:00
## Example Usage
Example creating a SQL Database.
2017-04-17 10:17:54 +00:00
```hcl
2015-10-23 14:10:41 +00:00
resource "google_sql_database_instance" "master" {
2016-04-10 21:34:15 +00:00
name = "master-instance"
2015-10-23 14:10:41 +00:00
2016-04-10 21:34:15 +00:00
settings {
tier = "D0"
}
2015-10-23 14:10:41 +00:00
}
```
## Argument Reference
The following arguments are supported:
2017-10-05 18:17:05 +00:00
* `region` - (Required) The region the instance will sit in. Note, first-generation Cloud SQL instance
regions do not line up with the Google Compute Engine (GCE) regions, and Cloud SQL is not
available in all regions - choose from one of the options listed [here ](https://cloud.google.com/sql/docs/mysql/instance-locations ).
2015-10-23 14:10:41 +00:00
2016-04-10 21:34:15 +00:00
* `settings` - (Required) The settings to use for the database. The
configuration is detailed below.
- - -
2015-10-23 14:10:41 +00:00
2017-09-12 15:04:13 +00:00
* `connection_name` - (Optional) The connection name of the instance to be used in connection strings.
2016-10-27 23:11:08 +00:00
* `database_version` - (Optional, Default: `MYSQL_5_6` ) The MySQL version to
2017-06-14 21:11:31 +00:00
use. Can be `MYSQL_5_6` , `MYSQL_5_7` or `POSTGRES_9_6` for second-generation
2016-10-28 12:41:03 +00:00
instances, or `MYSQL_5_5` or `MYSQL_5_6` for first-generation instances.
2017-08-10 20:28:52 +00:00
See [Second Generation Capabilities ](https://cloud.google.com/sql/docs/1st-2nd-gen-differences )
for more information. `POSTGRES_9_6` support is in [Beta ](/docs/providers/google/index.html#beta-features ).
2016-04-10 21:34:15 +00:00
* `name` - (Optional, Computed) The name of the instance. If the name is left
blank, Terraform will randomly generate one when the instance is first
created. This is done because after a name is used, it cannot be reused for
2017-02-17 23:37:58 +00:00
up to [one week ](https://cloud.google.com/sql/docs/delete-instance ).
2016-04-10 21:34:15 +00:00
* `master_instance_name` - (Optional) The name of the instance that will act as
the master in the replication setup. Note, this requires the master to have
`binary_log_enabled` set, as well as existing backups.
* `project` - (Optional) The project in which the resource belongs. If it
is not provided, the provider project is used.
* `replica_configuration` - (Optional) The configuration for replication. The
configuration is detailed below.
2015-10-23 14:10:41 +00:00
The required `settings` block supports:
2017-01-19 14:41:06 +00:00
* `tier` - (Required) The machine tier (First Generation) or type (Second Generation) to use. See
[tiers ](https://cloud.google.com/sql/docs/admin-api/v1beta4/tiers ) for more details and
2017-08-10 20:28:52 +00:00
supported versions. Postgres supports only shared-core machine types such as `db-f1-micro` , and custom
machine types such as `db-custom-2-13312` . See the
[Custom Machine Type Documentation ](https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#create )
to learn about specifying custom machine types.
2015-10-23 14:10:41 +00:00
* `activation_policy` - (Optional) This specifies when the instance should be
2016-04-10 21:34:15 +00:00
active. Can be either `ALWAYS` , `NEVER` or `ON_DEMAND` .
2015-10-23 14:10:41 +00:00
2016-04-10 21:34:15 +00:00
* `authorized_gae_applications` - (Optional) A list of Google App Engine (GAE)
project names that are allowed to access this instance.
2015-10-23 14:10:41 +00:00
* `crash_safe_replication` - (Optional) Specific to read instances, indicates
2016-04-10 21:34:15 +00:00
when crash-safe replication flags are enabled.
2015-10-23 14:10:41 +00:00
2017-05-18 20:10:52 +00:00
* `disk_autoresize` - (Optional, Second Generation, Default: `true` ) Configuration to increase storage size automatically.
2017-02-01 16:20:31 +00:00
* `disk_size` - (Optional, Second Generation, Default: `10` ) The size of data disk, in GB. Size of a running instance cannot be reduced but can be increased.
* `disk_type` - (Optional, Second Generation, Default: `PD_SSD` ) The type of data disk: PD_SSD or PD_HDD.
2017-02-17 23:38:38 +00:00
* `pricing_plan` - (Optional, First Generation) Pricing plan for this instance, can be one of
2016-04-10 21:34:15 +00:00
`PER_USE` or `PACKAGE` .
2015-12-07 16:40:41 +00:00
2016-04-10 21:34:15 +00:00
* `replication_type` - (Optional) Replication type for this instance, can be one
of `ASYNCHRONOUS` or `SYNCHRONOUS` .
2015-12-07 16:40:41 +00:00
2015-10-23 14:10:41 +00:00
The optional `settings.database_flags` sublist supports:
* `name` - (Optional) Name of the flag.
* `value` - (Optional) Value of the flag.
The optional `settings.backup_configuration` subblock supports:
2017-08-08 15:07:23 +00:00
* `binary_log_enabled` - (Optional) True if binary logging is enabled. If
2016-04-10 21:34:15 +00:00
`logging` is false, this must be as well.
2015-10-23 14:10:41 +00:00
2017-08-08 15:07:23 +00:00
* `enabled` - (Optional) True if backup configuration is enabled.
2015-10-23 14:10:41 +00:00
* `start_time` - (Optional) `HH:MM` format time indicating when backup
2016-04-10 21:34:15 +00:00
configuration starts.
2015-10-23 14:10:41 +00:00
The optional `settings.ip_configuration` subblock supports:
2017-08-08 15:07:23 +00:00
* `ipv4_enabled` - (Optional) True if the instance should be assigned an IP
2017-09-22 17:12:28 +00:00
address. The IPv4 address cannot be disabled for Second Generation instances.
2015-10-23 14:10:41 +00:00
2017-08-08 15:07:23 +00:00
* `require_ssl` - (Optional) True if mysqld should default to `REQUIRE X509`
2016-04-10 21:34:15 +00:00
for users connecting over IP.
2015-10-23 14:10:41 +00:00
The optional `settings.ip_configuration.authorized_networks[]` sublist supports:
2016-04-10 21:34:15 +00:00
* `expiration_time` - (Optional) The [RFC 3339 ](https://tools.ietf.org/html/rfc3339 )
formatted date time string indicating when this whitelist expires.
2015-10-23 14:10:41 +00:00
* `name` - (Optional) A name for this whitelist entry.
* `value` - (Optional) A CIDR notation IPv4 or IPv6 address that is allowed to
2016-04-10 21:34:15 +00:00
access this instance. Must be set even if other two attributes are not for
the whitelist to become active.
2015-10-23 14:10:41 +00:00
The optional `settings.location_preference` subblock supports:
* `follow_gae_application` - (Optional) A GAE application whose zone to remain
2016-04-10 21:34:15 +00:00
in. Must be in the same region as this instance.
2015-10-23 14:10:41 +00:00
* `zone` - (Optional) The preferred compute engine
2016-04-10 21:34:15 +00:00
[zone ](https://cloud.google.com/compute/docs/zones?hl=en ).
2015-10-23 14:10:41 +00:00
2017-02-17 23:33:47 +00:00
The optional `settings.maintenance_window` subblock for Second Generation
instances declares a one-hour [maintenance window ](https://cloud.google.com/sql/docs/instance-settings?hl=en#maintenance-window-2ndgen )
when an Instance can automatically restart to apply updates. It supports:
* `day` - (Optional) Day of week (`1-7`), starting on Monday
* `hour` - (Optional) Hour of day (`0-23`), ignored if `day` not set
2017-06-22 17:25:26 +00:00
* `update_track` - (Optional) Receive updates earlier (`canary`) or later
2017-02-17 23:33:47 +00:00
(`stable`)
2016-04-10 21:34:15 +00:00
The optional `replica_configuration` block must have `master_instance_name` set
to work, cannot be updated, and supports:
2015-10-23 14:10:41 +00:00
* `ca_certificate` - (Optional) PEM representation of the trusted CA's x509
2016-04-10 21:34:15 +00:00
certificate.
2015-10-23 14:10:41 +00:00
* `client_certificate` - (Optional) PEM representation of the slave's x509
2016-04-10 21:34:15 +00:00
certificate.
2015-10-23 14:10:41 +00:00
2016-04-10 21:34:15 +00:00
* `client_key` - (Optional) PEM representation of the slave's private key. The
corresponding public key in encoded in the `client_certificate` .
2015-10-23 14:10:41 +00:00
* `connect_retry_interval` - (Optional, Default: 60) The number of seconds
2016-04-10 21:34:15 +00:00
between connect retries.
2015-10-23 14:10:41 +00:00
* `dump_file_path` - (Optional) Path to a SQL file in GCS from which slave
2016-04-10 21:34:15 +00:00
instances are created. Format is `gs://bucket/filename` .
2015-10-23 14:10:41 +00:00
2017-05-22 20:44:25 +00:00
* `failover_target` - (Optional) Specifies if the replica is the failover target.
If the field is set to true the replica will be designated as a failover replica.
If the master instance fails, the replica instance will be promoted as
the new master instance.
2015-10-23 14:10:41 +00:00
* `master_heartbeat_period` - (Optional) Time in ms between replication
2016-04-10 21:34:15 +00:00
heartbeats.
2015-10-23 14:10:41 +00:00
* `password` - (Optional) Password for the replication connection.
* `sslCipher` - (Optional) Permissible ciphers for use in SSL encryption.
* `username` - (Optional) Username for replication connection.
2017-08-08 15:07:23 +00:00
* `verify_server_certificate` - (Optional) True if the master's common name
2016-04-10 21:34:15 +00:00
value is checked during the SSL handshake.
2015-10-23 14:10:41 +00:00
## Attributes Reference
2016-04-10 21:34:15 +00:00
In addition to the arguments listed above, the following computed attributes are
exported:
2015-10-23 14:10:41 +00:00
2017-01-29 16:36:57 +00:00
* `ip_address.0.ip_address` - The IPv4 address assigned.
2015-10-23 14:10:41 +00:00
2017-01-29 16:36:57 +00:00
* `ip_address.0.time_to_retire` - The time this IP address will be retired, in RFC
2016-04-10 21:34:15 +00:00
3339 format.
2015-10-23 14:10:41 +00:00
2016-04-10 21:34:15 +00:00
* `self_link` - The URI of the created resource.
2016-02-22 15:34:51 +00:00
2016-04-10 21:34:15 +00:00
* `settings.version` - Used to make sure changes to the `settings` block are
atomic.
2017-06-22 17:25:26 +00:00
## Import
Database instances can be imported using the `name` , e.g.
```
$ terraform import google_sql_database_instance.master master-instance
```