Joe Horn 的啟示錄
Joe Horn's Blog
  • LinkedIn
  • Facebook
  • Instagram
  • GitHub
  • Docker Hub
RSS
  • VPS Referrals
  • My Plurk
  • My Plurk Bot

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

11 月 29 2020

測試 Raspberry Pi 4 可用的 storage devices

數年前我開始玩 Raspberry Pi ,第一款入手的是 Raspberry Pi 2 model B;原先的想法是在家弄個微型 Linux server,運氣好的話還能裝 desktop 版,接上電視當 Thin client。
但這個版本 CPU 速度不快,記憶體不大,MicroSD 的 file I/O 也不算快,我裝起來玩沒幾個月就撤下來了… XD

之後我在看到 Orange Pi 的 benchmarking 文章,感覺內建的 EMMC 速度不錯,就買了一台 Orange Pi Plus 2 來玩。
也是玩沒幾個月,發現 Orange Pi 的生態系不太完整,而且 Orange Pi Plus 2 的 CPU 發熱量頗高,非得搞個風扇才能讓它保持清醒(風扇還要定時更換),便又把它撤下來了…

Raspberry Pi 4 大概是在 2019 年六月面世,而且 Benchmarking the Raspberry Pi 4 這文有一部份對我挺有吸引力…

我想在家弄的 Linux server 已經被我扔進 NAS 的 VM,直到 8GB 記憶體的版本面世,我才又入手。
把它裝起來玩之後,發現 MicroSD 的 file I/O 依舊無法跟 NAS 裡面的 VM guest 相比,便又擱著…
直到最近看到一堆 Raspberry Pi 4 的 USB boot 文,才又有動力把它抓出來測 file I/O ,順便留個紀錄。

在測試前,有件事讓我搞很久…
我用 USB 外接硬碟可以作 USB boot,但用 Intel SSD 760p 配 Asus ROG STRIX ARION、伽利略 M2NVU31(晶片是 JMS583)一直失敗… T_T

我在 Facebook 的台灣樹苺派社群提問,便有人回覆提醒我該注意供電與轉接器的主控晶片。
於是我把裝置接上一個可額外供電的 USB 3.0 hub,NVMe SSD 搭配 JMS583 主控 就成功達成 USB boot 了… XD

隨後又在網路上找了個 RTL9210 主控的轉接器,發現 RTL9210 毋需額外供電,直接接上就可以作 USB boot。

測試的配置圖(開機時僅接上 NVMe SSD):

Raspberry Pi 4 的一些基本資訊,開機後裝上 & 掛載受測的 storage devices:

fio 的參數都一樣:

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

前面的廢話夠多了,先列 fio 的隨機存取測試結果;由快到慢分別是:

  1. Intel SSD 760p 搭配 NVMe-to-USB3 轉接器(左三,Raspberry Pi 4 開機時僅接上這個作 USB boot):iops 約 11k,傳輸約 42MB/s
  2. Fujitsu F500 SATA SSD 搭配 SATA-to-USB3 線(左一):iops 約 10k,傳輸約 40MB/s
  3. SanDisk Extreme Pro MicroSD card(在 Raspberry Pi 4 肚子裡):iops 約 390,傳輸約 1560KB/s
  4. SanDisk Ultra Go 隨身碟(插在 USB 3.0 hub,tiffany 藍那傢伙):iops 約 170,傳輸約 680KB/s
  5. Toshiba Canvio Basics 2.5″ USB3 外接硬碟(左二,應該是 SMR HDD):iops 約 63,傳輸約 250KB/s

有興趣的可以繼續看測試截圖…

More

By Joe Horn • Computer Hardware 2 • Tags: benchmarking, fio, JMS583, MicroSD, NVMe SSD, Orange Pi, Raspberry Pi, Raspberry Pi 4, RTL9210, SATA SSD, TFcard, USB flash, USB HDD

11 月 15 2020

用 certbot 取用 Let’s Encrypt 的 certificates

我原本使用 dehydrated,前陣子開始改用 certbot。
對我這懶人來說,certbot 有 rpm & dpkg,也都有 yum 跟 apt 的 repositories 可用,這點挺重要… XD

單機(純 hostname)的 certificate 搭配 nginx 用這行指令就可以完成:

certbot certonly --nginx -d {hostname}

取用 wildcard certificate 的話可以先看看 certbot 的 DNS Plugins 文件。
我自己的網域 DNS server 是自己掌管的,搭配的是 certbot-dns-rfc2136 。
編輯完設定檔(eg. /etc/letsencrypt/rfc2136.ini)之後也是一行指令完成:

certbot certonly \
	--dns-rfc2136 \
	--dns-rfc2136-credentials /etc/letsencrypt/rfc2136.ini \
	-d *.{DOMAIN} -d {DOMAIN}

另外,在 Ubuntu 安裝的 certbot 已經使用 systemd 的 timers 觸發定時更新,用下面這行指令可以確認其狀況。

systemctl status certbot.timer

By Joe Horn • WWW 1 • Tags: certbot, certificate, Let's Encrypt, SSL

10 月 31 2020

Intel 760p in ASUS ROG STRIX ARION

剛入手 Intel SSD 760p 跟 Asus ROG STRIX ARION ,跑個數據作紀錄…


By Joe Horn • Computer Hardware 0 • Tags: 760p, ASUS, Intel, ROG STRIX ARION

7 月 31 2020

MySQL 8.0.20 升級後記(踩 & 拆雷記)

續前一篇,這陣子除了表訂工作之外,就是觀察 MySQL 升級後有哪些地雷被引爆,接著開始救傷。

一顆跟 Java/JDBC 有關,錯誤訊息如下圖;原因是 MySQL 8 沒有 query_cache_size 等等的參數,而解決方式是更新 MySQL Connector/J。

另外一顆的成因/故事就比較長了…

MySQL 8 之前的版本,我們習慣把 character_set_server 設為 utf8 ,而 collation_server 設為 utf8_general_ci ;升版前看到這兩個變數預設值都換掉了,就很開心的拿掉… 於是部份(年紀比較大)的 PHP web server 就爆了,錯誤訊息如下圖。

初步研判以為是 PHP 認不得 utf8mb4 ,仔細追查後發現真因是「認不得 utf8mb4_0900_ai_ci」,解決方式是把 collation_server 設為 utf8mb4_general_ci 。

附帶一提, PHP 5.3 的 ext/mysqlnd 沒這問題,僅 5.4 ~ 5.6 受影響,而 PHP 7 之後都支援 UCA Ver.9 的 collations …

By Joe Horn • Database, JAVA, PHP 0 • Tags: charset, collation, JAVA, JDBC, MySQL, mysqlnd, PHP, uca

5 月 31 2020

MySQL 8.0.20 升級筆記

這陣子在處理 MySQL 5.6 -> 5.7 -> 8.0 升級的事,踩到一些地雷;紀錄一下。

目前新版的 MySQL 5.7 & 8.0 在全新安裝時會隨機產生 root 的密碼,並把密碼寫在 log 裡面。
這行為在自動化佈署時會遇上點麻煩,而避免隨機產生 root 密碼的方式是在 script 作這樣的事:

...
mysqld --initialize-insecure
systemctl start mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '##########';" | mysql
...

(5.7 -> 8.0)升級方面,第一個變化是 mysql_upgrade 不需要執行了;server 在啟動時會檢查,並自行升版。

原本在 5.7 版仍能使用的幾個 Server System Variables 在 8.0 版必須移除:

  • query_cache_type = 0
  • query_cache_size = 0
  • innodb_large_prefix = 1
  • innodb_file_format = Barracuda

expire_logs_days 也應移除,改用 binlog_expire_logs_seconds。
我另外在 8.0 版補上這兩個設定:

  • mysqlx = 0
  • default_authentication_plugin = mysql_native_password

5.7 -> 8.0 的預設語系/字元集有變化:

character_set_servercollation_server
MySQL 5.7latin1latin1_swedish_ci
MySQL 8.0utf8mb4utf8mb4_0900_ai_ci

特別提 8.0.20 是因為使用 Percona XtraBackup 時踩到地雷(Ref. percona-xtrabackup-80 does not work with mysql 8.0.20);原因是 Redo log 格式被更改了,Changes in MySQL 8.0.20 (2020-04-27, General Availability) 裡面有這段:

InnoDB: Redo log records for modifications to undo tablespaces increased in size in MySQL 8.0 due to a change in undo tablespace ID values, which required additional bytes. The change in redo log record size caused a performance regression in workloads with heavy write I/O. To address this issue, the redo log format was modified to reduce redo log record size for modifications to undo tablespaces. (Bug #29536710)

(有興趣深究的可以看看這個 commit)

Percona XtraBackup – Documentation 裡面也有這段說明:

Due to changes in MySQL 8.0.20 released by Oracle at the end of April 2020, Percona XtraBackup 8.0, up to version 8.0.11, is not compatible with MySQL version 8.0.20 or higher, or Percona products that are based on it: Percona Server for MySQL and Percona XtraDB Cluster.

另外一顆地雷是 Drupal 7 在連線初始化時會設定 SQL mode,但 NO_AUTO_CREATE_USER 在 8.0 被拿掉了;目前先用 這個 comment 裡面夾帶的 patch 作修正。

By Joe Horn • Database 1 • Tags: Drupal 7, MySQL, Percona XtraBackup

9 月 4 2019

Crucial MX300 on Lenovo X230

剛好拿到一台舊電腦作測試;發現裡面裝了一顆 2.5″ Crucial MX300,就順便作 SSD benchmarking … XD

By Joe Horn • Computer Hardware 0 • Tags: Crucial, Lenovo X230, MX300

‹ 1 2 3 4›»

Site Info

All content on this Blog is licensed under CC BY-NC-SA 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 (28)
  • Computer Software (45)
  • Database (23)
  • FreeBSD (21)
  • Funny (14)
  • Life (23)
  • Linux (5)
  • Mail (19)
  • Network (12)
  • Programing (40)
    • .NET (5)
    • JAVA (2)
    • Javascript (6)
    • PHP (29)
  • Thoughts (34)
  • Windows (13)
  • WWW (79)
    • phpBB (7)
    • WordPress (18)

Blogroll

  • 這裡沒有美食

Tags Cloud

AMD Apache benchmarking Bloglines Coppermine DNSBL eAccelerator fio Firefox free FreeBSD Gmail Google HDD Hsin-chu HTTPS IE Intel Javascript Lenovo Longhorn Microsoft MSN MySQL Office Percona XtraBackup performance PHP phpBB pirate Postfix restaurant RSS security sendmail software SpamAssassin SSL Subversion Taiwan theme translation Windows WordPress Yahoo

Ads

↑

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