AWS: RDS – Connection refused и StorageFull

Автор: | 02/03/2018
 

Имеется AWS RDS инстанс PostgreSQL, который в какой-то момент перестал принимать подключения:

$ psql --host=datascience-ops.cjonwt.us-west-2.rds.amazonaws.com --username=dsops --password --dbname=dsops
Password for user dsops: 
psql: could not connect to server: Connection refused
        Is the server running on host "datascience-ops.cjonwt.us-west-2.rds.amazonaws.com" and accepting
        TCP/IP connections on port 5432?

Проверяем статус:

[simterm]

$ aws --profile ads-mic rds describe-db-instances --db-instance-identifier datascience-ops --query 'DBInstances[*].[DBInstanceStatus,AllocatedStorage]'  --output text
storage-full    5

[/simterm]

И в логах:

Бекап сейчас выполнить тоже нельзя:

[simterm]

$ aws --profile ads-mic rds create-db-snapshot --db-snapshot-identifier datascience-ops-2018-03-01-sizefix --db-instance-identifier datascience-ops

An error occurred (InvalidDBInstanceState) when calling the CreateDBSnapshot operation: Cannot create a snapshot because the database instance datascience-ops is not currently in the available state.

[/simterm]

Увеличим выделенное место, используем modify-db-instance:

[simterm]

$ aws --profile ads-mic rds modify-db-instance --db-instance-identifier datascience-ops --allocated-storage 20  --apply-immediately

[/simterm]

Проверяем:

[simterm]

$ aws --profile ads-mic rds describe-db-instances --db-instance-identifier datascience-ops --query 'DBInstances[*].[DBInstanceStatus,AllocatedStorage]'  --output text
modifying       5

[/simterm]

Статус modifying, ОК, ждём.

Пока modifying – проверяем подключение:

[simterm]

$ psql --host=datascience-ops.cjoqeswrmnwt.us-west-2.rds.amazonaws.com --username=dsops --password --dbname=dsops
Password for user dsops: 
psql (8.4.20, server 9.4.7)
WARNING: psql version 8.4, server version 9.4.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

dsops=> \l
                                   List of databases
   Name    |   Owner   | Encoding |  Collation  |    Ctype    |    Access privileges    
-----------+-----------+----------+-------------+-------------+-------------------------
 dsops     | dsops     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | dsops     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 rdsadmin  | rdsadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin
 template0 | rdsadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin
                                                              : rdsadmin=CTc/rdsadmin
 template1 | dsops     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/dsops
                                                              : dsops=CTc/dsops
(5 rows)

dsops=>

[/simterm]

Проверяем таблицы:

[simterm]

dsops=> \d
                           List of relations
 Schema |                 Name                  |   Type   |   Owner   
--------+---------------------------------------+----------+-----------
 public | user_dealerships                      | table    | dsops
 public | user_employeedir                      | table    | dsops
...

[/simterm]

Всё на месте, хорошо.

После того, как место было добавлено – статус ещё некоторое время был storage-full, потом запустился бекап расписанию, который не мог быть выполнен ранее (с октября прошлого года, ага), видимо из-за проблем с местом:

[simterm]

$ aws --profile ads-mic rds describe-db-snapshots --db-instance-identifier datascience-ops --query 'DBSnapshots[*].DBSnapshotIdentifier' --output table
-----------------------------------------------
|             DescribeDBSnapshots             |
+---------------------------------------------+
|  rds:datascience-ops-2017-10-24-11-57       |
|  rds:datascience-ops-2018-03-02-05-15       |
+---------------------------------------------+

[/simterm]

И только минут через 20 статус стал available:

[simterm]

$ aws --profile ads-mic rds describe-db-instances --db-instance-identifier datascience-ops --query 'DBInstances[*].[DBInstanceStatus,AllocatedStorage]'  --output text
available       10

[/simterm]

Готово.