
چگونه دیتابیس SQL Server را در داکر بازیابی کنیم؟
بازیابی دیتابیس در داکر از مباحث مهم در بخش Back Up گیری در SQL Server است. در این مقاله قصد داریم درمورد نحوه بازیابی (Restore) دیتابیس در داکر صحبت کنیم. بهبیاندیگر تصمیم داریم بگوییم که چطور میتوان SQL Server نصبشده روی داکر را بازیابی کرد که روی ویندوز و سیستمعامل لینوکس کار میکند.
نصب دیتابیس
بهعنوان پایگاه داده نمونه از دیتابیسی استفاده کردیم که مایکروسافت دیتابیس نمونه آن را در گیت هاب (GitHub) به اشتراک گذاشته است. در خصوص دیتابیس نمونه میتوانید از لینک زیر اقدام به دانلود کنید.
https://github.com/Microsoft/sql-server-samples/releases/
جهت انجام عملکردهایمان روی ویندوز سرور:
- یک دیتابیس نمونه را در دایرکتوری سرور دانلود کردیم (بهعنوانمثال: C:SQL Backup)
- پس از پایان دانلود وضعیت کانتینر (container) را با پاور شل (PowerShell) بررسی میکنیم. اگر فعال نبود شروع میکنیم. جهت کنترل، از فرمان “docker ps – a”استفاده میکنیم. چنانچه پارامتر “-a”به ما فهرستی از کانتینرهایی میدهد که راهاندازی نمیشوند، ما کانتینر را با فرمان “docker start DockerID” راهاندازی میکنیم.در اینجا کانتینر ما به نام WinDockerSQL فعال است.
- پس از فعال کردن کانتینر نیاز به ایجاد مسیری است که بکآپ فایل به کانتینر انتقال یابد. به این منظور ابتدا پاور شل (PowerShell) روی کانتینر را راهاندازی میکنیم و یک فولدر ایجاد میکنیم.
docker exec -it WinDockerSQL powershell
پس از اینکه صفحه پاور شل (PowerShell) بالا آمد بهکمک گزینه ”Get-Location” موقعیت را بررسی میکنیم.
در این قسمت یک فولدر به نام DockerSQLBACKUP در دایرکتوری c ایجاد میکنیم. افراد علاقهمند میتوانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئرینویسی گسترش دهند.
New-Item -ItemType directory -Path C:DockerSQLBACKUP
اکنون ما فولدر را ایجاد کردیم و باید بکآپ دیتابیس C:SQLBackup را که روی ویندوز سرور دانلود کرده
docker cp C:SQLBACKUPAdventureWorks2017.bak WinDockerSQL:/C:/DockerSQLBACKUP
در واقع با کد بالا فایل را از این محل به جایی که در داکر مسیر دادهایم، کپی میکنیم.
اینک بکآپ دیتابیس تمام شده است و با اجرای فرمان “docker inspect” میتوان به IP address در SQL سرور دسترسی یافت.
سپس روش کلاسیک بازیابی دیتابیس را اجرا میکنیم.
همانگونه که ملاحظه میکنید یک فولدر DockerSQLBACKUP بکآپ در دایرکتوری C و نیز یک بکآپ دیتابیس به نام AdventureWorks2017 موجود است که آن را دانلود و کپی کردهایم. در نتیجه ما بکآپ دیتابیس را به کانتینری انتقال دادیم که در آن SQL سرور ۲۰۱۷ در داکر نصب شده و روی سیستمعامل ویندوز سرور ۲۰۱۶ راهاندازی کردیم. همجنین شما میتوانید کوئری نویسی را به صورت گامبهگام با استفاده از دورههایی که برای شما تهیه کردهایم میتوانید از نیک آموز فرا بگیرید.
جهت اجرا روی لینوکس:
از دستورات ذیل در ویندوز استفاده میکنیم.
- ابتدا لازم است بکآپ دیتابیس را در لینوکس دانلود کنیم.
قبل از دانلود کردن با “pwd” بررسی میکنیم که در کدام دایرکتوری در لینوکس هستیم؛ بهعنوانمثال در اینجا ما در دایرکتوری “/home/cozenc” هستیم.
<table class="crayon-table"><tr class="crayon-row"><td class="crayon-code"><div class="crayon-pre"><div class="crayon-line" id="crayon-638db5f0aed7d743610513-1">[code]wget ‘<a href="https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak">https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2017.bak</a>
- لازم است یک فولدر در کانتینر ایجاد کنیم که فایل بکآپ دیتابیس را به آن انتقال دهیم. درواقع در این مرحله ابتدا باید به کانتینر دسترسی داشته باشیم.
sudo docker exec -it DockerSQL bash
جهت ایجاد فولدر در بازیابی دیتابیس در داکر
mkdir -p /var/opt/mssql/backup
- زمانی که مرحله ایجاد فولدر به پایان رسید، باید بکآپ دیتابیس را که در لینوکس دانلود کردیم، به کانتیتر انتقال دهیم.
sudo docker cp /home/cozenc/AdventureWorks2017.bak DockerSQL:/var/opt/mssql/backup
- اکنونکه کپی دیتابیس به اتمام رسید، میتوان اقدام به بازیابی کرد. این مرحله شبیه روش بازیابی کلاسیک است.
میتوان از طریق لینوکس به sqlcmd دسترسی داشت یا اینکه ریموت IP از طریق SSMS (مدیریت پایگاه داده SQL) صورت گیرد. من از طریق برقراری ارتباط با SSMS. (مدیریت پایگاه داده SQL) و ریموت IP توانستم پروسه بازیابی کلاسیک را اجرا کنم.
سخن پایانی
بازیابی دیتابیس در داکر مبحث مهمی در Backup گیری از اطلاعات در SQL Server است. همچنین بخشهایی که در داخل عکس با عبارت “d32bcf0bcc21”نشانهگذاری شده، اطلاعات (DockerID) هستند. میتوانید از طریق فرمان ps، مسیر بکآپ و بکآپ دیتابیس که در مسیر قرار دادهایم، به این اطلاعات دسترسی پیدا کنید. پس از پایان پروسه بازیابی میتوان اطلاعات ذیل را پس از کنترل آن با SSMS. (مدیریت پایگاه داده SQL) مشاهده کرد. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.