顯示具有 MySQL 標籤的文章。 顯示所有文章
顯示具有 MySQL 標籤的文章。 顯示所有文章

2012年8月30日 星期四

使用 innotop 監控 MySQL 性能

這篇文章的連結

innotop 是​​一個通過命令模式顯示 MySQL 和 InnoDB 的監測工具。它有很多特點,快速的配置的,易於使用等。它吸取了 mytop 的精華這使它變得更加強大。innotop 是​​用 perl 寫成的,這是它能更加靈活的使用在各種操作平台之上,它能詳細的的監控出當前 MySQL 和 innotop 運行的狀態,以便維護人員根據結果合理的最佳化  MySQL,讓 MySQL 更穩定更高效的運行。

上列介紹文由 Linxu MySql熱愛著 轉載, 我僅修正部分用語!

2009年12月26日 星期六

線上環境的 MySQL 預設值修改(Jeremy 建議)

這篇文章的連結
MySQL 灌好後, 有某些預設值是有爭議的(或者說, 是很沒意義的), Jeremy 提出了幾點建議~

下述取自 Jeremy Zawodny 的文章: Fixing Poor MySQL Default Configuration Values.

直接取重點, 就是把下面這幾行加到 /etc/mysql/my.cnf 最後面, 或者 /etc/mysql/conf.d/jeremy.cnf 裡.

max_connect_errors = 1844674407370954751
connect_timeout = 20
skip-name-resolve
slave_net_timeout = 30

為何要加這些, 可以參考原文, 或者參考 DK 此篇文章: 無論如何都應該修改的 MySQL 預設值.

2009年12月24日 星期四

Linux install mytop

這篇文章的連結
http://jeremy.zawodny.com/mysql/mytop/
mytop 是一個用 perl 寫的 console-based 的mysql效能監控工具

要使用它必須先安裝一些 perl 的 module
DBI
Term::ReadKey
Term::ANSIColor
Time::HiRes

用 CPAN 安裝這些 module
首先要切換為 root 權限

[root@localhost]# perl -MCPAN -e shell

/usr/lib/perl5/5.8.5/CPAN/Config.pm initialized.

...略...

Are you ready for manual configuration? [yes] no (直接採用預設值自動設定即可, 輸入 no)


...略...

cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Term::ReadKey
CPAN: Storable loaded ok
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:

...略...

/usr/bin/make install -- OK

cpan> install Term::ANSIColor
Running install for module Term::ANSIColor
Running make for R/RR/RRA/ANSIColor-2.02.tar.gz

...略...

/usr/bin/make install -- OK

cpan> install Time::HiRes
Running install for module Time::HiRes
Running make for J/JH/JHI/Time-HiRes-1.9719.tar.gz
Fetching with LWP:

...略...

/usr/bin/make install -- OK

cpan> quit
Terminal does not support GetHistory.
Lockfile removed.

wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz
tar -zxvf mytop-1.6.tar.gz
cd mytop-1.6
perl Makefile.PL
make
make test
make install

設定預設設定檔:
cd ~
vi .mytop

填入相關帳號資料格式如下
user=mytop
pass=
host=127.0.0.1
db=test
delay=1
port=3306
batchmode=0
header=1
color=1
idle=1


其他詳細說明可用此指令觀看:
perldoc mytop

其他參考資料:
如出現
Use of uninitialized value in substitution (s///) at /usr/bin/mytop line 958.
依下網址內 fix diff patch
http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/7ac750bd208e819a

Ubuntu Linux 9.10 的 MyTop QPS 修正
http://plog.longwin.com.tw/my_note-unix/2009/12/24/ubuntu-910-mytop-qps-fix-2009

SSD mysql 效能測試
http://jnlin.org/category/network/mysql/

2009年12月18日 星期五

MySQL server has gone away

這篇文章的連結
"MySQL server has gone away."

通常 MySQL C API 回傳這個 error message 的時候都是 MySQL server crash,或是有什麼 nasty 的事情發生了。但是如果 MySQL server 好端端的沒事的話呢?

MySQL C client API,在 5.0.3 以前,會設定一個 reconnect flag,如果被 server timeout 或是 disconnect,那麼在 issue query 以前會自己 reconnect。所以如果你用舊版的程式,在新版的 API (newer than 5.0.3) 上面 compile,那麼可能就會爆了這麼一下;因為新版裡面這個 flag 是設成 0,當 client 被 server disconnect 或是 timeout 的時候,再要下 query 的話,就會發現 server 不見了...

要從 client code 解這個問題的話,5.0.13 以後的 API 版本,可以設定讓他吃MYSQL_OPT_RECONNECT 來解決。

For example,


mysql_init(&mysql);
mysql_options(&mysql, MYSQL_OPT_RECONNECT, "1");
mysql_real_connect("blahblah");

就可以了。這個故事告訴我們... 升級以後,文件一定要記得看 -_-

2008年9月28日 星期日

Error: shared library "lthread.[35]" does not exist

這篇文章的連結
今天心血來潮(颱風天無聊)!
正在把把測試機的 mysql 更新到新版重編卻碰到了下面這個 Error
/bin/cat /usr/ports/devel/linuxthreads/pkg-message
Please see the README.FreeBSD file in the work directory for
instructions on how to compile with linuxthreads, and for other
issues and problems.
===> Registering installation for linuxthreads-2.2.3_23
===> Returning to build of mysql-server-5.0.67
Error: shared library "lthread.[35]" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql50-server.

一般習慣 FreeBSD 用 ports 安裝 MySQL 時會加的兩個參數 WITH_LINUXTHREADS=yes BUILD_STATIC=yes
資料中寫到
從FreeBSD5.x以後的版本下不用LINUXTHREAD啦,用libthr可以得到更好的性能,但是要編譯成動態模式,因此安裝的時候不要再帶這兩個選項了

在6.x上用這兩個選項還是可以安裝的,7.0開始就不行了

配置線程庫為libthr.so
ee /etc/libmap.conf

[mysqld]
libpthread.so.2 libthr.so.2
libpthread.so libthr.so

重啟MySQL。檢查
ldd /usr/local/libexec/mysqld
/usr/local/libexec/mysqld:
libz.so.4 => /lib/libz.so.4 (0x48662000)
libwrap.so.5 => /usr/lib/libwrap.so.5 (0x48674000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x4867b000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x48694000)
libm.so.5 => /lib/libm.so.5 (0x48780000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x48798000)
libthr.so.3 => /lib/libthr.so.3 (0x487a2000)
libc.so.7 => /lib/libc.so.7 (0x487b4000)

可以看到:libthr.so.3 => /lib/libthr.so.3 (0x487a2000)

代表OK了!

補充
kernel打開SCHED_ULE/PREEMPTION 可得更好效能