Difference between revisions of "Mediawiki Maintenance dumping database"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut versi yang **lebih benar, aman, dan rapi** untuk backup MediaWiki (DB + images). Saya perbaiki: urutan argumen `mysqldump`, pemakaian password (hindari terlihat di pro...")
 
Line 1: Line 1:
 
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).
 
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)==
 
==Script backup (disarankan)==
 +
  
 
Simpan misalnya sebagai `backup-mediawiki.sh`:
 
Simpan misalnya sebagai `backup-mediawiki.sh`:
Line 9: Line 16:
 
   
 
   
 
  # === KONFIG ===
 
  # === KONFIG ===
  DB_USER="wikiuser"
+
  DB_USER="mediawiki"
  DB_NAME="wikidatabase"
+
DB_PASS="mediawiki"
 +
  DB_NAME="mediawiki"
 
  BACKUP_DIR="/var/www/html/pustaka/datawiki"
 
  BACKUP_DIR="/var/www/html/pustaka/datawiki"
 
  WIKI_IMAGES_DIR="/var/www/html/wiki/images"
 
  WIKI_IMAGES_DIR="/var/www/html/wiki/images"
Line 27: Line 35:
 
  /usr/bin/mysqldump \
 
  /usr/bin/mysqldump \
 
   --user="$DB_USER" \
 
   --user="$DB_USER" \
   --password \
+
   --password="$DB_PASS" \
 
   --default-character-set=utf8mb4 \
 
   --default-character-set=utf8mb4 \
 
   --single-transaction \
 
   --single-transaction \
Line 39: Line 47:
 
  /usr/bin/mysqldump \
 
  /usr/bin/mysqldump \
 
   --user="$DB_USER" \
 
   --user="$DB_USER" \
   --password \
+
   --password="$DB_PASS" \
 
   --default-character-set=utf8mb4 \
 
   --default-character-set=utf8mb4 \
 
   --single-transaction \
 
   --single-transaction \

Revision as of 16:35, 18 January 2026

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