Managing backup policies in Managed Service for PostgreSQL
Backup policies allow you to flexibly manage the creation and storage of cluster backups. You can configure a schedule to create full backups and specify their retention period.
Creating a backup policy
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
-
See the description of the CLI command to create a policy:
yc managed-postgresql backup-retention-policy create --help -
Create a policy:
yc managed-postgresql backup-retention-policy create \ --cluster-id <cluster_ID> \ --policy-name <policy_name> \ --day-of-month <day_of_month> \ --month <month> \ --day-of-week <day_of_week> \ --retain-for-days <backup_retention_period_in_days> \ --description <policy_description>Where:
-
day-of-month: Day of month. The possible value is1–31. -
month: Month. The possible values are1–12orJAN–DEC. -
day-of-week: Day of week. The possible values are0–6orSUN–SAT. -
retain-for-days: Backup retention period in days. The minimum value is7.The
day-of-month,month, andday-of-weekparameters are used to schedule backups. The schedule is set as a cron expression, but hours and minutes are not specified.The cron expression also supports special characters:
*: Selecting all possible values. A backup will be taken on every possible opportunity (every day or month) provided there is no conflict with other parameters. This option is used by default if the parameter value is not specified.,: Listing multiple values.–: Specifying a range of values./: Specifying a range interval. For example,*/3for theday-of-monthparameter means that a backup will be created every three days.
If none of the schedule parameters is set, backups are taken based on the
* * *cron expression, i.e., every day.Examples of cron expressions:
1 */6 *: Backup is created on the first day of month every six month.31 jan SUN: Backup is created in January each Sunday and on January 31.* * WED: Backup is created every Wednesday.
You can test a cron expression in the editor
.
You can get the cluster ID with a list of clusters.
Result:
policy_id: mdbt553glp51******** cluster_id: c9q5le6h1a4k******** policy_name: test-policy created_at: "2025-03-25T15:55:50.393000450Z" cron: day_of_month: "25" month: mar day_of_week: TUE retain_for_days: "300" -
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Use the BackupRetentionPolicy.Create method and send the following request, e.g., via cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<cluster_ID>/retention_policies' \ --data '{ "cron": { "dayOfMonth": "<day_of_month>", "month": "<month>", "dayOfWeek": "<day_of_week>" }, "retainForDays": "<retention_period_in_days>", "description": "<policy_description>", "policyName": "<policy_name>" }'Where:
-
dayOfMonth: Day of month. The possible value is1-31. -
month: Month. The possible values are1-12orJAN-DEC. -
dayOfWeek: Day of week. The possible values are0-6orSUN-SAT. -
retainForDays: Backup retention period in days. The minimum value is7.The
dayOfMonth,month, anddayOfWeekparameters are used to schedule backups. The schedule is set as a cron expression, but hours and minutes are not specified.The cron expression also supports special characters:
*: Selecting all possible values. A backup will be taken on every possible opportunity (every day or month) provided there is no conflict with other parameters. This option is used by default if the parameter value is not specified.,: Listing multiple values.–: Specifying a range of values./: Specifying a range interval. For example,*/3for thedayOfMonthparameter means that a backup will be created every three days.
If none of the schedule parameters is set, backups are taken based on the
* * *cron expression, i.e., every day.Examples of cron expressions:
1 */6 *: Backup is created on the first day of month every six month.31 jan SUN: Backup is created in January each Sunday and on January 31.* * WED: Backup is created every Wednesday.
You can test a cron expression in the editor
.
You can request the cluster ID with a list of clusters.
-
-
View the server response to make sure the request was successful.
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
To create a policy:
-
Use the BackupRetentionPolicyService.Create method and send the following request, e.g., via gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/backup_retention_policy_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "cron": { "day_of_month": "<day_of_month>", "month": "<month>", "day_of_week": "<day_of_week>" }, "retain_for_days": "<backup_retention_period_in_days>", "description": "<policy_description>", "policy_name": "<policy_name>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.postgresql.v1.BackupRetentionPolicyService.CreateWhere:
-
day_of_month: Day of month. The possible value is1–31. -
month: Month. The possible values are1–12orJAN–DEC. -
day_of_week: Day of week. The possible values are0–6orSUN–SAT. -
retain_for_days: Backup retention period in days. The minimum value is7.The
day_of_month,month, andday_of_weekparameters are used to schedule backups. The schedule is set as a cron expression, but hours and minutes are not specified.The cron expression also supports special characters:
*: Selecting all possible values. A backup will be taken on every possible opportunity (every day or month) provided there is no conflict with other parameters. This option is used by default if the parameter value is not specified.,: Listing multiple values.–: Specifying a range of values./: Specifying a range interval. For example,*/3for theday_of_monthparameter means that a backup will be created every three days.
If none of the schedule parameters is set, backups are taken based on the
* * *cron expression, i.e., every day.Examples of cron expressions:
1 */6 *: Backup is created on the first day of month every six month.31 jan SUN: Backup is created in January each Sunday and on January 31.* * WED: Backup is created every Wednesday.
You can test a cron expression in the editor
.
You can get the cluster ID with a list of clusters.
-
-
View the server response to make sure the request was successful.
-
Getting a list of backup policies
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
-
See the description of the CLI command to get a list of policies:
yc managed-postgresql backup-retention-policy list --help -
Get a list of policies for a Managed Service for PostgreSQL cluster:
yc managed-postgresql backup-retention-policy list \ --cluster-id <cluster_ID>You can get the cluster ID with a list of clusters.
Result:
+----------------------+-------------+--------------------+------------+-------------------+ | ID | NAME | CLUSTER ID | CRONTAB | RETENTION PERIOD | +----------------------+-------------+--------------------+------------+-------------------+ | mdbt553glp51******** | test-policy | c9q5le6h1a4******* | 31 JAN SUN | 50 | +----------------------+-------------+--------------------+------------+-------------------+Order of parameters in the
CRONTABcolumn:day_of_month,month,day_of_week.
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Use the BackupRetentionPolicy.List method and send the following request, e.g., via cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<cluster_ID>/retention_policies?pageSize=<number_of_results>'Where
page_sizeis the number of request results returned per page. Specify a number larger than zero.You can request the cluster ID with a list of clusters.
-
View the server response to make sure the request was successful.
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
To get a list of policies for a cluster:
-
Use the BackupRetentionPolicyService.List method and send the following request, e.g., via gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/backup_retention_policy_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "page_size": "<number_of_results>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.postgresql.v1.BackupRetentionPolicyService.ListWhere
page_sizeis the number of request results returned per page. Specify a number larger than zero.You can request the cluster ID with a list of clusters.
-
View the server response to make sure the request was successful.
-
Deleting a backup policy
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
-
See the description of the CLI command to delete a policy:
yc managed-postgresql backup-retention-policy delete --help -
Delete a policy:
yc managed-postgresql backup-retention-policy delete <policy_ID> \ --cluster-id <cluster_ID>You can get the cluster ID with the list of clusters, and the policy ID, with the list of policies.
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Use the BackupRetentionPolicy.Delete method and send the following request, e.g., via cURL
:curl \ --request DELETE \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-postgresql/v1/clusters/<cluster_ID>/retention_policies/<policy_ID>'You can request the cluster ID with the list of clusters, and the policy ID, with the list of policies.
-
View the server response to make sure the request was successful.
-
Get an IAM token for API authentication and put it into the environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
To delete a policy:
-
Use the BackupRetentionPolicyService.Delete method and send the following request, e.g., via gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/backup_retention_policy_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "policy_id": "<policy_ID>", "cluster_id": "<cluster_ID>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.postgresql.v1.BackupRetentionPolicyService.DeleteYou can request the cluster ID with the list of clusters, and the policy ID, with the list of policies.
-
View the server response to make sure the request was successful.
-