File tree Expand file tree Collapse file tree 7 files changed +65
-16
lines changed
Expand file tree Collapse file tree 7 files changed +65
-16
lines changed Original file line number Diff line number Diff line change 88 <property name =" ROLLING_PATTERN"
99 value =" %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] [%X{requestId}] %logger{5} - %msg %n" />
1010
11- <property name =" LOG_DIR" value =" ${LOG_DIR:-${user.home}/logs/ eatda} " />
11+ <property name =" LOG_DIR" value =" / eatda/dev/logs " />
1212 <property name =" FILE_PATH_NAME" value =" ${LOG_DIR}/eatda.log" />
1313 <property name =" LOG_NAME_PATTERN" value =" ${LOG_DIR}/eatda-%d{yyyy-MM-dd}.%i.log" />
1414 <property name =" MAX_FILE_SIZE" value =" 10MB" />
2222 </appender >
2323
2424 <appender name =" ROLLING_LOG_FILE" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
25+ <file >${FILE_PATH_NAME}</file >
2526 <encoder >
2627 <pattern >${ROLLING_PATTERN}</pattern >
2728 </encoder >
28- <file >${FILE_PATH_NAME}</file >
2929 <rollingPolicy class =" ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
3030 <fileNamePattern >${LOG_NAME_PATTERN}</fileNamePattern >
31- <maxHistory >${MAX_HISTORY}</maxHistory >
3231 <maxFileSize >${MAX_FILE_SIZE}</maxFileSize >
32+ <maxHistory >${MAX_HISTORY}</maxHistory >
3333 <totalSizeCap >${TOTAL_SIZE}</totalSizeCap >
3434 </rollingPolicy >
3535 </appender >
3636
37- <springProfile name =" local, dev" >
37+ <springProfile name =" local" >
38+ <root level =" INFO" >
39+ <appender-ref ref =" CONSOLE" />
40+ </root >
41+ </springProfile >
42+
43+ <springProfile name =" dev" >
3844 <root level =" INFO" >
3945 <appender-ref ref =" CONSOLE" />
4046 <appender-ref ref =" ROLLING_LOG_FILE" />
Original file line number Diff line number Diff line change @@ -16,6 +16,14 @@ resource "aws_s3_object" "app-backup-log-script" {
1616 content_type = " text/x-sh"
1717}
1818
19+ resource "aws_s3_object" "mysql-backup-script" {
20+ bucket = aws_s3_bucket. dev . bucket
21+ key = " scripts/mysql-backup.sh"
22+ source = " ${ path . module } /scripts/mysql-backup.sh"
23+ etag = filemd5 (" ${ path . module } /scripts/mysql-backup.sh" )
24+ content_type = " text/x-sh"
25+ }
26+
1927resource "aws_s3_bucket_public_access_block" "dev" {
2028 bucket = aws_s3_bucket. dev . id
2129
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ set -e
3+
4+ BACKUP_DIR=" /home/ec2-user/eatda/mysql"
5+ S3_BUCKET=" s3://eatda-storage-dev/backup/mysql/"
6+ TIMESTAMP=$( date +%Y-%m-%d-%H%M%S)
7+ ARCHIVE_PATH=" ${BACKUP_DIR} /mysql-backup-${TIMESTAMP} .sql"
8+
9+ MYSQL_URL=$( aws ssm get-parameter --name " /dev/MYSQL_URL" --with-decryption --query " Parameter.Value" --output text)
10+ MYSQL_USER=$( aws ssm get-parameter --name " /dev/MYSQL_USER_NAME" --with-decryption --query " Parameter.Value" --output text)
11+ MYSQL_PASSWORD=$( aws ssm get-parameter --name " /dev/MYSQL_PASSWORD" --with-decryption --query " Parameter.Value" --output text)
12+
13+ HOST=$( echo " $MYSQL_URL " | sed -E ' s|jdbc:mysql://([^:/]+):([0-9]+)/([^?]+).*|\1|' )
14+ PORT=$( echo " $MYSQL_URL " | sed -E ' s|jdbc:mysql://([^:/]+):([0-9]+)/([^?]+).*|\2|' )
15+ DB_NAME=$( echo " $MYSQL_URL " | sed -E ' s|jdbc:mysql://([^:/]+):([0-9]+)/([^?]+).*|\3|' )
16+
17+ if mysqldump -h " $HOST " -P " $PORT " -u " $MYSQL_USER " -p" $MYSQL_PASSWORD " " $DB_NAME " > " $ARCHIVE_PATH " ; then
18+ echo " [INFO] MySQL backup successful: $ARCHIVE_PATH "
19+
20+ if aws s3 cp " $ARCHIVE_PATH " " $S3_BUCKET " ; then
21+ echo " [INFO] Upload successful: $ARCHIVE_PATH -> $S3_BUCKET "
22+ rm " $ARCHIVE_PATH "
23+ else
24+ echo " [ERROR] Failed to upload backup to S3." >&2
25+ exit 1
26+ fi
27+
28+ else
29+ echo " [ERROR] mysqldump failed." >&2
30+ exit 1
31+ fi
Original file line number Diff line number Diff line change @@ -12,8 +12,16 @@ echo '/swapfile none swap sw 0 0' >> /etc/fstab
1212aws s3 cp s3://eatda-storage-dev/scripts/app-backup-dev-logs.sh /home/ec2-user/logs/eatda/app-backup-dev-logs.sh
1313chmod +x /home/ec2-user/logs/eatda/app-backup-dev-logs.sh
1414
15+ aws s3 cp s3://eatda-storage-dev/scripts/mysql-backup.sh /home/ec2-user/eatda/mysql/mysql-backup.sh
16+ chmod +x /home/ec2-user/eatda/mysql/mysql-backup.sh
17+
1518yum install -y cronie
1619systemctl enable crond
1720systemctl start crond
1821
22+ until systemctl is-active --quiet crond; do
23+ sleep 1
24+ done
25+
1926(crontab -l 2> /dev/null; echo " 0 0 * * 0 /home/ec2-user/logs/eatda/app-backup-dev-logs.sh >> /var/log/app-backup.log 2>&1" ) | crontab -
27+ (crontab -l 2> /dev/null; echo " 30 0 * * 0 /home/ec2-user/eatda/mysql/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1" ) | crontab -
Original file line number Diff line number Diff line change @@ -54,17 +54,9 @@ locals {
5454 role = " prod"
5555 iam_instance_profile = " ec2-to-ecs"
5656 key_name = " eatda-ec2-prod-key"
57- user_data = <<- EOF
58- #!/bin/bash
59- echo ECS_CLUSTER=prod-cluster >> /etc/ecs/ecs.config
60-
61- fallocate -l 2G /swapfile
62- chmod 600 /swapfile
63- mkswap /swapfile
64- swapon /swapfile
65-
66- echo '/swapfile none swap sw 0 0' >> /etc/fstab
67- EOF
57+ user_data = templatefile (" ${ path . module } /scripts/user-data.sh" , {
58+ ecs_cluster_name = " prod-cluster"
59+ })
6860 }
6961}
7062
Original file line number Diff line number Diff line change @@ -43,7 +43,7 @@ module "rds" {
4343 password = data. aws_ssm_parameter . rds_password . value
4444 vpc_security_group_ids = local. vpc_security_group_ids
4545 multi_az = false
46- backup_retention_period = 0
46+ backup_retention_period = 7
4747 storage_encrypted = true
4848 tags = local. common_tags
4949}
Original file line number Diff line number Diff line change @@ -16,4 +16,8 @@ yum install -y cronie
1616systemctl enable crond
1717systemctl start crond
1818
19+ until systemctl is-active --quiet crond; do
20+ sleep 1
21+ done
22+
1923(crontab -l 2> /dev/null; echo " 0 0 * * 0 /home/ec2-user/logs/eatda/app-backup-prod-logs.sh >> /var/log/app-backup.log 2>&1" ) | crontab -
You can’t perform that action at this time.
0 commit comments