SlideShare a Scribd company logo
サービス管理 サービスの管理ファイル 実体は「/lib/systemd/system/mssql-server.service」である
「systemctl enable mssql-server.service」を実行することで、
「/etc/systemd/system/multi-user.target.wants/mssql-server.service」にシンボリックリンクが作成される
設定変更
Configure SQL Server on Linux with the mssql-conf tool
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf
•
一部の設定は「mssql-conf」を使用して設定を変更
ファイアウォール Ubuntu
ufwの基本操作
https://qiita.com/RyoMa_0923/items/681f86196997bea236f0
•
ufw
RHEL
4.5. ファイアウォールの使用
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls
•
firewalld
リモート接続 リモート管理
インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識
https://qiita.com/tag1216/items/5d06bad7468f731f590e
•
ssh
ファイルコピー
SCP (1)
http://euske.github.io/openssh-jman/scp.html
•
scp
ソフトウェア更新 Ubuntu パッケージ情報 (リポジトリ情報) の更
新
apt-get update
インストールされているパッケージの更
新
apt-get upgrade
リポジトリ上のファイルを使用しパッ
ケージの更新
upgrade とことなり、新規のパッケー
ジの追加/不要なパッケージの削除も実
施
Linux のディストリビューションバー
ジョンも更新される
apt-get dist-upgrade
自動更新 「/etc/apt/apt.conf.d/20auto-upgrades」で設定されている
「/var/log/unattended-upgrades」にログが出力される
• Ubuntu 16.04: 自動アップデート / アップグレードの設定をする
https://www.hiroom2.com/2016/05/12/ubuntu-16-04%E3%81%A7%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%
BC%E3%83%88-%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%
82%92%E3%81%99%E3%82%8B/
「apt-xxxx」のsystemd ユニットで制御が行われている
(例 : 実行スクリプトについては、「apt-daily.service」実行タイミングの制御については「apt-daily.timer」で制御されている)
ベストプラクティス SQL
Server
on
Linux
Performance best practices and configuration guidelines for SQL Server 2017 on Linux•
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-performance-best-practices
SQL Server の設定
PROCESS AFFINITY の指定 ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY NUMANODE = 0 TO <Max NUMA Node ID>
tempdb のデータファイルの分割 SQL Server on Linux は、インストール時の tempdb 分割が行われないため、インストール後に分割する
mssql-conf ツールを使用したメモリ設定 デフォルトでは SQL Server が使用するメモリは 80% に制限されているため、大容量のメモリを搭載している場合、
残りの 20% のサイズによっては、上限緩和を検討する (本設定は SQL Server の max server memroy とは別の設定)
Linux の設定
CPU CPU の電力制御のユーティリティ apt install -y cpufrequtils
cpufreq-info
CPU クロックのガバナー sudo cpupower frequency-info
sudo cpupower frequency-set -g performance
パフォーマンスと電源消費効率のバランス x86_energy_perf_policy -v 'performance'
CPU クロックの下限 tuned を使用して設定を実施
2.5. TUNED および KTUNE
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/power_management_guide/tuned
•
min_perf_pct=100
C-State C1 のみにする
How to set intel_idle.max_cstate=1
https://askubuntu.com/questions/749349/how-to-set-intel-idle-max-cstate-1
•
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1"
sudo update-grub
reboot
ディスク Read-Ahead のブロックサイズ blockdev --report
blockdev -v --setra 4096 /dev/sda
sysctl によるカーネルパラメーターの変更 設定の確認 cat /proc/sys/kernel/sched_min_granularity_ns
sudo sysctl -a
設定の変更 sudo sysctl -w kernel.sched_min_granularity_ns=10000000
sudo sysctl -w kernel.sched_wakeup_granularity_ns=15000000
sudo sysctl -w vm.dirty_ratio=40
sudo sysctl -w vm.dirty_background_ratio=10
sudo sysctl -w vm.swappiness=10
sudo sysctl -p
NUMA 複数 NUMA ノード環境での自動 NUMA バラン
シングの無効化
sudo sysctl -w kernel.numa_balancing=0
sudo sysctl -p
仮想アドレス空間 メモリマップ数の上限の変更
(65536 (64KB) -> 262144 (256KB))
sudo sysctl -w vm.max_map_count=262144
sudo sysctl -p
マウントオプション SQL Server のデータ/ログファイルのファイル
システムのマウントオプションの設定
(relatime -> noatime )
設定の確認 mount
または、
cat /proc/mounts
設定の変更 vi /etc/fstab
該当のボリュームに「noatime」オプションを追加する
3.9. RELATIME ドライブアクセス最適化
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/power_management_guide/relatime
•
※国内のブログの検証結果では、realtime / noattime の変更による明確な性能差は確認できないという情報が多い
Huge Page 透過的な Huge Page の有効化 ほとんどの Linux 環境では有効になっている。
How to disable Transparent Huge Pages (THP) in Ubuntu 16.04LTS
https://stackoverflow.com/questions/44800633/how-to-disable-transparent-huge-pages-thp-in-ubuntu-16-04lts
•
Red Hat Enterprise Linux 7 で transparent hugepages (THP) を無効にする
https://access.redhat.com/ja/node/1565043
•
Huge Page まとめ
https://gist.github.com/shino/5d9aac68e7ebf03d4962a4c07c503f7d
•
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /proc/meminfo
Swap ファイル swap ファイルの適切な設定
Windows エンジニア向け SQL Server on Linux のためのスキルアップデート
2017年11月20日 8:05
SQL Server on Linux - 1 ページ
Swap ファイル swap ファイルの適切な設定
Ubuntu 16.10 その79 - スワップ領域をパーティションからファイルに移行させるには
https://kledgeb.blogspot.jp/2016/12/ubuntu-1610-79.html
•
swap ファイルの確認 swapon
仮想マシンでの実行時 動的メモリ割り当て (Dynamic Memory) を使
用しない
仮想マシンのメモリ割り当てとして、動的メモリ割り当てによる可変的なメモリ割り当てを実行しない
OOM Killer OOM Killer という動作が存在していることの認
識
メモリ/スワップの枯渇の可能性が出た場合に、メモリを消費しているプロセスを停止させる動作
Linux OOM Killerについて
https://qiita.com/konpyu/items/20d1989d1251d805cf3b
•
LinuxにおけるOOM発生時の挙動
https://qiita.com/satoru_takeuchi/items/792cb21b5d1b96300f99
•
メモリ不足時に大事なプロセスが OOM Killer に殺されないようにする
http://s.webry.info/sp/vogel.at.webry.info/201605/article_1.html
•
エラーログに対応する~OOM Killer編
https://thinkit.co.jp/article/736/1?page=0%2C1
•
OOM Killer – How To Create OOM Exclusions in Linux•
https://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux
Linux - OOM Killer の発動を抑制!•
https://www.mk-mode.com/octopress/2016/03/15/linux-control-oomkiller/
inux/mm/oom_kill.c•
http://elixir.free-electrons.com/linux/v4.14.3/source/mm/oom_kill.c
9.6. システムのユニットファイルの作成および変更
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect -managing_services_with_systemd-unit_files
•
OOM Killer に対しての考慮
swap ファイルのサイズを適切に設定•
mssql-conf で memory.memorylimitmb を適切に設定
OOM Killer の対象となりえる
プロセスの確認
apt install -y dstat
dstat --top-oom
スコアの確認 grep "" /proc/*/oom_score
ps -e | grep "sqlservr" | awk '{system("cat /proc/"$1"/oom_score")}'
OOM Killer の対象外にする echo "-17" > /proc/[pid]/oom_adj
ps -e | grep "sqlservr" | awk '{system("echo -17 > /proc/"$1"/oom_adj")}'
sudo echo '*/1 * * * * root ps -e | grep "sqlservr" | awk '''{system("echo -1000 > /proc/"$1"/oom_score_adj")}''' > /dev/null 2>&1' > /etc/cron.d/sqlservr_oom
または、
sudo echo '*/1 * * * * root ps -e | grep "sqlservr" | awk '''{system("echo -17 > /proc/"$1"/oom_adj")}''' > /dev/null 2>&1' > /etc/cron.d/sqlservr_oom
OOM Killer の設定の確認 sudo sysctl -r | grep "oom"
PASS Summit 2017 - SQL Server on Linux: DBA focused lessons learned from early deployments•
Inside SQL Server 2017 on Linux
https://onedrive.live.com/?authkey=%21ABg4T%5Fv1nZbdDbE&id=233BB03122CBD248%21249941&cid=233BB03122CBD248
•
SQL Server 2017 on Linux - Administration
SQL Server 2017 on Linux - Administration
•
How to safeguard SQL Server on Linux from OOM-Killer
https://blogs.msdn.microsoft.com/psssql/2017/10/17/how-to-safeguard-sql-server-on-linux-from-oom-killer/
•
Docker ローカルまたはリモートストレージ / コンテナーボリュームのマウントを検討•
Docker ボリュームストレージプラグインの活用•
Docker run の実行時に --cap-add sys_ptrace の活用•
事前の
IO 検証
FIO / dd / Iometer 等による事前のディスク性能の検証•
SQL Server on Linux では、ファイルの瞬時初期化はデフォルトで有効となっている•
マウントしたドライブを使用している場合「/etc/fstab」の「noattime」の設定の有効化•
SQL アカウント / グループ アカウント / グループともに mssql が使用されているため、バックアップや BULK INSERT をするファイルに対してこれらのアクセス権が必要となる
id mssql
uid=999(mssql) gid=999(mssql) groups=999(mssql)
コマンドラインから SQL Server を実行する場合、「sudo -u mssql /opt/mssql/bin/sqlservr」により起動する。
パフォーマンスツール PSSDiag https://blogs.msdn.microsoft.com/sqlcat/2017/08/11/collecting -performance-data-with-pssdiag-for-sql-server-on-linux/
https://github.com/Microsoft/DiagManager/tree/master/LinuxPSSDiag
sysstat https://github.com/sysstat/sysstat
プロセス構成
メインの PID で、SQL PAL Monitor が動作し、子プロセスで、SQL PAL / sqlservr.exe が動作している•
SQL Server のプロセス構成•
SQL Server Agent / Full Text Search をインストールした場合、sqlservr のプロセス内で動作することになるため、個別にサービスを停止することはできない•
ディレクトリ /opt/mssql バイナリ
/var/opt/mssql データ/ログ
Windows のディレクトリとの対応
Filesystem Hierarchy Standard
https://ja.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
•
Windows Linux
/
C:Users<ユーザー名> /home/<ユーザー名>
C:Windows /bin
/sbin
%WINDOWSTEMP% /tmp
C:Program Files /opt
/usr/bin
/usr/local
ライブラリ / ソースコード / バイナリ /usr
システムログ /var
コマンド Windows Linux
dir ls
cd cd
md mkdir
rd rmdir
del rm
echo echo
type cat
more more
copy cp
move mv
ren mv
find / findstr grep
tail
net start / net stop systemctl
イベントログ journalctl
/var/log/messages
attrib chmod / chown
ログ RHEL /var/log/messages
Ubuntu /var/log/syslog
SQL Server ログ /var/opt/mssql/log
SQL Server on Linux - 2 ページ
SQL Server ログ /var/opt/mssql/log
セットアップログ Debian Pakcage : /var/log/dpkg.log
RPM:/var/log/yum.log
オフラインインストール RHEL yumdownloader --downloadonly --resolve --destdir=/home/user/offlineistall mssql-server
Ubuntu apt-get download mssql-server
apt-cache depends mssql-server
GitHubサンプル https://github.com/denzilribeiro/sqlunattended
データディスクのマウント The systemd unit file for the SQL server should be locally extended by a dependency on the /datadir this will make sure the s tart is done after the mount and the unmount waits for the stop. The most generic option to do this would be
RequiresMountsFor=/datadir
I think it automatically depend on the installation path of the scripts already.
Note that you do not need to modify the systemd unit files in the library directory but you can amend them in the /etc/system d/system/<sqlserver>.service
systemdでmount完了を待ってサービスを起動する
https://qiita.com/ko-zu/items/3759144c53904afe6b76
•
systemctl show --no-pager mssql-server | grep "RequiresMountsFor"
mkdir /lib/systemd/system/mssql-server.service.d
vi /lib/systemd/system/mssql-server.service.d/mssql-server.conf
[Unit]
RequiresMountsFor=/mnt/backup
systemctl daemon-reload
systemctl show --no-pager mssql-server | grep "RequiresMountsFor"
システムデータベースの再構築 /opt/mssql/bin/sqlservr -c --setup --force-setup
システムデータベースの移動 tempdb / msdb / model : ALTER DATABASE で移動•
master : 移動することはできない•
パフォーマンスモニタリング コマンドライン
https://www.cyberciti.biz/tips/top-linux-monitoring-tools.html
http://www.brendangregg.com/linuxperf.html
モニタリング top [Linux] ある一定期間のtopコマンドの結果をファイルに出力する(備忘録)•
https://qiita.com/dkwnm/items/a147d30397676c9340ff
topコマンドの使い方•
貼り付け元 <https://qiita.com/k0kubun/items/7368c323d90f24a00c2f>
htop htopコマンドで覚えておきたい使い方11個•
https://orebibou.com/2016/05/htop%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%
E4%BD%BF%E3%81%84%E6%96%B911%E5%80%8B/
sar sar(sysstat)によるボトルネック特定
https://qiita.com/kidach1/items/07637a5baa0da7d52e6a
•
vmstat Vmstat の出力結果はどのように解釈すれば良いですか?•
https://access.redhat.com/ja/node/3054501
ディスク iostat iostat -x sda -c 2 -t > stats.log iostat how do I set up a logging•
https://serverfault.com/questions/227357/iostat-how-do-i-set-up-a-logging
iostat の await, svctm の 見かた、考え方(※10/30スライド修正)•
https://qiita.com/ora_gonsuke777/items/66212505bf9950b056a2
iostat コマンドの読み方•
https://blogs.oracle.com/yappri/iostat
df dfコマンドについてまとめました【Linuxコマンド集】•
https://eng-entrance.com/linux-command-df
lsblk
メモリ memstat Linux のメモリー管理(メモリ-が足りない?,メモリーリークの検出/防止)•
http://www.math.kobe-u.ac.jp/HOME/kodama/tips-free-memory.html
linuxにおけるメモリと関連コマンド(free, vmstat, top, sar)•
http://sisidovski.hatenablog.com/entry/2015/07/07/072150
Linux負荷監視コマンドまとめ•
https://qiita.com/aosho235/items/c4d6995743dd1dac16e1
sar sar(sysstat)によるボトルネック特定•
https://qiita.com/kidach1/items/07637a5baa0da7d52e6a
ネットワーク ifconfig / ip
netstat Linuxでプロセスが何のポート使っているかを調べる•
https://qiita.com/sonoshou/items/cc2b740147ba1b8da1f3
プロセス ps psコマンドについて詳しくまとめました 【Linuxコマンド集】
https://eng-entrance.com/linux-command-ps
•
モニタリングユーティリティ
Nagios
Collectd
Telegraf
Monitoring SQL on Linux https://blogs.msdn.microsoft.com/sqlcat/2017/07/03/how-the-sqlcat-customer-lab-is-monitoring-sql-on-linux/
https://github.com/Microsoft/mssql-monitoring
可用性 Pacemaker High Availability Add-On リファレンス•
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/
第1章 Pacemaker を使用した Red Hat High Availability クラスターの作成•
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/ch-startup-haaa>
第3章 pcs コマンドラインインターフェース
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/ch-pcscommand-haar
•
付録B pcs コマンドの使用例
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Configuring_the_Red_Hat_High_Availability_Add -On_with_Pacemaker/ap-configfile-HAAR.html
•
SQL Server on Linux - 3 ページ

More Related Content

What's hot (20)

PPTX
DBA から開発者への情報提供
Masayuki Ozawa
 
PDF
SQL Server コンテナ入門(Docker編)
Tomoyuki Oota
 
PDF
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
Insight Technology, Inc.
 
PDF
SQL Server エンジニア のための コンテナ入門
Tomoyuki Oota
 
PDF
Sql server よく聞く設定とその効果
Masayuki Ozawa
 
PDF
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
 
PDF
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
Insight Technology, Inc.
 
PDF
SQL Server コンテナ入門(Kubernetes編)
Tomoyuki Oota
 
PDF
Sql server 2016 always on 可用性グループ new features
Masayuki Ozawa
 
PDF
Managed Instance チートシート
Masayuki Ozawa
 
PPTX
SQL Server 入門
Tsuyoshi Kitagawa
 
PDF
Oracle と sql server 比べてみよう (sql server)
Masayuki Ozawa
 
PPTX
Sql server 2014 新機能の紹介 改訂版
Oda Shinsuke
 
PDF
C13 SQL Server2012知られざるTips集 by 平山理
Insight Technology, Inc.
 
PDF
Sql server data store data access internals
Masayuki Ozawa
 
PDF
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
Koichiro Sasaki
 
PPTX
Sql server 2014 新機能の紹介
Oda Shinsuke
 
PDF
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
 
PPTX
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
QlikPresalesJapan
 
PPTX
Sql server 運用 101
Masayuki Ozawa
 
DBA から開発者への情報提供
Masayuki Ozawa
 
SQL Server コンテナ入門(Docker編)
Tomoyuki Oota
 
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
Insight Technology, Inc.
 
SQL Server エンジニア のための コンテナ入門
Tomoyuki Oota
 
Sql server よく聞く設定とその効果
Masayuki Ozawa
 
Always on 可用性グループ 構築時のポイント
Masayuki Ozawa
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
Insight Technology, Inc.
 
SQL Server コンテナ入門(Kubernetes編)
Tomoyuki Oota
 
Sql server 2016 always on 可用性グループ new features
Masayuki Ozawa
 
Managed Instance チートシート
Masayuki Ozawa
 
SQL Server 入門
Tsuyoshi Kitagawa
 
Oracle と sql server 比べてみよう (sql server)
Masayuki Ozawa
 
Sql server 2014 新機能の紹介 改訂版
Oda Shinsuke
 
C13 SQL Server2012知られざるTips集 by 平山理
Insight Technology, Inc.
 
Sql server data store data access internals
Masayuki Ozawa
 
SQL Server 2008/2008 R2/ 2012(/ 2014) 新機能
Koichiro Sasaki
 
Sql server 2014 新機能の紹介
Oda Shinsuke
 
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
 
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
QlikPresalesJapan
 
Sql server 運用 101
Masayuki Ozawa
 

Similar to Windows エンジニア向け sql server on linux のためのスキルアップデート (18)

PDF
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
 
PPTX
Microsoft製品でOSSを監視してみよう
Norio Sashizaki
 
PPTX
Monitoring あれこれ
Norio Sashizaki
 
PPTX
Hyper-V + Linux {which Microsoft Loves}
Norio Sashizaki
 
PDF
Solaris ディープダイブセミナー #4: A-2-1 サービス実行を超えた 新たなサービス管理アーキテクチャ Service Management...
SolarisJP
 
PDF
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
de:code 2017
 
PDF
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
Oshitari_kochi
 
PPTX
第5回Sql server2017勉強会資料
TakenoriIijima
 
PDF
Sql server 構築 運用 tips
Masayuki Ozawa
 
PDF
Claris FileMaker Server for Linux 入門
Atsushi Matsuo
 
PPTX
Windows Subsystem for Linux の簡単なはなし
Miho Yamamoto
 
PDF
[Japan Tech summit 2017] DAL 004
Microsoft Tech Summit 2017
 
PDF
[デブサミ]Microsoft Data Platform 最新アップデート
Daisuke Inoue
 
PDF
SQL Server パフォーマンスカウンター
Masayuki Ozawa
 
PDF
Linux and System Center Operations Manager
Norio Sashizaki
 
PPTX
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
 
PDF
Start SQL Server with Docker
Oshitari_kochi
 
PDF
WindowsでMySQL入門
Hidenori Ishii
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
 
Microsoft製品でOSSを監視してみよう
Norio Sashizaki
 
Monitoring あれこれ
Norio Sashizaki
 
Hyper-V + Linux {which Microsoft Loves}
Norio Sashizaki
 
Solaris ディープダイブセミナー #4: A-2-1 サービス実行を超えた 新たなサービス管理アーキテクチャ Service Management...
SolarisJP
 
[DI01] 窓は開かれた! SQL Server on Linux で拡がる可能性
de:code 2017
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
Oshitari_kochi
 
第5回Sql server2017勉強会資料
TakenoriIijima
 
Sql server 構築 運用 tips
Masayuki Ozawa
 
Claris FileMaker Server for Linux 入門
Atsushi Matsuo
 
Windows Subsystem for Linux の簡単なはなし
Miho Yamamoto
 
[Japan Tech summit 2017] DAL 004
Microsoft Tech Summit 2017
 
[デブサミ]Microsoft Data Platform 最新アップデート
Daisuke Inoue
 
SQL Server パフォーマンスカウンター
Masayuki Ozawa
 
Linux and System Center Operations Manager
Norio Sashizaki
 
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
 
Start SQL Server with Docker
Oshitari_kochi
 
WindowsでMySQL入門
Hidenori Ishii
 
Ad

More from Masayuki Ozawa (14)

PDF
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
Masayuki Ozawa
 
PDF
Power apps formula cheat sheet
Masayuki Ozawa
 
PDF
K8s install (single cluster)
Masayuki Ozawa
 
PDF
Pacemaker 操作方法メモ
Masayuki Ozawa
 
PPTX
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
 
PDF
SQL Server 簡易診断サービス ご紹介資料
Masayuki Ozawa
 
PDF
SQL Server 現状診断サービス ご紹介資料
Masayuki Ozawa
 
PDF
A25 sql server data page structure deep dive
Masayuki Ozawa
 
PDF
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
 
PDF
Data consistency 入門 data partitioning ガイダンス
Masayuki Ozawa
 
PDF
オンプレのDbaがazureのデータベースを使ってみた
Masayuki Ozawa
 
PDF
Sql database 基本構成と直近で追加されていた機能の紹介
Masayuki Ozawa
 
PDF
和牛をおいしく食べるには
Masayuki Ozawa
 
PDF
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Masayuki Ozawa
 
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
Masayuki Ozawa
 
Power apps formula cheat sheet
Masayuki Ozawa
 
K8s install (single cluster)
Masayuki Ozawa
 
Pacemaker 操作方法メモ
Masayuki Ozawa
 
ここからはじめる SQL Server の状態取得
Masayuki Ozawa
 
SQL Server 簡易診断サービス ご紹介資料
Masayuki Ozawa
 
SQL Server 現状診断サービス ご紹介資料
Masayuki Ozawa
 
A25 sql server data page structure deep dive
Masayuki Ozawa
 
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
 
Data consistency 入門 data partitioning ガイダンス
Masayuki Ozawa
 
オンプレのDbaがazureのデータベースを使ってみた
Masayuki Ozawa
 
Sql database 基本構成と直近で追加されていた機能の紹介
Masayuki Ozawa
 
和牛をおいしく食べるには
Masayuki Ozawa
 
Sql serverデータアクセスの基本動作。荒ぶった方法で確認してみよう
Masayuki Ozawa
 
Ad

Windows エンジニア向け sql server on linux のためのスキルアップデート

  • 1. サービス管理 サービスの管理ファイル 実体は「/lib/systemd/system/mssql-server.service」である 「systemctl enable mssql-server.service」を実行することで、 「/etc/systemd/system/multi-user.target.wants/mssql-server.service」にシンボリックリンクが作成される 設定変更 Configure SQL Server on Linux with the mssql-conf tool https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf • 一部の設定は「mssql-conf」を使用して設定を変更 ファイアウォール Ubuntu ufwの基本操作 https://qiita.com/RyoMa_0923/items/681f86196997bea236f0 • ufw RHEL 4.5. ファイアウォールの使用 https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls • firewalld リモート接続 リモート管理 インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識 https://qiita.com/tag1216/items/5d06bad7468f731f590e • ssh ファイルコピー SCP (1) http://euske.github.io/openssh-jman/scp.html • scp ソフトウェア更新 Ubuntu パッケージ情報 (リポジトリ情報) の更 新 apt-get update インストールされているパッケージの更 新 apt-get upgrade リポジトリ上のファイルを使用しパッ ケージの更新 upgrade とことなり、新規のパッケー ジの追加/不要なパッケージの削除も実 施 Linux のディストリビューションバー ジョンも更新される apt-get dist-upgrade 自動更新 「/etc/apt/apt.conf.d/20auto-upgrades」で設定されている 「/var/log/unattended-upgrades」にログが出力される • Ubuntu 16.04: 自動アップデート / アップグレードの設定をする https://www.hiroom2.com/2016/05/12/ubuntu-16-04%E3%81%A7%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83% BC%E3%83%88-%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%AE%E8%A8%AD%E5%AE%9A%E3% 82%92%E3%81%99%E3%82%8B/ 「apt-xxxx」のsystemd ユニットで制御が行われている (例 : 実行スクリプトについては、「apt-daily.service」実行タイミングの制御については「apt-daily.timer」で制御されている) ベストプラクティス SQL Server on Linux Performance best practices and configuration guidelines for SQL Server 2017 on Linux• https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-performance-best-practices SQL Server の設定 PROCESS AFFINITY の指定 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY NUMANODE = 0 TO <Max NUMA Node ID> tempdb のデータファイルの分割 SQL Server on Linux は、インストール時の tempdb 分割が行われないため、インストール後に分割する mssql-conf ツールを使用したメモリ設定 デフォルトでは SQL Server が使用するメモリは 80% に制限されているため、大容量のメモリを搭載している場合、 残りの 20% のサイズによっては、上限緩和を検討する (本設定は SQL Server の max server memroy とは別の設定) Linux の設定 CPU CPU の電力制御のユーティリティ apt install -y cpufrequtils cpufreq-info CPU クロックのガバナー sudo cpupower frequency-info sudo cpupower frequency-set -g performance パフォーマンスと電源消費効率のバランス x86_energy_perf_policy -v 'performance' CPU クロックの下限 tuned を使用して設定を実施 2.5. TUNED および KTUNE https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/power_management_guide/tuned • min_perf_pct=100 C-State C1 のみにする How to set intel_idle.max_cstate=1 https://askubuntu.com/questions/749349/how-to-set-intel-idle-max-cstate-1 • sudo vi /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1" sudo update-grub reboot ディスク Read-Ahead のブロックサイズ blockdev --report blockdev -v --setra 4096 /dev/sda sysctl によるカーネルパラメーターの変更 設定の確認 cat /proc/sys/kernel/sched_min_granularity_ns sudo sysctl -a 設定の変更 sudo sysctl -w kernel.sched_min_granularity_ns=10000000 sudo sysctl -w kernel.sched_wakeup_granularity_ns=15000000 sudo sysctl -w vm.dirty_ratio=40 sudo sysctl -w vm.dirty_background_ratio=10 sudo sysctl -w vm.swappiness=10 sudo sysctl -p NUMA 複数 NUMA ノード環境での自動 NUMA バラン シングの無効化 sudo sysctl -w kernel.numa_balancing=0 sudo sysctl -p 仮想アドレス空間 メモリマップ数の上限の変更 (65536 (64KB) -> 262144 (256KB)) sudo sysctl -w vm.max_map_count=262144 sudo sysctl -p マウントオプション SQL Server のデータ/ログファイルのファイル システムのマウントオプションの設定 (relatime -> noatime ) 設定の確認 mount または、 cat /proc/mounts 設定の変更 vi /etc/fstab 該当のボリュームに「noatime」オプションを追加する 3.9. RELATIME ドライブアクセス最適化 https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/power_management_guide/relatime • ※国内のブログの検証結果では、realtime / noattime の変更による明確な性能差は確認できないという情報が多い Huge Page 透過的な Huge Page の有効化 ほとんどの Linux 環境では有効になっている。 How to disable Transparent Huge Pages (THP) in Ubuntu 16.04LTS https://stackoverflow.com/questions/44800633/how-to-disable-transparent-huge-pages-thp-in-ubuntu-16-04lts • Red Hat Enterprise Linux 7 で transparent hugepages (THP) を無効にする https://access.redhat.com/ja/node/1565043 • Huge Page まとめ https://gist.github.com/shino/5d9aac68e7ebf03d4962a4c07c503f7d • cat /sys/kernel/mm/transparent_hugepage/enabled cat /proc/meminfo Swap ファイル swap ファイルの適切な設定 Windows エンジニア向け SQL Server on Linux のためのスキルアップデート 2017年11月20日 8:05 SQL Server on Linux - 1 ページ
  • 2. Swap ファイル swap ファイルの適切な設定 Ubuntu 16.10 その79 - スワップ領域をパーティションからファイルに移行させるには https://kledgeb.blogspot.jp/2016/12/ubuntu-1610-79.html • swap ファイルの確認 swapon 仮想マシンでの実行時 動的メモリ割り当て (Dynamic Memory) を使 用しない 仮想マシンのメモリ割り当てとして、動的メモリ割り当てによる可変的なメモリ割り当てを実行しない OOM Killer OOM Killer という動作が存在していることの認 識 メモリ/スワップの枯渇の可能性が出た場合に、メモリを消費しているプロセスを停止させる動作 Linux OOM Killerについて https://qiita.com/konpyu/items/20d1989d1251d805cf3b • LinuxにおけるOOM発生時の挙動 https://qiita.com/satoru_takeuchi/items/792cb21b5d1b96300f99 • メモリ不足時に大事なプロセスが OOM Killer に殺されないようにする http://s.webry.info/sp/vogel.at.webry.info/201605/article_1.html • エラーログに対応する~OOM Killer編 https://thinkit.co.jp/article/736/1?page=0%2C1 • OOM Killer – How To Create OOM Exclusions in Linux• https://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux Linux - OOM Killer の発動を抑制!• https://www.mk-mode.com/octopress/2016/03/15/linux-control-oomkiller/ inux/mm/oom_kill.c• http://elixir.free-electrons.com/linux/v4.14.3/source/mm/oom_kill.c 9.6. システムのユニットファイルの作成および変更 https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect -managing_services_with_systemd-unit_files • OOM Killer に対しての考慮 swap ファイルのサイズを適切に設定• mssql-conf で memory.memorylimitmb を適切に設定 OOM Killer の対象となりえる プロセスの確認 apt install -y dstat dstat --top-oom スコアの確認 grep "" /proc/*/oom_score ps -e | grep "sqlservr" | awk '{system("cat /proc/"$1"/oom_score")}' OOM Killer の対象外にする echo "-17" > /proc/[pid]/oom_adj ps -e | grep "sqlservr" | awk '{system("echo -17 > /proc/"$1"/oom_adj")}' sudo echo '*/1 * * * * root ps -e | grep "sqlservr" | awk '''{system("echo -1000 > /proc/"$1"/oom_score_adj")}''' > /dev/null 2>&1' > /etc/cron.d/sqlservr_oom または、 sudo echo '*/1 * * * * root ps -e | grep "sqlservr" | awk '''{system("echo -17 > /proc/"$1"/oom_adj")}''' > /dev/null 2>&1' > /etc/cron.d/sqlservr_oom OOM Killer の設定の確認 sudo sysctl -r | grep "oom" PASS Summit 2017 - SQL Server on Linux: DBA focused lessons learned from early deployments• Inside SQL Server 2017 on Linux https://onedrive.live.com/?authkey=%21ABg4T%5Fv1nZbdDbE&id=233BB03122CBD248%21249941&cid=233BB03122CBD248 • SQL Server 2017 on Linux - Administration SQL Server 2017 on Linux - Administration • How to safeguard SQL Server on Linux from OOM-Killer https://blogs.msdn.microsoft.com/psssql/2017/10/17/how-to-safeguard-sql-server-on-linux-from-oom-killer/ • Docker ローカルまたはリモートストレージ / コンテナーボリュームのマウントを検討• Docker ボリュームストレージプラグインの活用• Docker run の実行時に --cap-add sys_ptrace の活用• 事前の IO 検証 FIO / dd / Iometer 等による事前のディスク性能の検証• SQL Server on Linux では、ファイルの瞬時初期化はデフォルトで有効となっている• マウントしたドライブを使用している場合「/etc/fstab」の「noattime」の設定の有効化• SQL アカウント / グループ アカウント / グループともに mssql が使用されているため、バックアップや BULK INSERT をするファイルに対してこれらのアクセス権が必要となる id mssql uid=999(mssql) gid=999(mssql) groups=999(mssql) コマンドラインから SQL Server を実行する場合、「sudo -u mssql /opt/mssql/bin/sqlservr」により起動する。 パフォーマンスツール PSSDiag https://blogs.msdn.microsoft.com/sqlcat/2017/08/11/collecting -performance-data-with-pssdiag-for-sql-server-on-linux/ https://github.com/Microsoft/DiagManager/tree/master/LinuxPSSDiag sysstat https://github.com/sysstat/sysstat プロセス構成 メインの PID で、SQL PAL Monitor が動作し、子プロセスで、SQL PAL / sqlservr.exe が動作している• SQL Server のプロセス構成• SQL Server Agent / Full Text Search をインストールした場合、sqlservr のプロセス内で動作することになるため、個別にサービスを停止することはできない• ディレクトリ /opt/mssql バイナリ /var/opt/mssql データ/ログ Windows のディレクトリとの対応 Filesystem Hierarchy Standard https://ja.wikipedia.org/wiki/Filesystem_Hierarchy_Standard • Windows Linux / C:Users<ユーザー名> /home/<ユーザー名> C:Windows /bin /sbin %WINDOWSTEMP% /tmp C:Program Files /opt /usr/bin /usr/local ライブラリ / ソースコード / バイナリ /usr システムログ /var コマンド Windows Linux dir ls cd cd md mkdir rd rmdir del rm echo echo type cat more more copy cp move mv ren mv find / findstr grep tail net start / net stop systemctl イベントログ journalctl /var/log/messages attrib chmod / chown ログ RHEL /var/log/messages Ubuntu /var/log/syslog SQL Server ログ /var/opt/mssql/log SQL Server on Linux - 2 ページ
  • 3. SQL Server ログ /var/opt/mssql/log セットアップログ Debian Pakcage : /var/log/dpkg.log RPM:/var/log/yum.log オフラインインストール RHEL yumdownloader --downloadonly --resolve --destdir=/home/user/offlineistall mssql-server Ubuntu apt-get download mssql-server apt-cache depends mssql-server GitHubサンプル https://github.com/denzilribeiro/sqlunattended データディスクのマウント The systemd unit file for the SQL server should be locally extended by a dependency on the /datadir this will make sure the s tart is done after the mount and the unmount waits for the stop. The most generic option to do this would be RequiresMountsFor=/datadir I think it automatically depend on the installation path of the scripts already. Note that you do not need to modify the systemd unit files in the library directory but you can amend them in the /etc/system d/system/<sqlserver>.service systemdでmount完了を待ってサービスを起動する https://qiita.com/ko-zu/items/3759144c53904afe6b76 • systemctl show --no-pager mssql-server | grep "RequiresMountsFor" mkdir /lib/systemd/system/mssql-server.service.d vi /lib/systemd/system/mssql-server.service.d/mssql-server.conf [Unit] RequiresMountsFor=/mnt/backup systemctl daemon-reload systemctl show --no-pager mssql-server | grep "RequiresMountsFor" システムデータベースの再構築 /opt/mssql/bin/sqlservr -c --setup --force-setup システムデータベースの移動 tempdb / msdb / model : ALTER DATABASE で移動• master : 移動することはできない• パフォーマンスモニタリング コマンドライン https://www.cyberciti.biz/tips/top-linux-monitoring-tools.html http://www.brendangregg.com/linuxperf.html モニタリング top [Linux] ある一定期間のtopコマンドの結果をファイルに出力する(備忘録)• https://qiita.com/dkwnm/items/a147d30397676c9340ff topコマンドの使い方• 貼り付け元 <https://qiita.com/k0kubun/items/7368c323d90f24a00c2f> htop htopコマンドで覚えておきたい使い方11個• https://orebibou.com/2016/05/htop%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84% E4%BD%BF%E3%81%84%E6%96%B911%E5%80%8B/ sar sar(sysstat)によるボトルネック特定 https://qiita.com/kidach1/items/07637a5baa0da7d52e6a • vmstat Vmstat の出力結果はどのように解釈すれば良いですか?• https://access.redhat.com/ja/node/3054501 ディスク iostat iostat -x sda -c 2 -t > stats.log iostat how do I set up a logging• https://serverfault.com/questions/227357/iostat-how-do-i-set-up-a-logging iostat の await, svctm の 見かた、考え方(※10/30スライド修正)• https://qiita.com/ora_gonsuke777/items/66212505bf9950b056a2 iostat コマンドの読み方• https://blogs.oracle.com/yappri/iostat df dfコマンドについてまとめました【Linuxコマンド集】• https://eng-entrance.com/linux-command-df lsblk メモリ memstat Linux のメモリー管理(メモリ-が足りない?,メモリーリークの検出/防止)• http://www.math.kobe-u.ac.jp/HOME/kodama/tips-free-memory.html linuxにおけるメモリと関連コマンド(free, vmstat, top, sar)• http://sisidovski.hatenablog.com/entry/2015/07/07/072150 Linux負荷監視コマンドまとめ• https://qiita.com/aosho235/items/c4d6995743dd1dac16e1 sar sar(sysstat)によるボトルネック特定• https://qiita.com/kidach1/items/07637a5baa0da7d52e6a ネットワーク ifconfig / ip netstat Linuxでプロセスが何のポート使っているかを調べる• https://qiita.com/sonoshou/items/cc2b740147ba1b8da1f3 プロセス ps psコマンドについて詳しくまとめました 【Linuxコマンド集】 https://eng-entrance.com/linux-command-ps • モニタリングユーティリティ Nagios Collectd Telegraf Monitoring SQL on Linux https://blogs.msdn.microsoft.com/sqlcat/2017/07/03/how-the-sqlcat-customer-lab-is-monitoring-sql-on-linux/ https://github.com/Microsoft/mssql-monitoring 可用性 Pacemaker High Availability Add-On リファレンス• https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/ 第1章 Pacemaker を使用した Red Hat High Availability クラスターの作成• https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/ch-startup-haaa> 第3章 pcs コマンドラインインターフェース https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/ch-pcscommand-haar • 付録B pcs コマンドの使用例 https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Configuring_the_Red_Hat_High_Availability_Add -On_with_Pacemaker/ap-configfile-HAAR.html • SQL Server on Linux - 3 ページ