[Azure] — How to create database snapshot daily by DevOps

RootFy22
3 min readJul 3, 2021

สวัสดีครับ วันนี้เป็นการจดบันทึกไว้เตือนความจำ เกี่ยวกับแนวทางการแก้ปัญหาแบบหนึ่งครับ

โจทย์: ลูกค้า อยากได้ database เอาไว้รันรายงาน โดยใช้ข้อมูลที่ใกล้เคียงกับ production database ทุกวัน เพราะไม่ต้องการจะให้กระทบ performance บน production database เวลาที่รันรายงานเยอะๆ

สิ่งที่ลูกค้ามี

  • Azure SQL database
  • Azure storage account
  • Azure pipeline
  • Microsoft Teams

ผมจึงนำเสนอ solution ดังนี้

ขั้นแรกให้เตรียม component ดังนี้

  • สร้าง service connection
  • หา storage account key
  • สร้าง variable group
  • สร้างไฟล์ Azure pipeline yml
  • สร้างไฟล์ Powershell (.ps1)
  • Microsoft Teams Channel

สร้าง service connection

หา storage account key

สร้าง variable groups

  • azure.db.server = ชื่อ server ของฐานข้อมูล
  • azure.db.source= ชื่อฐานข้อมูลหลัก
  • azure.db.destination=ชื่อฐานข้อมูลปลายทาง
  • azure.db.plan=แผนการใช้งานของฐานข้อมูล Basic, S0, S1 หรือ ฯลฯ
  • azure.subscription.prod=ชื่อของ service connection
  • azure.group.prod = resource group name
  • azure.db.login = ชื่อผู้ใช้เข้าระบบฐานข้อมูล
  • azure.db.password = รหัสผ่านเข้าระบบฐานข้อมูล
  • azure.storage.key = key ของ storage account
  • azure.storage.key.type = StorageAccessKey
  • azure.storage.uri = ชื่อ folder URL ของ storage account
  • azure.storage.container.name = ชื่อ folder
  • azure.storage.connection = connection string ของ storage account
  • azure.storage.file = ชื่อไฟล์ที่อยากเก็บ
  • powershell.file = AzurePipelines/create-snapshot-db.ps1
  • msteams.webhook = URL ของ incoming webhook.

สร้าง ไฟล์ azure-pipelines.yml

สร้างไฟล์ Powershell

สร้าง Incoming webhook

ถ้ารันสำเร็จก็จะมี ข้อความเข้าที่ ms teams channel ที่เราตั้งค่าไว้นะครับผม

สามารถตรวจสอบตาราง การรันได้จาก หน้าจอนี้ครับ

สุดท้ายผมหวังว่าจะเป็นไอเดีย ให้กับใครหลายๆคนที่ประสบปัญหาเดียวกันกับผมนะครับผม ขอบคุณที่ติดตาม แล้วพบกันใหม่
Happy coding.

Reference

--

--