สวัสดีครับ วันนี้เป็นการจดบันทึกไว้เตือนความจำ เกี่ยวกับแนวทางการแก้ปัญหาแบบหนึ่งครับ
โจทย์: ลูกค้า อยากได้ 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