SQL Server On Linux(3)——SQL Server 2019 For Linux 下載並部署示例資料庫
接上文SQL Server On Linux(2)——SQL Server 2019 For Linux安裝過程細節研究
正所謂工欲善其事必先利其器,讀者可能也跟作者一樣很迫切希望瞭解和嘗試SQL Server On Linux及SQL 2019的各種新特性,不過為了走得更遠,並且少踩坑,作者還是建議先把路踏踏實實地鋪好。當我們有一個可用的環境之後,不妨先把示例資料庫準備好。
很多人應該知道,使用時間最長的微軟示例資料庫是AdventureWorks,目前這個資料庫已經更新到2017版,另外還有幾個特殊的示例資料庫,不過這裡暫時還是使用AdventureWorks做演示。
接下來作者打算演示的方式有以下3種,本文使用前兩種(第三種以後演示),讀者可以按照實際需要選擇更合適自己的方式:
- 直接下載到Linux伺服器。
- 下載到Windows機器然後傳到Linux上。
- 使用SQL Server AlwaysON技術進行資料庫遷移。(暫時不演示)
首先來演示較為方便並且也是官方推薦的方式,先下載到Windows再傳到Linux。說明一下,由於Linux的許可權控制比Windows更嚴格,所以除非你用root操作,不然可能期間會出現很多許可權不足的情況,需要提前授權。通常來說,我們需要對作業系統的檔案系統(Windows叫碟符/資料夾)進行規劃,有些內容是建議專用的。比如專用的檔案(比如指令碼、工具)存放目錄、專用的備份檔案存放目錄、生產庫的資料庫檔案存放目錄,建議不要使用預設設定,而是專門建立目錄來存放。相關內容放到後續章節再詳解。
一般需要授權的地方有:Linux上存放Windows傳輸過來的檔案的目錄、在Linux上實際存放備份的目錄、還原/附加後資料庫檔案所在的目錄。
Windows→Linux
這個方式不僅適用示例資料庫,幾乎所有的檔案傳輸都可以使用,畢竟作為非伺服器使用時,Windows更便捷。在過去,微軟的示例資料庫可以從CodePlex網站上下載,但是從AdventureWorks2014開始,已經移到github中。下載地址可以訪問:https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks 。因為這裡演示的是Windows的下載,所以我們直接下載即可,這個就不演示了。本文選擇AdventureWorks2017.bak做演示。因為這個檔案是放在亞馬遜雲上,所以國內下載比較麻煩,作者需要點好多次才能下載。
因為Windows和Linux之間不能像純Windows機器那樣使用UNC直接訪問,所以需要工具,官方的方式比較麻煩,作者嘗試了WinSCP感覺方便很多。WinSCP下載地址:https://winscp.net/eng/index.php ,簡單安裝完之後,開啟登入介面,輸入Linux登入資訊:
登入成功後,會看到類似下圖的樣子,下圖是已經直接定位到檔案所在碟符(左邊是Windows)及目標檔案目錄(右邊為Linux目錄):
在圖中直接把滑鼠選中檔案然後拉過去就可以實現傳輸。傳輸完成後,用ls命令檢視/tmp目錄,可以看到檔案已經存放完成,下圖是傳輸前後的對比:
在正式環境下,應該先合理規劃各種目錄再進行,但是這裡先簡化這些內容,在後面伺服器管理章節再詳解。
前面的SQL Server On Linux(1)——CentOS 7 安裝SQL Server2019中提到,sql server on linux的預設資料庫檔案目錄在/var/opt/mssql/data下,我們可以直接還原到這裡,注意在本系列過程中絕大部分操作是使用root進行,所以許可權問題很少,但是如果在生產環境,那麼就需要進行許可權控制。秉著前期簡化的目的,作者儘量選擇簡單的方式去實現一些並非非常必要的操作。所以這裡使用SQL Server On Linux(1)——CentOS 7 安裝SQL Server2019提到的SQL Operations Studio來進行還原,當然也可以使用熟悉的SSMS來操作:
進行還原,這個步驟跟SSMS幾乎一樣:
還原成功後,在SQL Server On Linux的預設資料檔案目錄下可以看到已經有新資料庫的mdf和ldf檔案:
到目前為止,已經實現了示例資料庫的還原,接下來我們演示一下直接在Linux上進行操作。
Linux上直接部署
為了做對比,這次換另外一個示例資料庫AdventureWorksLT2017.bak進行:
Linux的命令列操作跟Windows有很明顯的區別,你很難進行簡單的滑鼠點選來完成操作,所以我們需要得到檔案的下載連結,並且確保已經安裝了可用的Linux下載檔案命令(一般使用wget,但是作者使用的CentOS 7 沒有自帶,所以使用yum install wget來安裝)。在Windows網頁中點選所需的檔案,根據瀏覽器和下載軟體的不同可能會直接開始下載或者彈出下載對話方塊進行操作,總之,我們的目標是獲取實際下載連結。
在下載過程中,發現出現拒絕訪問的情況,根據經驗,作者把github在離中國最近(目前知道是新加坡)的ip地址加進伺服器的/etc/hosts中:
然後進行下載,下載過程使用命令:
wget -O /tmp/AdventureWorksLT2017.bak "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorksLT2017.bak"
下載過程如下圖:
下載完成後,在/tmp目錄下可以看到備份檔案:
然後把資料庫還原:
對於本系列後續可能使用到的新資料庫,可以用以上兩種方式來獲取。在本文中,作者使用的是最最簡單的方式,所以有很多操作是沒有表現出來。比如把檔案從Windows放到Linux的一個臨時目錄,然後使用mv命令把檔案移到專用的備份檔案存放目錄。還有對應的授權命令等等。這些在後續過程或多或少會演示,讀者可以先掌握最簡單的方式,免得進度太慢影響激情。
總結
本文演示瞭如何在Windows和Linux上下載並部署微軟示例資料庫AdventureWorks到Linux上的SQL Server中,這是一個環境準備過程,目的是為了後續研究之用。
接下來繼續進行基礎配置,分別是Linux的初步配置(畢竟是基石)和SQL Server初步配置。要注意配置跟優化類似,沒有真正的“一勞永逸”,只有具體情況具體分析才是最好的方式。