2010年4月26日 星期一

FreeBSD 找不到 Share Library 的解決方法


  1. 定義 LD_LIBRARY_PATH 於 環境變數中,將 Share Library 的所有可能路徑都設上去
    # setenv LD_LIBRARY_PATH /path/to/share/library:$LD_LIBRARY_PATH

  2. 以 Root 身份執行 /etc/rc.d/ldconfig restart
    # /etc/rc.d/ldconfig restart

  3. 打完收工


2010年4月21日 星期三

感動的片段

有一種感動 只能放在心裡 不能用言語表達
那是當你老了坐在庭院的躺椅上 吹著徐徐微風時 會不自禁發出微笑的片段

老伴看著你問「什麼事這麼開心?」
你只回說「沒事,只是想到以前的往事」就無法繼續說明

因為你無法說明 也不願用言語去說明
深怕以言語的形式出現時 會破壞了那形而上的純淨的感動
只願像個拿著棒棒糖的小朋友 獨自享受


2010年4月13日 星期二

MySQL 設定 Replication (Master - Slave)

文章出自 johnpupu

MySQL 設定寫入 Master 後, 自動 Replication 到 Slave 去, 運作基本原理是:

INSERT/UPDATE/DELETE 語法, 自動寫入 Master 的 binlog file.
由 GRANT REPLICATION 授權的帳號, 自動將 SQL 語法 repl 到 Slave 的 DB 執行.
因而完成 Replication 的動作.

Master

1. 複制 my.cnf

甲、#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf


2. 修改my.cnf

甲、server-id = 1

乙、log-bin=mysql-bin

丙、expire-logs-days = 7

丁、max_binlog_size = 268435456

戊、# 若是 innodb, 且有用 transaction 的話, 需再加入下面兩行
innodb_flush_log_at_trx_commit=1
sync_binlog=1

3. # mysql -u root -p # 進入 mysql

甲、# 先假設 帳號 repl, 密碼 repl_pass, 此步驟是 設定 repl 的帳號/密碼,
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass';
# 格式:
mysql > GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl_pass';
# (Replace with a real password!)

乙、# 先讓 DB 不要再寫資料進去
mysql> FLUSH TABLES WITH READ LOCK;

丙、# 這邊資料都要記好, 等一下設定 Slave 要用
mysql> SHOW MASTER STATUS;

+----------------------+------------+------------------+----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+------------+------------------+----------------------+
| mysql-bin.000014 | 232 | | |
+----------------------+------------+------------------+----------------------+


4. # 離開, 準備倒資料
mysql> quit

5. # 倒資料
cp –Rp /var/db/mysql /mnt/nas

6. # dump 完資料後, 進去 mysql 解除唯讀
mysql> UNLOCK TABLES;





Slave

7. 複制 my.cnf

甲、#cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf


8. 修改my.cnf

甲、server-id = 2 # server-id 不能與其它機器相同

乙、log-bin=mysql-bin

丙、expire-logs-days = 7

丁、max_binlog_size = 268435456

戊、# 若是 innodb, 且有用 transaction 的話, 需再加入下面兩行
innodb_flush_log_at_trx_commit=1
sync_binlog=1

9. 複制mysql 資料夾過來

甲、# mv /var/db/mysql /var/db/mysql.bak

乙、# cp -Rp /mnt/nas/mysql /var/db/mysql

10. 設定slave

甲、mysql> CHANGE MASTER TO
MASTER_HOST='MASTER_HOSTNAME',
MASTER_USER='repl',
MASTER_PASSWORD='repl_pass',
MASTER_LOG_FILE='mysql-bin.000014',
MASTER_LOG_POS=232;
# 這邊就要用到之前 Master 抄下來的值

乙、# 這樣子就會開始 Replication 了, 會將 LOG_POS 之後新的資料開始 sync 回來
mysql> START SLAVE;

丙、# 檢查一下設定
mysql> show master status;



丁、# 檢查一下設定, 看是不是有異常狀況
mysql> show slave status;


測試

11. 在 master: mysql> create database test2;

12. 在 slave: mysql> show database; # 應該會看到 test2