de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 trante
trante
Question

Skrip shell Linux untuk pencadangan basis data

Saya mencoba banyak skrip untuk pencadangan basis data tetapi saya tidak bisa melakukannya. Saya ingin mencadangkan database saya setiap jam.
Saya menambahkan file ke folder "/etc/cron.hourly/", mengubah chmod menjadi 755, tetapi tidak bisa berjalan. Setidaknya saya menulis kode pseudo saya.

Saya akan senang jika Anda dapat menulis skrip untuk operasi ini dan memberi tahu saya apa yang harus saya lakukan lebih lanjut? Setelah menambahkan file skrip ini ke folder /etc/cron.hourly/.

  • Dapatkan tanggal saat ini dan buat variabel, tanggal=tanggal(d_m_y_H_M_S)
  • Buat variabel untuk nama file, filename="$date".gz
  • Dapatkan dump dari database saya seperti ini mysqldump --user=my_user --password=my_pass --default-character-set=utf8 my_database | gzip > "/var/www/vhosts/system/example.com/httpdocs/backups/$("filename")
  • Hapus semua file di folder /var/www/vhosts/system/example.com/httpdocs/backups/ yang lebih lama dari 8 hari
  • Ke file "/var/www/vhosts/system/example.com/httpdocs/backup_log.txt", teks ini akan ditulis: Backup dibuat pada $("date")
  • Ubah pemilik file (chown) dari root ke "my_user". Karena saya ingin membuka file backup dan log dari akun FTP "my_user".
  • Saya tidak ingin ada email setelah setiap cron. >/dev/null 2>&1 akan ditambahkan.
38 2013-10-29T17:14:03+00:00 3
Pemrograman
cron
linux
shell
mysql
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 trante
trante
30 Oktober 2013 в 12:19
2013-10-30T12:19:20+00:00
Lebih
Sumber
Sunting
#22657266

Setelah berjam-jam bekerja, saya menciptakan solusi seperti di bawah ini. Saya copy paste untuk orang lain yang bisa mendapatkan manfaat.

Pertama-tama buatlah sebuah file script dan berikan file ini izin eksekusi.

# cd /etc/cron.daily/
# touch /etc/cron.daily/dbbackup-daily.sh
# chmod 755 /etc/cron.daily/dbbackup-daily.sh
# vi /etc/cron.daily/dbbackup-daily.sh

Kemudian salin baris-baris berikut ke dalam file dengan Shift+Ins

#!/bin/sh
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/var/www/vhosts/example.com/httpdocs/backups"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "mysqldump started at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 mydatabase | gzip > "$fullpathbackupfile"
echo "mysqldump finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown myuser "$fullpathbackupfile"
chown myuser "$logfile"
echo "file permission changed" >> "$logfile"
find "$backupfolder" -name db_backup_* -mtime +8 -exec rm {} \;
echo "old files deleted" >> "$logfile"
echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0

Edit: Jika Anda menggunakan InnoDB dan pencadangan membutuhkan waktu terlalu lama, Anda dapat menambahkan "transaksi tunggal" argumen untuk mencegah penguncian. Jadi baris mysqldump akan seperti ini:

mysqldump --user=mydbuser --password=mypass --default-character-set=utf8
          --single-transaction mydatabase | gzip > "$fullpathbackupfile"
 Sinan
Sinan
Jawaban edit 5 Desember 2017 в 4:38
94
0
Peter  Party Bus
Peter Party Bus
29 Oktober 2013 в 5:26
2013-10-29T17:26:31+00:00
Lebih
Sumber
Sunting
#22657265

Buat skrip yang mirip dengan ini:

#!/bin/sh -e

location=~/`date +%Y%m%d_%H%M%S`.db

mysqldump -u root --password=<your password> database_name > $location

gzip $location

Kemudian Anda dapat mengedit crontab pengguna yang akan menjalankan skrip tersebut:

$> crontab -e

Dan tambahkan entri

01 * * * * ~/script_path.sh

Ini akan membuatnya berjalan pada menit pertama setiap jam setiap hari.

Kemudian Anda hanya perlu menambahkan gulungan Anda dan fungsi lainnya dan Anda siap untuk pergi.

 perror
perror
Jawaban edit 14 Februari 2014 в 9:22
31
0
 Shal
Shal
4 Mei 2015 в 7:58
2015-05-04T07:58:39+00:00
Lebih
Sumber
Sunting
#22657268
#!/bin/bash

# Add your backup dir location, password, mysql location and mysqldump        location
DATE=$(date +%d-%m-%Y)
BACKUP_DIR="/var/www/back"
MYSQL_USER="root"
MYSQL_PASSWORD=""
MYSQL='/usr/bin/mysql'
MYSQLDUMP='/usr/bin/mysqldump'
DB='demo'

#to empty the backup directory and delete all previous backups
rm -r $BACKUP_DIR/*  

mysqldump -u root -p'' demo | gzip -9 > $BACKUP_DIR/demo$date_format.sql.$DATE.gz

#changing permissions of directory 
chmod -R 777 $BACKUP_DIR
0
0
Related communities 4
MySQL & MariaDB Indonesia
MySQL & MariaDB Indonesia
8 283 pengguna
Group belajar, diskusi, dan berbagi tentang DBMS MySQL dan MariaDB. Disclaimer: This group is not in any affiliation nor maintained by Oracle or www.mysql.com.
Buka telegram
Belajar GNU/Linux Indonesia
Belajar GNU/Linux Indonesia
7 144 pengguna
Komunitas GNU/Linux Indonesia di Telegram, baca peraturan group di: telegra.ph/Peraturan-BGLI-03-07 Member baru perlu membalas kode verifikasi, jika tidak terverifikasi dalam 5 menit maka pesan akan terhapus dan akan dikeluarkan dari group untuk menguran
Buka telegram
Deepin Linux Indonesia
Deepin Linux Indonesia
550 pengguna
ℹ️ Selamat datang di Grup Telegram Deepin Linux Indonesia ! Grup linux 📎 Pop!_OS: @pop_linux Channel 📎 Void: @void_time Group Programming 📎 Alpine.js: @alpinejsid 📎 Rust: @rust_community 📎 Go: @go_community
Buka telegram
Pop!_OS Linux Indonesia
Pop!_OS Linux Indonesia
92 pengguna
Komunitas pengguna Pop!_OS seindonesia Grup linux 📎 Deepin: @deepin_indonesia Channel 📎 Void: @void_time Group Programming 📎 Alpine.js: @alpinejsid 📎 Rust: @rust_community 📎 Go: @go_community
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 7 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 6 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi