Home » Computer » Software » OS » Archive by category "Linux" (Page 18)

innobackupex

innobackupex 是 Percona 因為 XtraBackup 需要,改自 InnoDB 的 script,可以不停機備份 InnoDB 或 XtraDB。對於沒有一開始就設定 DRBD 或是類似架構的人來說,這個方法算是蠻不錯的。(當然,如果允許停機的話更簡單)

這個方法是以 InnoDB 為主體的 database 為主,MyISAM 也可以透過這個方式備份,不過這就不在我測試的範圍內了... (我測的兩個 cluster 只有系統資料庫是使用 MyISAM,其他都是 InnoDB)

這邊寫的版本是使用 XtraBackup 0.7 版 (前幾天測試的,當時 0.8 版還沒有正式放出來,就先拿 0.7 版測試),在 Debian 上先安裝 package:

# dpkg -i xtrabackup_0.7-1_amd64.deb

裝完後就可以試著使用 innobackupex 備份,並要求 innobackupex 紀錄 slave 資訊:

# innobackupex-1.5.1 --slave-info [dest_path]

在「Btw xtrabackup is not only backup..」有推薦用 --stream=tar 將備份資料輸出成 tar 格式,不過實際上會因為 ibdata1 被改變而使得 tar 認為無法備份而失敗,所以目前比較偏好的作法是直接輸出到某個目錄下 (就不會用到 tar),目錄可以是 nfs 或是 local disk。

另外,預設是透過 socket 連 MySQL,但也可以故意用 --port=3306 強制他走 TCP,或是用其他指令指定帳號及密碼,這些都可以直接執行 innobackupex 看到。

innobackupex 會試著使用 mysql 並下一些指令,但使用時並不會指定完整路徑,所以會依照 PATH 內所設定的路徑而執行。不過,因為上面的指令通常需要 root 權限,如果使用 sudo 有可能會將 PATH 重設而造成 mysql 無法執行而失敗 (像是 Percona 的版本是裝在 /usr/local/mysql-blah-blah 下,所以配合 sudo 時的用法會是:

# sudo env PATH=/usr/local/mysql/sbin:/usr/local/mysql/bin:[original_path] innobackupex-1.5.1 --slave-info [dest_path]

這樣就解決了。

備份完成後再用 --apply-log 把還在 log 的 entry 寫回 pool:

# sudo innobackupex-1.5.1 --apply-log [dest_path]

這樣一來,一份可以當作 slave server 的資料就完成了。

丟到其他機器後,用 chown 先把檔案權限改對:

# chown -R mysql:mysql [data_dir]

然後跑起 mysql 後,看裡面的 slave 資訊設定 master:

CHANGE MASTER TO master_host = 'master_host', master_user = 'master_user', master_password = 'master_password', master_log_file = 'blahblah.012345', master_log_pos = 123456;

這樣就可以讓 slave 動起來了。(記得要自己 START SLAVE;)

在 Amazon EC2 上跑 XFS

如果想在 Amazon EC2 上跑 XFS,在某些情況會遇到 kernel panic,而這個問題在 lenny (以及之後的版本) 上有比較簡單的解法了:「Debian Lenny and XFS causes kernel panic: Suggested Workaround」,解法是在 mkfs.xfs 時多增加 -l version=1 即可。

另外官方也在下面 reply 了另外一個解法,針對 FC8 kernel 的修正。

然後 Eric Hammond (EC2 上最有名的 Debian AMI 製作者) 說 Ubuntu 也開始在測試 EC2 platform (www.ubuntu.com/ec2),將會是第三個解法...

如果有在 EC2 上用 EBS 跑 MySQL 的,可以考慮換成 XFS... MySQL 在 XFS 上比起 ext3 好不少。

將 Ubuntu 裡的 Java 更換成 Sun 的版本

這篇說的方法在 Debian 可能也一樣,不過暫時沒有打算在有 Debian 的機器上測試。

關於 Ubuntu 的修改,你可以參考「Java - Community Ubuntu Documentation」這篇,我在下面提到的方式會透過 update-alternatives 修改。

裝完 SunJava 後發現還是跑 GNU 的版本,看了 link 結構後猜大概會跟「Ubuntu / Debian 快速修改預設編輯器(nano -> vim)」這篇的方法一樣:

lrwxrwxrwx 1 root root 22 2008-10-27 01:38 java -> /etc/alternatives/java*

所以修改方式是用 root 跑:

# update-alternatives --config java

同理,如果要把 compiler (javac) 也換成 Sun 的版本,用:

# update-alternatives --config javac

就可以了。用 -version 可以驗證:

$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)
$ javac -version
javac 1.6.0_10

Debian 上跑 apache22-mpm-worker

FreeBSD 上跑 Apache 2.2 worker 的方法在「apache22 (worker) + mod_fastcgi + php5-fcgi」這篇寫過了,同樣的架構在 Debian 上跑卻發現比 prefork 還吃記憶體,花了一些時間找,發現是預設的 Stack 太大造成的,所以:

<IfModule mpm_worker_module>
    ThreadStackSize   65536
    ThreadLimit         256
    StartServers          1
    MaxClients          256
    MinSpareThreads       1
    MaxSpareThreads     256
    ThreadsPerChild     256
    MaxRequestsPerChild   0
</IfModule>

加了 ThreadStackSize 這個設定後,每個 thread 的 stack 就會比較小了 (預設超過 1MB,不記得多少了),這個方式跑了一個月後還蠻正常的。

網頁截圖

照著「在 Linux 上架設 Screenshot Service」這篇講的方法在 Debian 上灌。xdite 是在 Ubuntu 上灌,結果像 Flash Player 這類 Debian policy 原因而超麻煩 (加上平台是 amd64),吃了不少苦頭,不過也測出一些東西,可以確保安裝出來的玩具比較正常。

透過 Xming,有很多地方可以 tune:

  • 設定 Firefox 在 shutdown 時把 history/cookie 之類的資料清空,做網頁截圖的環境會比較乾淨。
  • 設定 about:config,將 HTTP pipeline 打開,以及其他效能設定的東西調好。
  • 裝 Plugin 的部份就不用像 xdite 那樣,在 Windows 上裝好再惡搞傳上去... XD

這是 Xming 的畫面:

還有蠻多地方要努力的,不過目前看起來還蠻不錯...

從 mod_fcgid 換回 mod_fastcgi

一直以為 mod_fastcgiDebian 從 repository 裡拿掉,後來才發現是在 non-free 裡面,只是因為新灌的 Debian 沒有把 non-free 加上去所以找不到。

用了一陣子的 mod_fcgid,現在換回 mod_fastcgi 看看有沒有比較穩定囉。

Ubuntu 8.10 beta 版本

把 Notebook (IBM ThinkPad R60) 上的 Ubuntu 8.04 升級到 8.10 beta 後,WPA 加密的無線網路常常連不上,而且系統常常死當。本來以為是目前升級的程式還有問題,沒有將系統內相關的設定轉換到新版,所以就找時間重灌... 結果重新安裝 Ubuntu 8.10 後發現還是一樣。

Google 找發現有不少人在升級到 8.10 後也有類似的問題,看起來這部份還在調整。

這幾天透過 3G 網卡每天更新驅動程式以及應用軟體,看看會不會在正式釋出前修正,不然就得再灌回 8.04 了...

重灌 Windows...

又有一陣子沒有重灌 Windows 了,這次居然是因為誤砍 Windows 系統檔案而爛光光。還好還可以先拿 Notebook 的 Ubuntu 做事,然後另外一邊重灌 Windows 以及 Windows Update...

Archives