การตั้งค่า Timezone ด้วย RDS
ครั้งนี้ผมจะมาอธิบายเกี่ยวกับ การตั้งค่า Timezone ด้วย RDS ต่อจากบทความ วิธีการสร้าง RDS และเชื่อมต่อจาก EC2 บน AWS โดยบทความนี้จะเป็นการตั้งค่า Timezone จาก UTC ให้เป็น +07
สิ่งที่ต้องมี
ต้องทำ วิธีการสร้าง RDS และเชื่อมต่อจาก EC2 บน AWS เพราะเราจะใช้ RDS นี้ในการตั้งค่า Timezone โดยอ่านคำอธิบายและทำตามลิงก์ด้านล่างนี้
- เลือกทำตามหัวข้อต่อไปนี้ (✅ = หัวข้อที่ต้องทำ | ❌ = หัวข้อที่ไม่ต้องทำ)
※ข้อควรระวัง
แนะนำให้อ่านบทความอย่างถี่ถ้วนก่อนเริ่มลงมือทำในทุกบทความ เช่น สิ่งที่ต้องมี เป็นต้น
เมื่อทำการสร้าง RDS และเชื่อมต่อจาก EC2 บน AWS ครบทุกขั้นตอนแล้ว ก็เท่ากับว่าตอนนี้เราสามารถใช้งานการจัดการ MySQL ใน Amazon Linux 2 ได้แล้ว ทีนี้เริ่มทำในขั้นตอนถัดไปได้เลย
ปัญหา Timezone
ก่อนอื่นเราต้องมาตรวจสอบเวลาก่อนว่าตอนนี้เป็นเวลา UTC หรือ +07 เราจะตรวจสอบโดยการเพิ่มข้อมูล date time ปัจจุบันลงใน Database นั่นเอง
ทีนี้ผมจะสาธิตโดยการสร้าง table ขึ้นมาใหม่โดยใช้ชื่อว่าtest_datetime
จากนั้นก็จะเพิ่มข้อมูล date time ปัจจุบันลงใน Database:tinnakorn
(Database นี้เป็นแค่ชื่อตัวอย่าง)
รันคำสั่งด้านล่างนี้เพื่อสร้าง table ที่ชื่อว่าtest_datetime
MySQL [tinnakorn]> create table test_datetime(id int, dt datetime); // รันคำสั่งด้านล่างนี้เพื่อสร้าง table ที่ชื่อว่า "test_datetime" Query OK, 0 rows affected (0.03 sec) MySQL [tinnakorn]>
รันคำสั่งนี้เพื่อเรียกดู table ก็จะเห็น table:test_datetime
แสดงขึ้นมา
MySQL [tinnakorn]> show tables; // รันคำสั่งนี้เพื่อเรียกดู table +---------------------+ | Tables_in_tinnakorn | +---------------------+ | test | | test_datetime | +---------------------+ 2 rows in set (0.00 sec) MySQL [tinnakorn]>
รันคำสั่งนี้เพื่อเพิ่มข้อมูลลง table
MySQL [tinnakorn]> insert into test_datetime(id, dt) value (1, NOW()); // รันคำสั่งนี้เพื่อเพิ่มข้อมูลลง table Query OK, 1 row affected (0.01 sec) MySQL [tinnakorn]>
รันคำสั่งนี้เพื่อเรียกดูข้อมูลใน table จะเห็นว่าคอลัมน์id:1 | 2022-04-08 08:01:40
เป็นเวลาปัจจุบันของ UTC
ซึ่งจุดประสงค์ที่เราจะทำในบทความนี้คือการเปลี่ยน Timezone UTC ให้เป็น +07 หรือเวลาของประเทศไทย เพื่อให้การใช้งานของ RDS นั้นมีความสะดวกในเรื่องของเขตเวลาที่กำลังใช้งานอยู่นั่นเอง
MySQL [tinnakorn]> select * from test_datetime; // รันคำสั่งนี้เพื่อเรียกดูข้อมูลใน table +------+---------------------+ | id | dt | +------+---------------------+ | 1 | 2022-04-08 08:01:40 | +------+---------------------+ 1 row in set (0.00 sec) MySQL [tinnakorn]>
การตั้งค่า Timezone ด้วย RDS
ขั้นตอนนี้เป็นการตั้งค่า RDS จากUTC
ให้เป็น+07
กลับมาที่หน้า Databases ของเราตาม path ของRDS 〉 Databases 〉 tinnakorn-rds-timezone-db (ชื่อ database ของคุณ)
นี้ได้เลย
เมื่อเข้ามาแล้วเลื่อนลงมาด้านล่าง เลือกหัวข้อConfiguration
จากนั้นดูที่ Parameter group ในช่องสีเขียว ซึ่งเราจะทำการเปลี่ยนตรงนี้เพื่อให้ Timezone เป็น +07 แต่ตอนนี้เรายังไม่สามารถเปลี่ยนได้ เราต้องทำการสร้าง parameter group ขึ้นมาก่อน
การสร้าง Parameter groups
มาที่เมนูด้านซ้าย เลือกParameter groups
คลิกCreate parameter group
การตั้งค่า Parameter group details นี้คือ:
» Parameter group family:mysql8.0 ▼
(เลือกให้ตรงกับชื่อเดิม เช่น default.mysql8.0)
» Type:DB Parameter Group ▼
(Default)
» Group name และ Description: เช่นtinnakorn-rds-parameter-group
(ใส่ชื่ออะไรก็ได้)
» คลิกCreate
ค้นหาชื่อ Parameter group ของเรา แล้วคลิกเข้าไป
ตั้งค่า Parameter ตามนี้:
① ค้นหา Parameter:?︎ time_zone
② Check✅
time_zone
③ คลิกEdit parameters
เลือก time_zone:Asia/Bangkok
แล้วกดSave changes
เพียงเท่านี้การสร้าง Parameter group timezone ที่เป็น+07
ก็เสร็จเรียบร้อยแล้ว
การเปลี่ยน Parameter group ใน Database
ทีนี้กลับมาที่ Database ของเรา
คลิกModify
เลื่อนลงมาด้านล่างที่หัวข้อ▼ Additional configuration
แล้วเปลี่ยน DB parameter group โดยเลือก Parameter group ของเราที่สร้างไปเมื่อสักครู่ เช่นtinnakorn-rds-parameter-group
จากนั้นคลิกContinue
ที่ด้านล่างสุด
เลือกApply immediately
และคลิกModify cluster
เมื่อขึ้น Modifying แล้วรอจนกว่า Status จะขึ้นAvailable
ตามรูปภาพ
จากนั้นกลับมาที่หน้า PuTTy อีกครั้ง แล้วรันคำสั่งนี้เพื่อเพิ่มข้อมูลลง table
MySQL [tinnakorn]> insert into test_datetime(id, dt) value (2, NOW()); // รันคำสั่งนี้เพื่อเพิ่มข้อมูลลง table Query OK, 1 row affected (0.00 sec) MySQL [tinnakorn]>
รันคำสั่งนี้เพื่อเรียกดูข้อมูลใน table จะเห็นว่าข้อมูล Timezone เป็น+07
หรือเขตเวลาปัจจุบันของประเทศไทยเรียบร้อยแล้ว
MySQL [tinnakorn]> select * from test_datetime; +------+---------------------+ | id | dt | +------+---------------------+ | 1 | 2022-04-08 08:01:40 | | 2 | 2022-04-08 15:17:18 | // Timezon ปัจจุบันของประเทศไทย +------+---------------------+ 2 rows in set (0.00 sec) MySQL [tinnakorn]>
สำหรับคนที่ทำตามขั้นตอนข้างต้นนี้แล้ว แต่การเพิ่มข้อมูล date time ครั้งที่ 2 ยังแสดง Timezone เป็น UTC ให้แก้ไขโดยการทำตามขั้นตอนด้านล่างนี้
ในกรณีที่ขึ้นpending reboot
แบบนี้ ต้องแก้ไขโดยการ Reboot
มาที่ด้านบนขวามือ เลือกActions › Reboot
คลิกConfirm
รอจนกว่า Status:Rebooting
จะเปลี่ยนเป็น✅ Available
เมื่อสถานะเปลี่ยนเป็น ✅ Available แล้ว เข้ามาตรวจสอบParameter group
ที่หัวข้อ Configuration อีกครั้ง
ถ้าขึ้นIn sync
แสดงว่าการตั้งค่าเสร็จสมบูรณ์
จากนั้นให้ทำการเพิ่มข้อมูล date time ครั้งที่ 3 ลง table อีกครั้ง ทีนี้ก็จะเห็นว่าUTC
เปลี่ยนเป็น+07
หรือเขตเวลาของประเทศไทยนั่นเอง
อ่านข้อมูลเพิ่มเติมที่: Working with parameter groups
สรุป
การตั้งค่า RDS Timezone จะช่วยให้เราใช้งาน Database ได้อย่างมีประสิทธิภาพและสะดวกในเรื่องของเขตเวลามากยิ่งขึ้น ซึ่งจะส่งผลให้เราตั้งค่าฟังก์ชันต่างๆ ที่เกี่ยวกับเวลาได้ง่ายขึ้นโดยไม่ต้องมาเสียเวลาในการคำนวณ Timezone ให้ยุ่งยากนั่นเอง