[SQL][Linux]SQL Server 2019 ON Azure Linux VM

整理一下透過 Azure VM 安裝 SQL Server 2019 搭配 CentOS 7 的安裝過程

這一篇算是自己的筆記,把這幾天練習安裝 Linux 版本的 SQL Server 2019 做個紀錄,免得忘記相關步驟。

1. 透過 PowerShell Script 來建立 CentOS 7 的 VM

#PS Azure:\> Get-AzVMImage -Location EastAsia -PublisherName OpenLogic -Offer CentOS -Skus 7.7
#
#Version      FilterExpression Skus Offer  PublisherName Location
#-------      ---------------- ---- -----  ------------- --------
#7.7.20190920                  7.7  CentOS OpenLogic     eastasia
#7.7.20191209                  7.7  CentOS OpenLogic     eastasia

$resourceGroup = "TESTSQL" 
$location = "EastAsia"
$vmname = "TESTSQL"

# 建立資源群組
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

# 建立可允許連線規格
$sshRule = New-AzNetworkSecurityRuleConfig -Name ssh-rule -Description "Allow SSH" `
   -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 `
   -SourceAddressPrefix Internet -SourcePortRange * `
   -DestinationAddressPrefix * -DestinationPortRange 22

$tdsRule = New-AzNetworkSecurityRuleConfig -Name tds-rule -Description "Allow TDS" `
   -Access Allow -Protocol Tcp -Direction Inbound -Priority 200 `
   -SourceAddressPrefix Internet -SourcePortRange * `
   -DestinationAddressPrefix * -DestinationPortRange 1433


# 建立安全性群組
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup `
  -Location $location -Name $vmname"-NSG" -SecurityRules $sshRule,$tdsRule


# 設定子網路參數
$subnet = New-AzVirtualNetworkSubnetConfig -Name $vmname"-vmSubnet" `
    -AddressPrefix "10.0.1.0/25" -NetworkSecurityGroup $nsg -WarningAction SilentlyContinue

# 建立虛擬網路
$vnet = New-AzVirtualNetwork -Name $vmname"-VNet" -ResourceGroupName $resourceGroup `
    -Location $location -AddressPrefix "10.0.1.0/24" -Subnet $subnet `
    -WarningAction SilentlyContinue

# 建立公用 IP
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location  `
  -Name $vmname"-ip" -AllocationMethod Static -DomainNameLabel testvm20191124

# 建立虛擬網卡
$nic = New-AzNetworkInterface -ResourceGroupName $resourceGroup -Location $location  `
  -Name $vmname"-nic" -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

# 建立認證資料
$pwd='P@55w.rd123321'| ConvertTo-SecureString -Force -AsPlainText # 密碼
$cred=New-Object PSCredential("vmadmin",$pwd)

# 設立 VM 相關參數
$vmConfig = New-AzVMConfig -VMName $vmname"-vm" -VMSize Standard_DS2_V2 
$vmConfig | Set-AzVMOperatingSystem -ComputerName $vmname"SQL" -Credential $cred -Linux 
$vmConfig | Set-AzVMSourceImage -PublisherName OpenLogic -Offer CentOS -Skus 7.7 -Version latest
$vmConfig | Add-AzVMNetworkInterface -Id $nic.Id 
$vmConfig | Set-AzVMBootDiagnostic -Disable 
$vmConfig | Set-AzVMOSDisk -Name $vmname"-osdisk" -Caching ReadWrite -StorageAccountType "Standard_LRS" -CreateOption FromImage 

# 建立 VM
New-AzVM  -ResourceGroupName $resourceGroup -Location $location  `
 -VM $vmConfig -AsJob

 

2. 增加資料磁碟用來放資料庫檔案

$resourceGroup = "TESTSQL"# 資源群組
$location = "EastAsia"    # 區域
$diskcount = 1            # VM 數量  

# 設定資料磁碟的規格
$diskconfig = New-AzDiskConfig -Location $location -DiskSizeGB 64 -AccountType Standard_LRS -CreateOption Empty 

$allvms = Get-AzVM -ResourceGroupName $resourceGroup

foreach ($vm in $allvms) {
    $name = $vm.Name.SubString(0,$vm.Name.Length-3) 

    for($i = 0; $i -lt $diskcount  ; $i++)  
    {
        $diskname = $name + '-datadisk' + ([string]$i).PadLeft(2,'0')
        $disk = New-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $diskname -Disk $diskconfig    
        $vm = Add-AzVMDataDisk -VM $vm -Name $diskname -CreateOption Attach -ManagedDiskId $disk.Id -Lun $i -Caching ReadWrite   
    }    
    Update-AzVM -VM $vm -ResourceGroupName $vm.ResourceGroupName -AsJob
}

 

3. 連線到 VM 內,格式化資料磁碟

    a. 利用 「ls /dev/sd* -al」找到新增的磁碟,並且利用 fdisk 確認該磁碟目前還沒有切割 partition

    b. 利用 fdisk 切割 partition

    c. 確認一下新的 Partition 的名稱

    d. 利用 mkfs 將新的 partition 給格式化成為 xfs 的格式 ( 也可以指定為 ext4 )

    e. 利用 blkid 確認磁碟的 UUID 值

    e. 利用 vi 編輯 /etc/fstab 的檔案,將新的磁碟掛在 /var/mssql 下面 

    e. 重新啟動之後,利用 df 查看磁碟空間,就可以看到 /var/mssql 是放在新的 /dec/sdc1 下面

4. 安裝 SQL Server 2019

    a. 安裝 SQL Server:利用 cURL 將微軟 SQL Server 2019 的 repository 加入到 yum 內,並且透過 yum 進行 SQL Server 2019 的安裝

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo

    b. 設定 SQL Server:比較簡單的方式,就是透過執行 /opt/mssql/bin/mssql-conf 搭配 setup 參數進行安裝,如果想要一鍵安裝的話,是可以一次把參數都帶入

   下面這個是再多增加 -n 的參數,然後將參數都填入,這樣就不會有提示訊息,直接進行安裝

sudo MSSQL_PID=Developer ACCEPT_EULA=Y MSSQL_SA_PASSWORD='1qaz@WSX' /opt/mssql/bin/mssql-conf -n setup

    c. 設定 SQL Server 定序:要注意是要先將 SQL Server 的 Instance 給停止,才能進行變更 Instance 的定序,這裡也是執行 /opt/mssql/bin/mssql-conf ,但是搭配 set-collation 參數進行設定,要注意定序名稱不能輸入錯誤。

    d. 變更資料庫存放目錄:在 Windows 版本中,很多的設定都可以直接透過 SSMS 進行設定,但在 Linux 版本中,有些系統參數,像是資料庫預設存放路徑或者是資料庫備份預設路徑,就只能透過 /opt/mssql/bin/mssql-conf 進行設定,而且要重新啟動之後才能生效。因此這裡我將前面建立的磁碟下面,多增加兩個目錄,並且指派權限給 mssql 的帳號,透過 /opt/mssql/bin/mssql-conf 進行設定。。

    e. 查看設定參數:如果想知道有設定那些參數值,可以查看 /var/opt/mssql/mssql.conf 的檔案者