Men ispmanagerdan foydalanishdan butunlay voz kechishga qaror qildim, chunki u resurslarni oladi va faqat bitta narsa uchun ishlatiladi - ma'lumotlar zahirasi. Biroq, bu shaxsan amalga oshirilishi mumkin, chunki o'nta sayt uchun panelni panelga qo'yish umuman mantiqiy emas.
Shuning uchun birinchi vazifa mysql ma'lumotlar bazalarining zaxira nusxalarini yaratishdir. Bazalar hajmi kichik, shuning uchun zahiralarning eng oddiy versiyasi - arxiv yaratish va ma'lum bir server papkasida joylashtirish uchun ishlatiladi.
Albatta, sftp zaxira nusxasini boshqa ma'lumot markazidagi boshqa serverga (va u allaqachon mavjud bo'lgan mamlakatga) jo'natish yanada xavfsizroq bo'ladi, lekin mening saytlarim oyda bir necha marta o'zgarib, har ikki kunda nusxalarni yuklab olish qiyin emas ish bilan. :)
Shu paytgacha Bashda skriptlarni yozishda tajribam yo'q edi. Biroq, server boshqaruvi haqida turli xil saytlarda mysql zaxira buyruqlarining ko'plab misollari hisobga olingan holda, uni tushunish qiyin emas edi.
Mysqlbackup.sh skriptining o'zi:
#! / bin / bash # o'zgarmaydiganlarni ishga tushiring TMPDIR = "sqlfiles" BACKUPDIR = "/ storage" USER = "root" PASS = "xxx" TIMEY = $ (sana +% Y-% m-% d) # agar [! -d "$ BACKUPDIR"]; keyin mkdir -m 0700 "$ BACKUPDIR" fi # agar vaqtinchalik katalog mavjudligini tekshiring [! -d "$ BACKUPDIR / $ TMPDIR"]; mkdir -m 0700 "$ BACKUPDIR / $ TMPDIR" fi # ma'lumotlar bazasi uchun "$ BACKUPDIR / $ TMPDIR" diskining nusxalarini `mysql -s -r -e SHOW DATABASES '| grep -v ma'lumotlar bazasi | grep -v information_schema | grep -v performance_schema | grep -v mysql`; "$ TIMEY" .tbz2 "$ TMPDIR" chmod 0600 ma'lumotlar bazalari - "$ TIMEY" .tbz2 # Vaqtinchalik papkani o'chirish rm - $ mysqldump $ database> $ database.sql; bajarildi # "$ BACKUPDIR" r $ TMPDIR echo "Ma'lumotlar bazalari saqlanadi!" chiqish 1
Mysql bilan ishlash to'g'ridan-to'g'ri ildiz foydalanuvchisidan amalga oshiriladi, chunki u bir vaqtning o'zida barcha ma'lumotlar bazalariga kirish imkoniyatiga ega.
Ma'lumotlar bazasi information_schema , mysql , performance_schema zaxiradan chiqarib tashlandi. Keyinchalik barcha ma'lumotlar bazalari bzip2-arxivga joylashtiriladi va undan so'ng ularni yuklab olish mumkin bo'lgan ma'lum bir papkada saqlanadi.
Skriptni kuniga bir marta bajarish vazifasi Cron schedulerida, masalan, ertalab birida yoziladi.
00 01 * * * sh ~ / mysqlbackup.sh
To'g'ri e-pochta toj sozlamalarida o'rnatilsa, saqlangan ma'lumotlar bazalari ro'yxatga olinadigan pochta bo'limiga xabar yuboriladi.
PS Bundan tashqari, kuniga bir necha marta zahira nusxalarini yaratishingiz mumkin. Buni amalga oshirish uchun, faylning ustiga yozilmaganligi uchun arxiv nomidagi yaratilish vaqtini ko'rsatishingiz kerak.
Skriptdagi hech narsa hech qachon mysql parolini ishlatmaydi
To'g'ri, o'tkazib yuborilgan vaqt. Lekin faqat .my.cnf faylini o'zimning asosiy ildiz papkasida ishlatganim uchun. Ushbu formatda ro'yxatdan o'tgan login va parol mavjud:
Buni ilgari lavozimga qo'shishingiz kerak edi. :)
Rahmat, my.cnf haqida bilib oldim :)
Mumkin bo'lgan kelishi mumkin bo'lgan dastur variantim:
https://github.com/wdda/backupper_mysql