0192 | ตั้งค่าการ backup ของ bacula (ซักที)

Thursday, September 18th, 2014 Posted in Linux | No Comments »

หลังจากลง software ครบหมดแล้วก็ได้เวลาสั่งให้ bacula backup ข้อมูลกันจริงๆ จังๆ แล้วครับ หลังจากนี้ก็อยู่ที่เครื่อง director อย่างเดียวแล้วครับ ไม่ต้องไปไหนแล้ว (ยกเว้นเพิ่มเครื่อง storage หรือ client ก็ไปลงตามขั้นตอนการตั้งค่าแต่ละอันอีกที)

ในการนี้ แนะนำให้สร้างไฟล์ใหม่ขึ้นมา 1 file เป็นชื่อ /etc/bacula/clients/clientname.conf (แทนที่ clientname เป็นชื่อ client นะครับ) เริ่มทีละขั้นนะครับ

เชื่อมต่อ director หา client

Client {
  Name = bclient1
  Address = 192.0.2.1
  FDPort = 9102
  Catalog = MyCatalog
  Password = "bacula-dir-fd"
  File Retention = 30 days
  Job Retention = 2 months
  AutoPrune = yes
}

Name กับ Password ตั้งให้ตรงกับที่ในฝั่ง Client นะครับ แล้วก็แก้ IP ให้ถูกด้วย (ความจริงเค้าแนะนำให้ตั้งเป็น dns name นะ)

ตั้งพื้นที่เก็บข้อมูล

Pool {
  Name = bclient1-pool
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 60 days
  Maximum Volume Bytes = 50G
  Maximum Volumes = 20
  LabelFormat = "bclient1-"
}

แนวคิดมันคือการเตรียมพื้นที่สำหรับการเก็บ backup ครับ โดยแบ่งเป็น volume (image file) ขนาดไฟล์ไม่เกิน Maximum Volume Bytes และมีได้ไม่เกิน Maximum Volumes ไฟล์ จากตัวอย่างคือกันพื้นที่ไว้ 1TB (เอาจริงๆ กันไว้เยอะไปนะ 555) และตัวมันเองจะบันทึกแบบกล้องวงจรปิดครับ คือพอเต็มปุ๊ปมันจะไปลบไฟล์อันที่เก่าสุดออกจากระบบ แต่ไม่ต้องกลัวมันลบมั่วนะครับ ถ้าไฟล์เก่าสุดยังต้องใช้ในการ restore อยู่มันจะไม่ลบ แล้วเมลมาด่าว่าพื้นที่เต็มแทน (ฮา)

ตั้งรายการ file ที่จะ backup

ตลกนิดหน่อยตรงที่มันมาตั้งที่ director นี่แหละครับ

FileSet {
  Name = "PleskHostingData"
  Include {
    Options {
      signature = SHA1
      onefs = no
      noatime = yes
      compression = GZIP
    }
    Options {
      RegexDir = "^/var/www/vhosts/system/.*/logs"
      RegexDir = "^/var/www/vhosts/.*/logs"
      RegexDir = "/wp-content/cache/"
      exclude = yes
    }
    File = /etc
    File = /var/www/vhosts
    File = /var/qmail/mailnames
    File = /var/backup/mysql
  }
}

ตัวอย่างนี้เป็นการตั้งค่า backup ของ plesk ครับ โดยข้ามไฟล์ log ทั้งหมด เก็บไฟล์เฉพาะส่วนของเว็บ และอีเมลลูกค้า แล้วไปเอาไฟล์จาก database ที่ backup แยกไว้มารวมด้วย

ตั้งเวลา backup อัตโนมัติ

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 00:05
  Run = Differential 2nd-5th sun at 00:05
  Run = Incremental mon-sat at 00:05
}

เครื่องมือ backup จริงๆ มันต้อง backup อัตโนมัติได้จริงมั้ยครับ และที่สำคัญ ไฟล์ต้องสมบูรณ์และเข้าถึงได้เร็วพอด้วยไม่งั้นก็ไม่รู้จะ backup ไปทำไมในเมื่อ restore ไม่ได้ เพราะงั้นเลยแบ่งการ backup ออกเป็น 3 ขั้นครับ

  1. backup เต็มรูปแบบทุกวันอาทิตย์แรกของเดือน ตอน 00.05 น.
  2. backup แบบ differential เทียบกับตัว full ทุกวันอาทิตย์ครั้งที่ 2 ถึง 5 ของเดือน (เดือนนึงคงมีวันอาทิตย์ได้ไม่เกิน 5 ครั้ง ครั้งแรก backup full ครั้งที่ 2 diff)
  3. backup แบบ incremental วันอื่นๆ

เผื่อใครจะลืม backup แต่ละแบบต่างกันยังไงดูได้ที่วิธีติดตั้ง bacula ครับ

ประกาศงาน backup

อันนี้เป็นการสร้างการ backup จริงๆ แล้วครับ จะมี 2 ส่วนคือประกาศวิธีการ backup กับประกาศการ backup เอง ประมาณนี้

JobDefs {
  Name = "bclient1-jobdefs" # ตั้งเอาเองได้เลยครับ ให้ตรงกับด้านล่าง
  Type = Backup
  Level = Incremental
  Client = bclient1 # ระบุชื่อ client ที่จะ backup
  FileSet = "PleskHostingData" # ระบุชื่อ FileSet ตามด้านบน
  Schedule = "WeeklyCycle" # ระบุชื่อ Schedule ตามด้านบน
  Storage = bacula-sd # ระบุชื่อ Bacula Storage Server ตามที่ได้ config ไว้
  Messages = Standard
  Pool = bclient1-pool # ระบุชื่อ Pool ตามด้านบน
  Priority = 10
  Write Bootstrap = "/var/spool/bacula/%c.bsr"
}

Job {
  Name = "bclient1-backup"
  JobDefs = "bclient1-jobdefs" # ตรงกับ Name ของ JobDefs ด้านบน
}

ประกาศงาน restore

มีงานสำหรับ backup ก็ต้องมีสำหรับ restore ครับ จริงๆ เป็นค่าที่ตั้งไว้รอเฉยๆ เผื่อเรียกใช้จะได้สะดวก

Job {
  Name = "bclient1-restore"
  Type = Restore
  Client = bclient1 # ระบุชื่อ client ปลายทางที่จะให้ restore ไป
  FileSet = "PleskHostingData" # รายการไฟล์
  Storage = bacula-sd # ที่เก็บข้อมูล ว่าไปอ่านมาจากไหน
  Pool = Default
  Messages = Standard
  Where = /tmp/bacula-restores # folder ปลายทางที่จะให้ restore ให้ (สมมติ backup จาก /var/www ไฟล์จะไปอยู่ใน /tmp/bacula-restores/var/www เป็นต้น)
}

เสร็จแล้วครับ !!!!


ข้ามไปยัง

Tags: ,

0191 | ตั้งค่า Bacula Client

Wednesday, September 17th, 2014 Posted in Linux | No Comments »

ฝั่ง client ก็ไม่มีอะไรซับซ้อนครับ คล้ายๆ กับตัว storage ที่ได้ config ไปแล้วเลยครับ

config หลักจะอยู่ที่ /etc/bacula/bacula-fd.conf ครับ เปิดมาหน้าเดียวจบทุกสิ่งอัน

ประกาศตัวเอง

FileDaemon {
  Name = bclient1
  FDport = 9102
  WorkingDirectory = /var/spool/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

จดชื่อตรง Name ไว้นะครับ (ในที่นี้ตั้งเป็น bclient1) เดี๋ยวจะต้องเอาไปใช้ตอนตั้งค่าการ backup ในขั้นตอนถัดไปครับ

เชื่อมกับ Director

Director {
  Name = bacula-dir
  Password = "bacula-dir-fd"
}

อันนี้ตั้ง Name ให้ตรงกับฝั่ง Director ในส่วนของ Director {} นะครับ ส่วน Password เป็นรหัสผ่านเชื่อมระหว่าง Director และ Client ครับ ตั้งแล้วจดเอาไว้ เดี๋ยวไปใช้ในขั้นตอนต่อไปเหมือนกันครับ

ตั้งค่าส่ง log ไปหา director

Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}

แก้ชื่อ Director ให้ตรงกับชื่อของ director ที่ตั้งไว้เหมือนตอนตั้งค่า storage ครับ (ง่ายสุดคือไม่ต้องแก้ตั้งแต่ต้น)

จบอย่างรวดเร็ว เดี๋ยวจะเข้าสู่ส่วนที่ยากที่สุดของการตั้งค่า bacula แล้วครับ :)


ข้ามไปยัง

Tags: ,