Pendahuluan
Docker adalah alat yang sangat efektif untuk mengelola aplikasi berbasis container, termasuk untuk menjalankan database seperti MySQL. Dengan Docker Compose, konfigurasi dan pengelolaan container MySQL dapat dilakukan dengan lebih mudah dan efisien. Artikel ini membahas cara menjalankan MySQL 8.0 menggunakan Docker Compose serta cara mengelola data melalui proses export dan import menggunakan perintah docker exec.
Konfigurasi Docker Compose untuk MySQL
Berikut adalah contoh konfigurasi Docker Compose untuk menjalankan MySQL 8.0. Konfigurasi ini mencakup pengaturan port, environment variables, dan kebijakan restart.
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql-container-test
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 1FH6N1Ran9N4
MYSQL_USER: totoraha
MYSQL_PASSWORD: pgo9l1Geb3Np
MYSQL_DATABASE: firtapps_db
ports:
- "3316:3306"
Penjelasan:
- image: mysql:8.0: Menentukan image MySQL versi 8.0.
- container_name: Nama container yang ditetapkan sebagai
mysql-container-test. - restart: unless-stopped: Container MySQL akan restart secara otomatis kecuali dihentikan secara manual.
- environment: Variabel lingkungan seperti
MYSQL_ROOT_PASSWORD,MYSQL_USER,MYSQL_PASSWORD, danMYSQL_DATABASEyang digunakan untuk konfigurasi awal MySQL. - ports: Memetakan port 3306 di container ke port 3316 di host.
Setelah file docker-compose.yml ini siap, jalankan perintah berikut untuk memulai container MySQL:
docker-compose up -d
Perintah ini akan memulai MySQL container di background.
Mengelola Data di MySQL: Export dan Import
Mengelola database sering kali memerlukan proses backup (export) dan restore (import). Dengan menggunakan perintah docker exec, dapat dijalankan perintah-perintah di dalam container untuk melakukan export dan import data ke dalam MySQL.
1. Export (Backup) Data MySQL
Untuk membuat backup dari database MySQL, gunakan perintah mysqldump melalui docker exec. Perintah ini akan mengekspor seluruh isi database ke dalam file SQL.
Langkah-langkah untuk export data:
- Pastikan container MySQL sedang berjalan dengan perintah:
docker ps - Gunakan perintah berikut untuk mengekspor database
firtapps_dbke dalam file SQL:docker exec mysql-container-test mysqldump -u totoraha -p firtapps_db > backup_firtapps_db.sql
Penjelasan:
docker exec: Menjalankan perintah di dalam container yang sedang berjalan.mysql-container-test: Nama container tempat MySQL berjalan.mysqldump: Alat untuk mengekspor database di MySQL.-u totoraha: Username yang digunakan untuk mengakses MySQL.-p: Password akan diminta setelah menjalankan perintah.firtapps_db: Nama database yang ingin di-backup.> backup_firtapps_db.sql: File tempat menyimpan hasil backup.
Setelah perintah ini dijalankan, file backup_firtapps_db.sql akan berisi seluruh data dari database firtapps_db.
2. Import (Restore) Data ke MySQL
Untuk mengimpor data dari file backup ke dalam MySQL, gunakan perintah berikut:
- Pastikan container MySQL sedang berjalan dengan perintah:
docker ps - Gunakan perintah berikut untuk mengimpor data dari file
backup_firtapps_db.sqlke dalam MySQL:cat backup_firtapps_db.sql | docker exec -i mysql-container-test mysql -u totoraha -p firtapps_db
Penjelasan:
cat backup_firtapps_db.sql: Menampilkan isi file backup yang akan diimpor.docker exec -i: Menjalankan perintah di dalam container dengan input dari file.mysql-container-test: Nama container MySQL.mysql -u totoraha -p firtapps_db: Perintah untuk mengimpor data ke databasefirtapps_db. Password akan diminta setelah menjalankan perintah.
Data dari file backup_firtapps_db.sql akan diimpor ke dalam database MySQL.
Kesimpulan
Docker Compose memungkinkan pengelolaan MySQL yang lebih sederhana dan terstruktur. Dengan perintah docker exec, proses export dan import data MySQL dapat dilakukan secara langsung dari container tanpa perlu masuk ke dalamnya. Proses backup dan restore sangat penting untuk menjaga integritas data, terutama di lingkungan produksi.
Dengan langkah-langkah di atas, pengelolaan MySQL di Docker menjadi lebih mudah dan aman, serta memberikan fleksibilitas dalam menjaga dan memulihkan data.