Mediawiki Maintenance dumping database

From OnnoWiki
Jump to navigation Jump to search

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).

Pranala Menarik