Goのお勉強
メルカリが公開している資料をもとに写経していきたいと思います。 Lambaとか,ローカルコマンドを作るのにつかえるといいなあ。
Kindle Unlimitedで
JavaScriptのおさらいに、Kindle Unlimitedで書籍をななめ読み
Azure SQL Databaseのバックアップ:ファイル出力
ストレージアクセスキーで出力
7つの引数が必要.
az sql db export --admin-password ${db-admin-password} `
--admin-user ${db-admin-user} `
--name ${origin_db} `
--resource-group ${resource-group} `
--server ${myserver} `
--storage-key-type StorageAccessKey `
--storage-uri ${storage-uri} `
--storage-key ${storage-key}
ストレージ関係を省略化してみる(同じサブスクリプションを利用している前提)
storage-keyの取得key1取得する
#ストレージアカウント
${storage-acccount} = ""
#リソースグループ
${resource-group} = ""
#アクセスキーのリストからkey1取得する
az storage account keys list -g ${resource-group} -n ${storage-acccount} --query "[?keyName=='key1'].value|[0]"
'''
ストレージのアクセスキーが減って、ストレージのアカウント名が増えた。
ストレージのURL(出力先のファイル名を含む)は、
blobサービスのエンドポイントとブロブのコンテナとフィル名の3つで構成されている。
blobサービスのエンドポイント
'''
#URIのドメイン部分を取得
az storage account show -g ${resource-group} -n ${storage-acccount} --query "primaryEndpoints.blob"
#実行結果は結局:"https://${storage-acccount}.blob.core.windows.net/"
'''
'''
#SQLサーバ名
${myserver} =""
#SQLサーバの管理者名
${db-admin-user}=""
#SQLサーバの管理者パスワード
${db-admin-password} =""
#バックアップ元のDB名
${origin_db} =""
#リソースグループ名
${resource-group}=""
#バックアップ先(AzureStorage)
#アカウント
${storage-acccount}=""
#コンテナ
${container-name} =""
#バックアップ先のファイル名
${file} = ""
#ストレージのURL(出力先のファイル名を含む)
${Endpoint} = az storage account show -g ${resource-group} -n ${storage-acccount} --query "primaryEndpoints.blob"
${storage-uri} = ${Endpoint}+${container-name}+"/"+${file}
#ストレージのアクセスキー
${storage-key} = az storage account keys list -g ${resource-group} -n ${storage-acccount} --query "[?keyName=='key1'].value | [0]"
#DBバックアップ実行
az sql db export --admin-password ${db-admin-password} `
--admin-user ${db-admin-user} `
--name ${origin_db} `
--resource-group ${resource-group} `
--server ${myserver} `
--storage-key-type StorageAccessKey `
--storage-uri ${storage-uri} `
--storage-key ${storage-key}
Azure SQL Databaseのリストア:DBコピー
現在のDBのバックアップをとって、指定のDBをコピーして戻す。
利用目的
テスト環境をテスト前の状態に戻す
#データベース名
${origin_db} = "";
#元に戻したい状態のデータベース名
${base_db} = ""
#リソースグループ名
${resource-group} = "";
#サーバ名
${myserver} = ""
${date_now} = Get-Date -Format "yyyyMMdd-HHmm"
${copy_db} = ${origin_db} + "_" + ${date_now}
#エラスティックプール名取得
${elastic-pool} = az sql db show --name ${origin_db} --resource-group ${resource-group} --server ${myserver} --query "{elasticPoolName: elasticPoolName}" -o tsv
#DBバックアップ
az sql db copy -g ${resource-group} -s ${myserver} -n ${origin_db} --dest-name ${copy_db} --elastic-pool ${elastic-pool}
#DB削除
az sql db delete -g ${resource-group} -s ${myserver} -n ${origin_db}
#DB特定に戻す。
az sql db copy -g ${resource-group} -s ${myserver} -n ${base_db} --dest-name ${origin_db} --elastic-pool ${elastic-pool}
DBのバックアップからの特定のDBに戻す
#データベース名
${origin_db} = "";
#元に戻したい状態のデータベース名
${base_db} = ""
#リソースグループ名
${resource-group} = "";
#サーバ名
${myserver} = ""
${date_now} = Get-Date -Format "yyyyMMdd-HHmm"
${copy_db} = ${origin_db} + "_" + ${date_now}
#エラスティックプール名取得
${elastic-pool} = az sql db show --name ${origin_db} --resource-group ${resource-group} --server ${myserver} --query "{elasticPoolName: elasticPoolName}" -o tsv
#DBバックアップ
az sql db copy -g ${resource-group} -s ${myserver} -n ${origin_db} --dest-name ${copy_db} --elastic-pool ${elastic-pool}
#DB削除
az sql db delete -g ${resource-group} -s ${myserver} -n ${origin_db}
#DB特定に戻す。
az sql db copy -g ${resource-group} -s ${myserver} -n ${base_db} --dest-name ${origin_db} --elastic-pool ${elastic-pool}
Azure SQL Databaseのコピー
Azure SQL Databaseのコピー
エラスティックプール上のDatabaseを同じエラスティックプール上にコピーする。
データベースをコピーする。
#データベース名
${origin_db} = "";
#リソースグループ名
${resource-group} = "";
#サーバ名
${myserver} = ""
#エラスティックプール名
${elastic-pool} = ""
#日時の取得
${date_now} = Get-Date -Format "yyyyMMdd-HHmm"
#日時付きの名前を作成
${copy_db} = ${origin_db} + "_" + ${date_now}
az sql db copy -g ${resource-group} -s ${myserver} -n ${origin_db} --dest-name ${copy_db} --elastic-pool ${elastic-pool}
databaseを特定するには
データベース名、リソースグループ名、サーバ名が3つが必要。
az sql db show --name
--resource-group
--server
エラスティックプール名を設定から取得できるといいなあ。
エラスティックプール名を取得する
az sql db show --name ${origin_db} --resource-group ${resource-group} -
-server ${myserver} --query "{elasticPoolName: elasticPoolName}" -o tsv
データベースをコピーする。(引数3つ)
#データベース名
${origin_db} = "";
#リソースグループ名
${resource-group} = "";
#サーバ名
${myserver} = ""
${date_now} = Get-Date -Format "yyyyMMdd-HHmm"
${copy_db} = ${origin_db} + "_" + ${date_now}
#エラスティックプール名
${elastic-pool} = az sql db show --name ${origin_db} --resource-group ${resource-group} --server ${myserver} --query "{elasticPoolName: elasticPoolName}" -o tsv
az sql db copy -g ${resource-group} -s ${myserver} -n ${origin_db} --dest-name ${copy_db} --elastic-pool ${elastic-pool}
日時の取得
PowerShellで時間を取得したい
#2018/08/09 16:58:39 Get-Date -Format "yyyy/MM/dd HH:mm:ss" #2018/08/09 04:58:45 Get-Date -Format "yyyy/MM/dd hh:mm:ss"

使い道
ファイルのバックアップ
ファイル名の後ろに日時を設定してコピーする
$origin = "わくわくリスト.txt";
$date_now = Get-Date -Format "yyyyMMdd-HHmm"
#拡張子の前の.の前に日付情報を挿入する
$copy = $origin.Substring(0, $origin.LastIndexOf('.')) + $date_now + $origin.Substring($origin.LastIndexOf('.') );
#コピー先のファイル名確認
Write-Host $copy
#コピー実施
Copy-Item $origin $copy
