Difference between revisions of "Mediawiki Maintenance dumping database"
Onnowpurbo (talk | contribs) (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...") |
Onnowpurbo (talk | contribs) |
||
| (One intermediate revision by the same user not shown) | |||
| 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=" | + | DB_USER="mediawiki" |
| − | DB_NAME=" | + | 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 \ | ||
| Line 97: | Line 105: | ||
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). | 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== | ||
| + | |||
| + | * [[mediawiki]] | ||
Latest revision as of 16:36, 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).