Joe Horn 的啟示錄
Joe Horn's Blog
  • About.me
  • Facebook
  • Flickr
  • GitHub
  • Instagram
  • LinkedIn
  • Pinterest
  • Slideshare
  • Twitter
  • YouTube
  • Tumblr
RSS
  • VPS Referrals
  • My Plurk
  • My Plurk Bot

6 月 5 2023

在 NAS 測試 SATA SSD

自己在家裡用的 NAS 能跑 VM(透過 QEMU),也能跑 Docker 容器,所以自己的一些玩具機便被我丟進 NAS 裡。

NAS 裡面的 VM、容器運作的挺穩定,但 Disk I/O 效能遠不能跟 VPS 相比;某天突然想試試在 NAS 放 SSD,便買了這兩個東西來用…

放進 NAS 之後,用 fio 簡單作測試,參數:

-iodepth=128 -ioengine=libaio -bs=4k \
--runtime=300 --size=500M \
--direct=1 --rw=randrw

測試結果如下:

SATA HDDSATA SSD
NAS Read IOPS: 2117 B/W: 8472KB/s
Write IOPS: 2107 B/W: 8429KB/s
Read IOPS: 12.7k B/W: 49.6MB/s
Write IOPS: 12.6k B/W: 49.3MB/s
VM Read IOPS: 1106 B/W: 4426KB/s
Write IOPS: 1100 B/W: 4404KB/s
Read IOPS: 7266k B/W: 28.4MB/s
Write IOPS: 7229k B/W: 28.2MB/s
容器 Read IOPS: 1972 B/W: 7891KB/s
Write IOPS: 1962 B/W: 7851KB/s
Read IOPS: 10.0k B/W: 41.1MB/s
Write IOPS: 9972 B/W: 39.0MB/s

By Joe Horn • Computer Hardware 0 • Tags: benchmarking, fio, NAS, Network Attached Storage, SATA HDD, SATA SSD

5 月 14 2023

Percona XtraBackup 8.0.32 released

其實 Percona XtraBackup 8.0.32 最初在 2023 年 2 月就有釋出,只是一直在忙,就沒寫 blog;最近處理了幾台 MySQL server,順道提一下…

特別在標題寫 Percona XtraBackup 8.0.32 是因為 8.0.32-25 的 release note 有這段(我認為它很重要):

簡單說… 就是:「把 MySQL server 更新到 8.0.32,搭配 Percona XtraBackup 8.0.32 作備份」比較妥當,不會踩到雷。

緣由如下…
MySQL server 自 8.0.29 之後支援以下這組語法,沒特別指定 ALGORITHM
的話,INSTANT 就是預設:

ALTER TABLE ... DROP COLUMN ... , ALGORITHM=INSTANT;

(ADD COLUMN 自 8.0.12 就開始支援,也成為預設;兩者在未調整前的預設 ALGORITHM 都是 INPLACE)

這樣的調整導致 Percona XtraBackup 在做備份時出錯,於是便有了 Percona XtraBackup 8.0.29 and INSTANT ADD/DROP Columns 這篇文章;我在留言處有留下解決方式(用 pt-online-schema-change)。

目前 MySQL server 的最新版本是 8.0.33,而 Percona XtraBackup 則是 8.0.32-26;目前這樣的搭配運作正常。

By Joe Horn • Database 0 • Tags: MySQL, Percona Toolkit, Percona XtraBackup

9 月 2 2022

幫 Apache Tomcat 7/9 上 HTTPS

近日敝單位踩到 HSTS 的地雷,於是就著手解決問題…

先說地雷的引爆點: 新上線 example.com 這網站給了 “strict-transport-security: max-age=31536000; includeSubDomains” 這組 HTTP header,使得原本透過 Apache Tomcat 提供服務的 http://system.example.com.tw:8080/ 網頁瀏覽異常;因瀏覽器參照 HSTS 後,只把 “http://” 改為 “https://” ,瀏覽器不知道應該同步修改連接埠號(port 8080)。

因為這幾台伺服器的網頁服務僅使用 Apache Tomcat,沒有 https://httpd.apache.org/、nginx 等其他軟體佔用 port 80 與 443,用 iptables 作 port redirection 就可以擺平,調整的方式會比較簡單。

需要作的事的大概就這些:

  • 取得 SSL certificates,並確認 renew 的時候可重新啟動 Apache Tomcat
  • 安裝 Tomcat Native
  • 調整 Tomcat 的 server.xml
  • 調整 iptables rules

Apache Tomcat 7 的 server.xml 用這段(某些參數視狀況調整):

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="200" SSLEnabled="true"
           SSLCertificateFile="/etc/letsencrypt/live/example.com/cert.pem"
           SSLCertificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
           SSLCACertificateFile="/etc/letsencrypt/live/example.com/chain.pem" />

Apache Tomcat 9 的 server.xml 用這段(某些參數視狀況調整),支援 HTTP/2:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="200" SSLEnabled="true" >
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
  <SSLHostConfig>
    <Certificate certificateKeyFile="/etc/letsencrypt/live/example.com/privkey.pem"
                 certificateFile="/etc/letsencrypt/live/example.com/cert.pem"
                 certificateChainFile="/etc/letsencrypt/live/example.com/chain.pem"
                 type="RSA" />
  </SSLHostConfig>
</Connector>

iptables rules 增加以下這兩條:

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

By Joe Horn • WWW 0 • Tags: Apache Tomcat, HSTS, HTTP, HTTP Strict Transport Security, HTTPS

11 月 29 2021

MySQL 8.0.26 與 8.0.27

MySQL 8.0.27 GA 好一陣子了,手邊的一些 server 在升級時作了點調整,只是這幾天才想到要作些紀錄…

首先是 8.0.25 升版 8.0.26:

  • 調整一堆 master / slave 字詞(Ref. Changes in MySQL 8.0.26 (2021-07-20, General Availability) : Functionality Added or Changed)
  • TLSv1 與 TLSv1.1 標注為 deprecated(Ref. Changes in MySQL 8.0.26 (2021-07-20, General Availability) : Deprecation and Removal Notes

我在升版過程看到的 log messages 像這樣:

8.0.26 升版 8.0.27 則是調整了 authentication 設定變數(Ref. Changes in MySQL 8.0.27 (2021-10-19, General Availability) : Functionality Added or Changed),調整方式可以參考這段文件說明。

除了 master / slave 字詞以外,設定檔變動範圍大致如下:

tls_version                     = TLSv1.2
#default_authentication_plugin  = mysql_native_password
authentication_policy           = mysql_native_password,,

By Joe Horn • Database 0 • Tags: MySQL

8 月 7 2021

Oracle Cloud Free Tier

前陣子看到 Oracle Cloud Free Tier ,網頁說下圖這些服務是永遠免費的,便註冊了一個帳號試玩看看…

參閱這個頁面的說明之後,我建立了一個 Compute VM instance 跟一塊 Block Storage 作些簡單的測試。

免費的服務當然有些代價,與其他 VPS 付費建立的 instance 相比,差別最大的是 Disk I/O;Oracle Cloud Free Tier 提供的硬體應該是 HDD,不是 SSD。

這圖是 Oracle Cloud Free Tier 的 sysbench 測試結果:

Vultr 的付費 VM instance 配置 SSD ,測試結果如下:

感覺 Oracle Cloud Free Tier 的永遠免費資源在學習、測試的用途上是足夠的,但架設網站應該是不太行。
我個人是把 Compute VM instance 用作 MySQL replica,並掛載 Block Storage 作為 MySQL 的資料目錄,定時作 btrfs snapshot。

By Joe Horn • Linux 0 • Tags: Free Tier, Oracle Cloud, VPS

6 月 8 2021

Percona XtraBackup 8.0.25-17.0 released

之前寫 MySQL 8.0.23 released 是 1 月的事,但 Percona XtraBackup 在兩個月後(3 月)才釋出 8.0.23-16.0;接著 MySQL 在 2021-04-20 釋出 8.0.24,2021-05-11 釋出 8.0.25 ,所以 Percona XtraBackup 的版本編號就直接跳上 8.0.25-17.0 了…

這個版本比較特別的是權限調整,需要額外賦予 performance_schema.keyring_component_status 這個 TABLE 的 SELECT 權限,如下圖標示處。

(參照:Percona XtraBackup – Documentation : Connection and Privileges Needed)

P.S. 在 Github 也可以看到紀錄: PXB-2490 xtrabackup privileges update (8.0)

By Joe Horn • Database 0 • Tags: MySQL, Percona XtraBackup

1 月 19 2021

MySQL 8.0.23 released

剛看到 MySQL 8.0.23 的 release note ,便挑了台機器試試。

先談測試結果:建議 PXB(Percona XtraBackup) 的使用者先等待新版釋出再一併作升版。
原因如下:

  • PXB 自 8.0.22 開始會檢查 MySQL server 版本,沒加上 –no-server-version-check 這參數會卡住。
  • 我在 PXB 的 prepare 階段看到 “Unknown error 3611” 。

2020 年資訊/軟體界在談論 master / slave 與 blacklist / whitelist 這類可被聯想成「歧視」的字眼,而 MySQL 也開始作調整了…

8.0.22 版開始調整 “SLAVE” 字眼(Ref. MySQL 8.0.22 的 release note):

新釋出的 8.0.23 調整 “MASTER” 與 “blacklist” 字眼:

另外,參照這頁,MySQL 8.0.23 的資料庫帳號 host 欄位開始支援 CIDR 格式。

By Joe Horn • Database 1 • Tags: CIDR, MySQL, Percona XtraBackup, Replication

12 月 14 2020

Percona XtraBackup for MySQL 8.0.22

這篇也算是作紀錄。

Percona 在 2020-10-23 貼出這文: MySQL New Releases and Percona XtraBackup Incompatibilities;裡面這段看起來感覺像是又被搞了…

特別強調 “又” 字是因為已經有過一次,而且放在 Percona XtraBackup – Documentation,但這次只張貼 blog post,沒寫在文件…

恰巧某台 11 月初新裝的 Linux 踩到坑,便持續關注 Percona XtraBackup 等新版釋出。

幾天前發現 Percona XtraBackup 的 github 有這個 pull request:PXB-2373 Release Notes for 8.0.22-15.0 (8.0),今天就在下載頁看到了(而且換了版本編號邏輯… :-P )
雖然 Percona XtraBackup 8.0 Release Notes 尚未更新,但剛測試的確沒看到 unknown error …

另外,MySQL 8.0.22 還有這變革…

By Joe Horn • Database 0 • Tags: MySQL, Percona XtraBackup

12 月 10 2020

LVM 的 PV 資料移轉

這是這幾天作過簡單的實驗,實驗完畢馬上在正式環境完成的事,寫個文章作紀錄。

LVM (Logical Volume Manager) 不是新穎的技術,搭配 mdadm、iSCSI、DRBD 可以搞出不少花樣。

情境是 server 掛載 A 廠牌 storage server 的 iSCSI target 作為資料與程式的儲存點,而這些資料要搬移到 B 廠牌 storage server 的 iSCSI target;而這台 server 用 LVM 把 iSCSI target 製作成 PV (Physical Volume),並建立好 VG (Volume Group)與 LV (Logical Volume),掛載 LV 儲存資料。

變數說明:

  • [portal_A] 是 A 廠牌 storage server 的 iSCSI portal,[target_A] 為其 target name
  • [portal_B] 是 B 廠牌 storage server 的 iSCSI portal,[target_B] 為其 target name
  • /dev/sda 是 A 廠牌 storage server 的 iSCSI target 掛載後的 device
  • /dev/sdb 是 B 廠牌 storage server 的 iSCSI target 掛載後的 device
  • server 建立並使用的 VG 名稱為 VolGroup,LV 名稱、數量都不重要

步驟如下:

  1. 先確認現存的 iSCSI session 與 iSCSI node,確認後把 B 廠牌 storage server 的 iSCSI target 掛進 server;使用的指令如下:
    • 檢查
      # iscsiadm -m session
      # iscsiadm -m node
      
    • 探索 & 掛載 iSCSI target (掛載後可再檢查看看,並確認 /dev/sdb 有出現)
      # iscsiadm -m discovery -t st -p [portal_B]
      # iscsiadm -m node -T [target_B] -p [portal_B] --login
      
  2. 建立 PV,前、後可以用 pvdisplay 指令觀察
    # pvcreate /dev/sdb
  3. 把新建的 PV 放進 VG,前、後可以用 vgdisplay 指令觀察
    # vgextend VolGroup /dev/sdb
  4. 搬移資料,前、後可以用 vgdisplay 指令觀察(這段時間比我預期的還要長,可搭配 -i 這個參數調整搬移進度回報的間隔時間)
    # pvmove /dev/sda /dev/sdb
  5. 搬完之後,從 VG 退出原本的 PV,前、後可以用 vgdisplay 指令觀察
    # vgreduce VolGroup /dev/sda
  6. 移除原本的 PV,避免 LVM 偵測到並自動掛載,前、後可以用 pvdisplay 指令觀察
    # pvremove /dev/sda
  7. 確認現存的 iSCSI session 與 iSCSI node,登出並刪除 A 廠牌 storage server 的 iSCSI target;檢查的的指令如第一步,登出與刪除的指令如下:
    # iscsiadm -m node -T [target_A] -p [portal_A] --logout
    # iscsiadm -m node -T [target_A] -p [portal_A] -o delete
    

收工。

一旦 iSCSI node 確認是乾淨的,目前的 /dev/sdb 在重新開機後會成為 /dev/sda,且 LVM 會辨識出這個 PV,並放進 VG;而這整段流程毋需對 LV 作 umount & mount,服務也毋需暫停/中斷(LVM 的 device mapper 會幫我們顧好… XD )。

By Joe Horn • Linux 0 • Tags: LVM, pvmove, vgextend, vgreduce

12 月 7 2020

測試 Raspberry Pi 4 的 MySQL server

之前測過 Raspberry Pi 4 可用的 storage devices ;讓我選擇的話,不在 Raspberry Pi 4 透過 USB 3 裝 SSD,大概就是 MicroSD card 。

fio 只能測試 file I/O,而 sysbench 可以測試 CPU 跟 memory,甚至還能測試 DBMS 效能。

測試基準作業系統都是 Ubuntu 20.10,安裝 MySQL 8,使用的工具是 sysbench ,用 oltp_read_write 作測試。(Percona 尚未提供 groovy 的 repository,就先不用 sysbench-tpcc 作測試了…)

裝機之後簡單執行這幾行指令:

# mysql -e "CREATE DATABASE sbtest;"
# sysbench oltp_read_write --mysql-user=root prepare
# sysbench oltp_read_write --mysql-user=root run

Intel SSD 760p 搭配 NVMe-to-USB3 轉接器,fio 測得結果是 iops 約 11k,傳輸約 42MB/s 。

SanDisk Extreme Pro MicroSD card,fio 測得結果是 iops 約 390,傳輸約 1560KB/s 。

對照組,這是在 DigitalOcean 開 US$ 10/mo 的 VPS (1 vCPU & 2GB RAM)作測試。
(看 /proc/cpuinfo 是 Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.30GHz ,bogomips 約 4k)

有想要放網站的話,選用 VPS 還是會比較好… 至少,被攻擊的時候不會塞滿自己的頻寬。
有興趣玩 VPS 的可以參考這裡呀… XD

By Joe Horn • Computer Hardware, Database 0 • Tags: benchmarking, MySQL, oltp_read_write, Raspberry Pi 4, sysbench, VPS

1 2 3 4›»

Site Info

本站小貼紙
本站小圖
There are lots of zh_TW words encoded with UTF-8 in this Blog.
創用 CC 授權條款
本站所有內容係採用創用 CC Attribution-NonCommercial-NoDerivatives 4.0 國際 授權條款授權.

About Me

profile for Joe Horn at Stack Overflow, Q&A for professional and enthusiast programmers


My mail!

獅子座

Coffee Powered!

F1 fans

motoGP fans

Linkin Park

I am a Taiwanese!

Recent Comments

  • Avatar of johnpupu johnpupu: PHP 還有這個 phpsavant.c……
  • Avatar of Jerry Jerry: 这个不是foreach的问题。 0 ==……
  • Avatar of Joe Horn Joe Horn: 看來問題在 if ... else ..……
  • Avatar of jnlin jnlin: 因為 'b' 被轉型成 0 了…
  • Avatar of 路人 路人: 跟 foreach 沒有關係 ?…
  • Avatar of bill bill: 註冊表那裡要設定 BasicAuthLe……
  • Avatar of 虫 虫: .svn 的檔案減少可以增加在 wind……
  • Avatar of mars mars: 如果說寫程式是理性極致的話,那寫小說就是……
  • Avatar of Joe Horn Joe Horn: 已更新文章。…
  • Avatar of jackcal jackcal: joehorn.idv.tw關於轉貼 h……

Post Categories

  • About My Sites (16)
  • Computer Hardware (25)
  • Computer Software (45)
  • Database (23)
  • FreeBSD (21)
  • Funny (14)
  • Life (23)
  • Linux (5)
  • Mail (19)
  • Network (11)
  • Programing (40)
    • .NET (5)
    • JAVA (2)
    • Javascript (6)
    • PHP (29)
  • Thoughts (34)
  • Windows (13)
  • WWW (79)
    • phpBB (7)
    • WordPress (18)

Blogroll

  • DK Moto Club
  • ケロン軍團戰略室 (INGRESS)
  • ziway 的 Blog
  • 這裡沒有美食

Tags Cloud

AMD Apache Bloglines Coppermine DNSBL domain name eAccelerator extension Firefox Formula 1 free FreeBSD Gmail Google HDD Hsin-chu IE Intel Javascript Lenovo Longhorn Microsoft MSN MySQL Office PCHome Percona XtraBackup performance PHP phpBB pirate Postfix restaurant RSS sendmail software SpamAssassin Subversion SVN Taiwan theme translation Windows WordPress Yahoo

Ads

↑

© Joe Horn 的啟示錄 2023
Powered by WordPress • Themify WordPress Themes