Mediawiki Maintenance dumping database
Berikut versi yang **lebih benar, aman, dan rapi** untuk backup MediaWiki (DB + images). Saya perbaiki: urutan argumen `mysqldump`, pemakaian password (hindari terlihat di process list), opsi konsistensi (`--single-transaction`), charset, dan path file (di contoh Anda `file.xml` vs `wikidb.xml` belum konsisten).
Persiapan
mkdir -p /var/www/html/pustaka/datawiki chmod -Rf 777 /var/www/html/pustaka/ chown -Rf nobody: /var/www/html/pustaka/
Script backup (disarankan)
Simpan misalnya sebagai `backup-mediawiki.sh`:
#!/usr/bin/env bash
set -euo pipefail
# === KONFIG ===
DB_USER="mediawiki"
DB_PASS="mediawiki"
DB_NAME="mediawiki"
BACKUP_DIR="/var/www/html/pustaka/datawiki"
WIKI_IMAGES_DIR="/var/www/html/wiki/images"
TS="$(date +%F_%H%M%S)"
SQL_FILE="${BACKUP_DIR}/wikidb_${TS}.sql"
XML_FILE="${BACKUP_DIR}/wikidb_${TS}.xml"
IMG_TAR="${BACKUP_DIR}/images_${TS}.tar.gz"
SQL_TAR="${BACKUP_DIR}/wikidb_sql_${TS}.tar.gz"
XML_TAR="${BACKUP_DIR}/wikidb_xml_${TS}.tar.gz"
mkdir -p "$BACKUP_DIR"
# === BACKUP DB (SQL) ===
/usr/bin/mysqldump \
--user="$DB_USER" \
--password="$DB_PASS" \
--default-character-set=utf8mb4 \
--single-transaction \
--quick \
--routines --triggers --events \
--add-drop-table \
--databases "$DB_NAME" \
> "$SQL_FILE"
# === BACKUP DB (XML) ===
/usr/bin/mysqldump \
--user="$DB_USER" \
--password="$DB_PASS" \
--default-character-set=utf8mb4 \
--single-transaction \
--quick \
--xml \
"$DB_NAME" \
> "$XML_FILE"
# === BACKUP images/ ===
tar -czf "$IMG_TAR" -C "$(dirname "$WIKI_IMAGES_DIR")" "$(basename "$WIKI_IMAGES_DIR")"
# === Kompres file DB hasil dump (opsional, karena sql/xml sudah plain) ===
tar -czf "$SQL_TAR" -C "$BACKUP_DIR" "$(basename "$SQL_FILE")"
tar -czf "$XML_TAR" -C "$BACKUP_DIR" "$(basename "$XML_FILE")"
echo "OK:"
echo " - $SQL_FILE"
echo " - $XML_FILE"
echo " - $IMG_TAR"
echo " - $SQL_TAR"
echo " - $XML_TAR"
Cara pakai
chmod +x backup-mediawiki.sh ./backup-mediawiki.sh
Nanti `mysqldump` akan **minta password secara interaktif** (lebih aman daripada `-pwikipasswd` yang bisa kebaca dari `ps`).
Kalau Anda BUTUH non-interaktif (lebih aman pakai file .my.cnf)
Buat `/root/.my.cnf` (atau user yang menjalankan backup), permission harus ketat:
[client] user=wikiuser password=wikipasswd
Lalu:
chmod 600 /root/.my.cnf
Dan di script, hapus `--password` jadi:
/usr/bin/mysqldump --user="$DB_USER" ...
(atau bahkan tanpa `--user` karena dibaca dari `.my.cnf`)
Catatan penting perbaikan dari script Anda
- `-pwikipasswd` **kurang aman** (muncul di process list).
- Tambahkan `--single-transaction --quick` biar dump konsisten tanpa lock berat (InnoDB).
- Tambahkan `--routines --triggers --events` supaya lengkap.
- `-c` tidak wajib; lebih berguna `--add-drop-table`.
- Nama file XML Anda sebelumnya `file.xml` tapi ditar jadi `wikidb.xml` → saya samakan.
Kalau Anda pakai MariaDB/MySQL versi tertentu dan DB besar, saya bisa tambahkan opsi performa (mis. `--hex-blob`, `--set-gtid-purged=OFF`, atau split per table).