JudisWeb – Tutorial Cara membuat AWS RDS Instans dan Konfigurasi WordPress Database – Manajemen database merupakan salah satu hal yang penting dalam mengelola website yang dinamis. Apalagi dengan bertambahnya jumlah konten/artikel dan pengunjung setiap harinya. Yang menyebabkan server bekerja ekstra, dan mungkin akan mengalami penurunan performa sehingga saat kita membuka web, loading halaman sedikit lebih lama.
Banyak sekali Content Management System atau CMS tidak hanya digunakan sebagai aplikasi pembuat web dinamis dan statis tetapi dengan segudang fitur/plugin/komponen pendukung dari developer (pengembang, baik dari luar maupun official) memberikan fungsi lebih, salah satunya e-commerce website. Tentunya dengan tipe web yang dinamis makan semakin banyak konten dalam bentuk artikel maupun deskripsi produk.
Dalam tutorial kali ini, kita akan mempelajari Setup Database CMS pada AWS RDS. Yang saya gunakan adalah CMS WordPress, bisa menggunakan CMS lain seperti Joomla, Drupal, dsb.
AWS RDS (Relational Database Service)
Pada tulisan saya sebelumnya Tutorial Install WordPress, kita belajar bagaimana cara kita menginstall WordPress atau CMS di virtual server, dari tutorial tersebut saya jelaskan instalasi database dalam EC2. Ibaratnya sebuah server menjalankan Apache2+PHP+MySQL/MariaDB. Tentunya kinerja database ini menggunakan resource EC2.
AWS RDS merupakan solusi paling tepat untuk manajemen database dan untuk menjadwalkan auto backup database tanpa cron pada EC2. Gampangnya: kita punya 2 server, 1 khusus untuk aplikasi web, 1 lagi khusus untuk database yang bekerja untuk webserver kita, dan cron job atau tugas penjadwalan backup tanpa menggunakan resource EC2.
Tentunya resource EC2 bekerja lebih ringan lagi karena pemrosesan dan penyimpanan database menggunakan instans tersendiri yaitu RDS.
AWS RDS Free Tier Spesifikasi: 1 vCPU, 1 GiB RAM, 20 GB storage khusus untuk database, 20 GB storage untuk backup
Karena AWS Free Tier memberikan kita penawaran uji coba selama 1 tahun, seperti halnya dalam membuat instance pada AWS EC2, kita juga dapat membuat instance AWS RDS dan memanfaatkan resource tersebut untuk webserver kita.
Dari gambar yang saya capture dari AWS Billing bahwa kita diperbolehkan menggunakan 750 jam untuk penggunaan AWS RDS db.t2.micro instans. Jika menggunakan 2 instans yang berjalan 24/7 jam, maka dalam waktu 14 hari saja 750 jam penggunaan free tersebut mendekati limit. Jadi disini kita menggunakan 1 instans yang bisa berjalan selama 30 hari penuh.
Apa saja yang dibutuhkan untuk membuat AWS RDS?
Tentunya sebelum beranjak pada tutorial kita perlu tahu apa saja yang dibutuhkan:
- Tentunya akun AWS Free Tier. Baca disini cara membuat akun AWS
- AWS EC2. Baca disini cara membuat Instance/virtual machine dengan Ubuntu
- MariaDB atau MySQL
- AWS Relational Database Service (RDS)
Membuat Database dengan AWS RDS
Seperti yang saya jelaskan sebelumnya, kita disini juga membuat instance RDS, bukan untuk web aplikasi tapi instance yang dikhususkan untuk pengelolaan database.
Pastikan di region mana kita akan Setup Database AWS RDS sama dengan region EC2 yang kita buat sebelumnya, jangan sampai kita membuat instance EC2 di Singapore, tapi database RDS berada di Eropa.
Step 1: Login AWS Management Console
Setelah login AWS Management Console dashboard, search “RDS” atau click Services – All Services – Database – RDS. Setelah masuk dalam dashboard RDS, click Create database.
Step 2: Memilih Database dan Engine
Setelah masuk menu Create database:
- Creation method: Standart create
- Engine type: MySQL/MariaDB
- Template: Free tier
- Version: Pilih versi terbaru
Pastikan memilih Free tier pada template, karena template Production, Dev/Test versi berbayar dengan spesifikasi instance tersendiri.
Step 3: Setting User, Instance Class, Storage
Step berikutnya adalah mengatur user, instance class, dan storage. DB instance identifier merupakan nama instance DB dari RDS, isi menggunakan huruf kecil misal: mydbinstance, myrdsdb, mywpdbinstance.
Secara default Master username untuk akses login ke database adalah admin, atau menggunakan username baru yang kita buat. Kemudian isi Master password dan verifikasi Master password untuk akses database.
DB instance class pilih db.t2.micro (free tier)
Kemudian pada bagian Connectivity, tambahan security group dari EC2. Jika menggunakan remote database bisa kita aktifkan pada Public access menjadi Yes, tentunya jika Public access dijinkan maka RDS kita bisa diakses secara remote dari sumber eksternal. Misal menggunakan MySQL Workbench dari laptop/desktop atau koneksi lain dari akses publik.
Opsional pada step ini, pada Additional configuration, initial database name isi menggunakan nama database yang akan dibuat. Ini untuk pertama kali instance dibuat, disini saya menggunakan nama database dengan mywordpressdb.
Kemudian Create database, dan tunggu sampai instance berhasil dibuat dan status available.
Step 4: Konfigurasi RDS dengan EC2
Setelah instance database berhasil dibuat status available dan running. Langkah selanjutnya konfigurasi RDS dengan EC2. Click pada DB Identifier (nama instance db), pilih tab Connectivity & Security, kita mendapatkan informasi Endpoint dan Port. Endpoint ini yang kita jadikan alamat host database.
Pada bagian VPC security groups menginformasikan Security group yang dibuat saat pembuatan instance. Click Security group dan kita akan langsung menuju dashboard EC2 – Security groups.
Pada bagian Inbound rules, click Edit inbound rules, dan Add rule atau tambahkan security group yang baru.
Untuk Type: pilih MYSQL/Aurora, Source type: pilih Custom, dan bagian Source pilih Security group dari EC2 yang kita buat. Kemudian Save rules.
- Type: MySQL/Aurora
- Source type: Custom
- Source: EC2 Instans Security Group
Test Koneksi Database, Setup Konfigurasi WordPress Database
Koneksi Database
Akses ke server menggunakan SSH, kemudian check koneksi database menggunakan perintah ini:
mysql -h <alamat-endpoint-rds> -u <username-rds> -p
- <alamat-endpoint-rds>: merupakan endpoint yang kita bisa dapatkan informasinya setelah membuat AWS RDS instans.
- <username-rds>: adalah username pada AWS RDS
mysql -h myrdsdb.bdkshh86jd.ap-northeast-1.rds.amazonaws.com -u admin -p
Setelah memasukkan master password, kita berhasil melakukan koneksi ke RDS.
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4442
Server version: 10.5.12-MariaDB-log Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Verifikasi database yang kita buat saat instance dibuat:
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| innodb |
| mysql |
| performance_schema |
| mywordpressdb |
+--------------------+
5 rows in set (0.001 sec)
Terlihat bahwa mywordpressdb atau database yang kita buat saat instance pertama kali dibuat, kemudian Verfifikasi user:
MariaDB [(none)]> SELECT user FROM mysql.user;
+-------------+
| User |
+-------------+
| admin |
| mariadb.sys |
| rdsadmin |
+-------------+
3 rows in set (0.004 sec)
Master username admin memiliki akses penuh terhadap RDS, kita akan buat user khusus hanya untuk mengakses database wordpress.
MariaDB [(none)]> CREATE USER 'wpdbuser' IDENTIFIED BY 'wpdbpassword';
GRANT ALL PRIVILEGES ON mywordpressdb.* TO wpdbuser;
FLUSH PRIVILEGES;
exit
Ganti wpdbuser yang saya buat sebagai contoh dengan username lain dan wpdbpassword menggunakan password yang sulit atau bisa menggunakan password generator.
Setup Konfigurasi WordPress Database
Backup terlebih dahulu file konfigurasi wordpress wp-config.php dengan file baru wp-config.php.backup:
cp /var/www/html/wp-config.php /var/www/html/wp-config.php.backup
sudo cp /var/www/html/wp-config.php /var/www/html/wp-config.php.backup
Edit file konfigurasi WordPress menggunakan host, user, password, database RDS.
nano /var/www/html/wp-config.php
/** The name of the database for WordPress */
define( 'DB_NAME', 'mywordpressdb');
/** MySQL database username */
define( 'DB_USER', 'wpdbuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'wpdbpassword' );
/** MySQL hostname */
define( 'DB_HOST', 'endpoint-rds' );
Simpan file konfigurasi WordPress (CTRL+O) dan keluar editor (CTRL+X).
Fresh Install WordPress
Untuk fresh install WordPress kita tidak perlu melakukan backup database dari database lama ke RDS, jika database website sudah terbentuk dan sudah ada konten dan segala macam didalamnya kita tidak perlu mengawali/mengulang membuat website, tapi cukup dengan Import/Export Database WordPress dari localhost ke RDS.
Import Database local:
mysqldump -u user-mysql-local -p nama-wordpress-db-local > backup-wordpress-db.sql
Verifikasi file backup MySQL:
ls -l
Export Database ke RDS
mysqldump -u user-mysql-rds -p mywordpressdb < backup.wordpress-db.sql
Setelah melakukan import database refresh web browser dan website sudah beroperasi kembali menggunakan RDS.
Demikian Tutorial Cara membuat AWS RDS Instans dan Konfigurasi WordPress Database.
Semoga bermanfaat.