Ravindra BagaleCourses & study guides English

AWS CLI RDS Commands: Database बनवा, Snapshot घ्या आणि Restore करा

Terminal मधून RDS वर MySQL database चालवू: subnet group, create, connect, modify, snapshot, restore, read replica आणि safe delete.

या chapter मध्ये तुम्ही काय शिकाल

  • DB subnet group बनवा
  • DB instance बनवा आणि connect
  • Size आणि backups modify
  • Snapshot, restore, read replica
  • Final snapshot सह safe delete

1. मोठं चित्र: managed database

हे का लागतं?

Maintenance सकट flat भाड्याने: पाणी, lift, रंग society बघते. तुम्ही फक्त राहता. RDS मध्ये patching, backups, failover AWS करतं.

हे काय आहे?

RDS commands aws rds मध्ये: create-db-subnet-group, create-db-instance, modify-db-instance, create-db-snapshot.

कसं करायचं (step by step)

Database life cyclecreate-db-subnet-group (private)create-db-instancewait db-instance-availablecreate-db-snapshotfinal snapshot सह delete
Database private subnets मध्ये, फक्त app SG ला allow.

2. DB subnet group

हे का लागतं?

RDS ला कळायला हवं कुठले private subnets वापरायचे, कमीत कमी दोन zones.

हे काय आहे?

DB subnet group = RDS साठी subnets ची नाव असलेली list.

कसं करायचं (step by step)

  1. बनवा.
aws rds create-db-subnet-group --db-subnet-group-name cli-db-subnets --db-subnet-group-description "private" --subnet-ids $PRI1 $PRI2 --query "DBSubnetGroup.SubnetGroupStatus" --output text

अपेक्षित output:

Complete

3. बनवा आणि connect करा

हे का लागतं?

Server वर काही install न करता चालू MySQL हवं.

हे काय आहे?

create-db-instance engine, class, storage, credentials निवडतो. --manage-master-user-password password Secrets Manager मध्ये ठेवतो.

कसं करायचं (step by step)

  1. Database बनवा.
aws rds create-db-instance --db-instance-identifier cli-mysql --engine mysql --db-instance-class db.t3.micro --allocated-storage 20 --master-username admin --manage-master-user-password --db-subnet-group-name cli-db-subnets --vpc-security-group-ids $DSG --backup-retention-period 7 --no-publicly-accessible --query "DBInstance.DBInstanceStatus" --output text

अपेक्षित output:

creating
  1. Wait करून endpoint.
aws rds wait db-instance-available --db-instance-identifier cli-mysql
EP=$(aws rds describe-db-instances --db-instance-identifier cli-mysql --query "DBInstances[0].Endpoint.Address" --output text); echo $EP

अपेक्षित output:

cli-mysql.abc123.ap-south-1.rds.amazonaws.com
  1. App server वरून connect.
mysql -h $EP -u admin -p -e "SELECT VERSION();"

अपेक्षित output:

8.0.39

4. Instance modify करा

हे का लागतं?

Traffic वाढलं. मोठा class आणि storage हवं.

हे काय आहे?

modify-db-instance class, storage, backups, Multi-AZ बदलतो. --apply-immediately नसेल तर maintenance window ची वाट.

कसं करायचं (step by step)

  1. मोठं करा, Multi-AZ on.
aws rds modify-db-instance --db-instance-identifier cli-mysql --db-instance-class db.t3.small --allocated-storage 30 --multi-az --apply-immediately --query "DBInstance.PendingModifiedValues"

अपेक्षित output:

{ "DBInstanceClass": "db.t3.small", "AllocatedStorage": 30, "MultiAZ": true }
  1. Verify.
aws rds describe-db-instances --db-instance-identifier cli-mysql --query "DBInstances[0].[DBInstanceClass,MultiAZ,DBInstanceStatus]" --output text

अपेक्षित output:

db.t3.small  True  available

5. Snapshots, restore, read replicas

हे का लागतं?

Risky बदलाआधी backup हवा. Reports ने main DB slow होऊ नये.

हे काय आहे?

Manual snapshot तुम्ही delete करेपर्यंत राहतो. Restore नेहमी नवीन instance बनवतो. Read replica read-only queries साठी copy.

कसं करायचं (step by step)

  1. Snapshot.
aws rds create-db-snapshot --db-instance-identifier cli-mysql --db-snapshot-identifier cli-mysql-before-change
aws rds wait db-snapshot-available --db-snapshot-identifier cli-mysql-before-change && echo done

अपेक्षित output:

done
  1. नवीन instance ला restore.
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier cli-mysql-restored --db-snapshot-identifier cli-mysql-before-change --db-subnet-group-name cli-db-subnets --query "DBInstance.DBInstanceStatus" --output text

अपेक्षित output:

creating
  1. Read replica.
aws rds create-db-instance-read-replica --db-instance-identifier cli-mysql-ro --source-db-instance-identifier cli-mysql --query "DBInstance.ReadReplicaSourceDBInstanceIdentifier" --output text

अपेक्षित output:

cli-mysql

6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये

हे का लागतं?

Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.

हे काय आहे?

प्रत्येक CLI command म्हणजे एक API call. उदा. aws rds create-db-snapshot --db-instance-identifier db1 --db-snapshot-identifier s1 म्हणजे CreateDBSnapshot API.

कसं करायचं (step by step)

हीच action (CreateDBSnapshot) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.

StackCode
Python (boto3)boto3.client("rds").create_db_snapshot(DBInstanceIdentifier="db1",DBSnapshotIdentifier="s1")
Node.js (v3)await rds.send(new CreateDBSnapshotCommand({DBInstanceIdentifier:"db1",DBSnapshotIdentifier:"s1"}));
Java (v2)rds.createDBSnapshot(r -> r.dbInstanceIdentifier("db1").dbSnapshotIdentifier("s1"));
Go (v2)c.CreateDBSnapshot(ctx, &rds.CreateDBSnapshotInput{DBInstanceIdentifier: aws.String("db1"), DBSnapshotIdentifier: aws.String("s1")})
.NETawait rds.CreateDBSnapshotAsync(new CreateDBSnapshotRequest{DBInstanceIdentifier="db1",DBSnapshotIdentifier="s1"});
PHP$rds->createDBSnapshot(["DBInstanceIdentifier"=>"db1","DBSnapshotIdentifier"=>"s1"]);

7. काहीही खर्च चालू राहू नये म्हणून cleanup

हे का लागतं?

चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.

हे काय आहे?

उलट्या क्रमाने delete करा: आधी children, मग parents.

कसं करायचं (step by step)

  1. Replica आणि restored copy delete.
aws rds delete-db-instance --db-instance-identifier cli-mysql-ro --skip-final-snapshot
aws rds delete-db-instance --db-instance-identifier cli-mysql-restored --skip-final-snapshot

अपेक्षित output:

(no output means success)
  1. Final snapshot सह main DB delete.
aws rds delete-db-instance --db-instance-identifier cli-mysql --final-db-snapshot-identifier cli-mysql-final
aws rds wait db-instance-deleted --db-instance-identifier cli-mysql && echo gone

अपेक्षित output:

gone
  1. खात्री झाल्यावर snapshots आणि subnet group काढा.
aws rds delete-db-snapshot --db-snapshot-identifier cli-mysql-before-change
aws rds delete-db-subnet-group --db-subnet-group-name cli-db-subnets

अपेक्षित output:

(no output means success)

Ravindra Bagale's Tip

Production साठी --deletion-protection on करा. मग ते off केल्याशिवाय delete-db-instance fail होतो, अपघात टळतात.

8. मुलाखत प्रश्न आणि उत्तरं

प्र. Multi-AZ vs read replica?

Multi-AZ failover standby; replica reads साठी.

प्र. Restore database overwrite करतो?

नाही, नवीन instance.

प्र. --apply-immediately काय?

Maintenance window ऐवजी लगेच.

प्र. Master password ठेवायचा नसेल तर?

--manage-master-user-password.

प्र. Automated vs manual?

Automated retention नुसार; manual delete पर्यंत.

घरी करून बघा

  1. db.t3.micro बनवा, table बनवा, snapshot, table drop, restore करून table परत आली का बघा.
  2. Deletion protection on ठेवून delete करून error वाचा.

थोडक्यात सांगायचं तर

  1. Private subnets मध्ये subnet group.
  2. db-instance-available ची वाट.
  3. --apply-immediately.
  4. Restore नवीन instance.
  5. Delete ला final snapshot.

सराव Tasks

या scenario बद्दल

Pandharpur Yatra Tours हा पंढरपूर मधला प्रवास व्यवसाय आहे. Vitthal More त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Database endpoint शोधा

का: App endpoint नावाने connect होतं, IP ने नाही.

काय करायचं: DB instance pandharpuryatra-db describe करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

सोपं मोठ्या orders आधी

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Order id व amount, मोठी amount आधी.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

सोपं City नुसार customers

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Pune मधल्या customers ची नावं.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम लहान orders काढा

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: 200 पेक्षा कमी amount चे orders delete.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम Customer नावांसह orders

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: प्रत्येक customer नाव व order amount.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम एकूण sales

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: सगळ्या order amounts ची बेरीज.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम City दुरुस्त करा

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Customer 5 Rome ला गेले. Record update करा.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

मध्यम Multi-AZ सुरू करा

का: Multi-AZ दुसऱ्या AZ मध्ये standby ठेवतो व आपोआप failover करतो.

काय करायचं: pandharpuryatra-db Multi-AZ करा व बदल लगेच लागू करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Customer नुसार sales

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: Customer नुसार total, फक्त 1000 पेक्षा जास्त.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

अवघड Orders नसलेले customers

का: RDS setup नंतर database query करणं रोजचं काम.

काय करायचं: कधीच order न केलेल्या customers ची नावं.

Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).

कसं करायचं:
  1. Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
  2. SQL statement step by step लिहा: काय, कुठून, कोणते rows.
  3. Statement ; ने संपवा.
  4. Check answer दाबा. Query table च्या practice copy वर चालते.

अवघड MySQL database बनवा

का: RDS database तुमच्यासाठी चालवतं: backups, patches व failover managed.

काय करायचं: RDS instance pandharpuryatra-db बनवा: engine mysql, class db.t3.micro, 20 GiB storage, master user admin, master password $DB_PASS मधून.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Read replica बनवा

का: Read replicas reports व read traffic main database वरून कमी करतात.

काय करायचं: Source pandharpuryatra-db पासून pandharpuryatra-db-ro read replica बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

RDS DB बनवा. Install, patch न करता MySQL हवं. RDS = managed DB. Private subnet group लागतो. --manage-master-user-password सह create-db-instance. wait, मग Endpoint.Address.
उजळणी card: RDS DB बनवा · PNG download करा · Card page उघडा
RDS snapshots. Risky बदलाआधी backup. Manual snapshots delete पर्यंत राहतात. Restore नेहमी नवीन instance. --final-db-snapshot-identifier सह delete.
उजळणी card: RDS snapshots · PNG download करा · Card page उघडा
Multi-AZ vs Read replica. दुसऱ्या AZ मध्ये standby. / वाचता येणारी copy.
तुलना: Multi-AZ vs Read replica · PNG download करा · Card page उघडा
Multi-AZ vs read replica?. Multi-AZ automatic failover standby. Read replica read-only traffic. Production मध्ये दोन्ही एकत्र.
मुलाखत card: Multi-AZ vs read replica? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.