2008年10月20日 星期一
apache+ssl
OpenSSL
http://www.openssl.org/docs/apps/pkcs12.html
iptables
http://redbug.twbbs.org/index.php/2007/07/14/273
mysql binary format
http://www.mydigitallife.info/2007/10/06/
how-to-read-mysql-binary-log-files-binlog-with-mysqlbinlog/zh_TW/
ssl detail
http://www.imacat.idv.tw/tech/sslcerts.html.zh-tw
2008年9月9日 星期二
21 )MySQL 單向 Replication 成功步驟紀錄
標 題:MySQL 5.0.37 Replication Master to Slave
記錄時間:2008.09.07
---------------------------------------------------------
以下指令顏色標記
語法:藍色 註解:綠色 預設環境/指定名稱:橙色
---------------------------------------------------------
預設環境:(依個人設定環境不同)
MySQL版本:5.0.37
Master IP:125.224.35.17
Slave IP:114.46.0.31
要進行同步的資料庫名稱:dblogtest
Mysql安裝位置:/var/lib/mysql
啟動檔位置:/etc/rc.d/init.d/mysqld
註:(1) 查詢MySQL版本指令
進入mysql後,鍵入 # select version();
(2) Host IP查詢指令 ,鍵入 # ifconfig
---------------------------------------------------------
安裝流程
1. 在Master上開一個帳號給Slave
2. 關閉 Master 的 MySQL
3. 備份要同步化的資料庫
4. 編輯 /etc/my.cnf 檔
5. 啟動 Master 的MySQL
6. 查看Master 是否有設定正確
7. 將備份的資料庫檔 scp 到 Slave
8. 關閉 Slave 的 MySQL
9. 編輯 /etc/my.cnf 檔
10. 解開備份資料庫檔案
11. 啟動 Slave 的 MySQL
12. 測試同步化是否成功
---------------------------------------------------------
一、Master的設定:
1. 開放一個帳號給Slave使用連結使用
確定啟動MySQL # /etc/rc.d/init.d/mysqld start
進入MySQL # mysql -u root –p
開放Slave帳號、密碼
# GRANT REPLICATION SLAVE on *.* to dbslave@114.46.0.31 identified by 'dbslave# quit
註:(1) dbslave為Master開放給slave的帳號(2) 114.46.0.31為slave的IP
(3) dbslave123為Master開放給slave的密碼
2. 將MySQL關閉
# /etc/rc.d/init.d/mysqld stop
3. 備份要同步化的資料庫
到MySQL的目錄下 # cd /var/lib/mysql
將資料庫資料打包 # tar –zcpf dblogtest.tar.gz dblogtest/
註:(1) dblogtest.tar.gz為所要壓縮成的檔案名稱
(2) dblogtest為要壓縮的目錄名稱
(3) tar中的p是指連同權限設定一起打包
4. 編輯/etc/my.cnf
註:如果/etc沒有底下my.cnf檔,
可以從/usr/local/mysql/share/mysql下複製*.cnf到/etc/my.cnf
語法如下:
# cp /usr/local/mysql/share/mysql/my-small.cnf/etc/my.cnf # vi /etc/my.cnf
在[mysqld]區段下加入:
server-id=1
log-bin=mysql-bin
binlog-do-db=dblogtest
註:(1) server-id=為主機編號,一般習慣來說優先設1
(2) mysql-bin=為將儲存紀錄檔的目錄名稱
(3) binlog-do-db=為指定要同步化的資料庫名稱
5. 啟動MySQL:
# /etc/rc.d/init.d/mysqld start
6. 檢視Master是否設定成功:
進入MySQL # mysql –u root –p
顯示Master設定狀態表 # show master status;
註:若Binlog-do-db有出現指定的資料庫名稱dblogtest
表示Master正在同步化此資料庫7. 將備份的dblogtest資料庫,傳送到Slave server
到MySQL的目錄下 # cd /var/lib/mysql
# scp dblogtest.tar.gz root@114.46.0.31:/tmp
註:(1) scp為透過一個安全且加密的連線在主機間傳輸檔案的語法
(2) dblogtest.tar.gz 為欲傳送的檔案
(3) root為接受端電腦(Slave server)的使用者帳號
(4) /tmp 為指定傳送到的目錄
(5) 輸入scp指令後,需要輸入密碼,
請輸入Slave server端的Linux使用者密碼
二、Slave的設定:
1. 將Mysql關閉
#/etc/rc.d/init.d/mysqld stop
2. 編輯/etc/my.cnf
在[mysqld]區段下加入:
server-id=3
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-do-db=dblogtest
replicate-same-server-id
binlog-do-db=dblogtest
master-host=125.224.35.17
master-user=dbslave
master-password=dbslave123
master-port=3306
master-connect-retry=30
註:(1) server-id=主機編號(須避免與Master server-id相同)
(2) log-bin=將儲存紀錄檔的目錄名稱
(3) relay-log=將儲存替代紀錄檔的目錄名稱
(4) replicate-do-db=指定同步化的資料庫名稱
(5) replicate-same-server-id
為若遇相同的server-id則以預設0值來取代,
避免忽略其中一個server
(6) binlog-do-db=指定要記錄的同步化資料庫(7) master-host=Master主機位址
(8) master-user=Master開放給Slave的帳號
(9) master-password= Master開放給Slave帳號的密碼
(10) master-port 設定傳輸的阜號
(11) master-connect-retry=若連線失敗,要重試的間隔秒數
3. 解開Master備份傳輸過來檔案
到MySQL目錄底下 # cd /var/lib/mysql
解壓縮在tmp目錄下Mastern傳送的檔案
# tar –zxvf /tmp/dblogtest.tar.gz
4.啟動mysql
#/etc/rc.d/init.d/mysqld start
三、檢測是否同步成功:
進入mysql後,鍵入# show slave staus \g;
若slave-IO-Running:yes,slave-SQL-Running:yes則表示成功
接下來則可以在Master新增資料表,然後確認Slaver是否同步更新。
---------------------------------------------------
參考:http://blog.shian.tw/mysql-5122-replication-master-to-slave.html
---------------------------------------------------
(補充)同步的原理:
MySQL同步的執行方式,其實是藉由Master在MySQL下新增修改所記錄的log-bin檔案當媒介,說明如下:
當Master開放一個帳號給Slave使用時,Slave就藉由此帳號連線到Master主機,而Slave會持續讀取Master主機的log-bin檔案,當Master新增修改資料庫時,log-bin檔案會即時記錄步驟,而當Slave發現Master主機的log-bin檔案有更動時,Slave會在本機執行Master's log-bin目錄內新紀錄的步驟檔案,藉此達到同步的功能。
2008年7月16日 星期三
20)MySQL 5.1-Replication官方說明文件
Table of Contents [+/-]
19.1. Replication Configuration [+/-]
19.1.1. How to Set Up Replication
19.1.2. Replication Formats
19.1.3. Replication Options and Variables
19.1.4. Common Replication Administration Tasks
19.2. Replication Solutions [+/-]
19.2.1. Using Replication for Backups
19.2.2. Using Replication with Different Master and Slave Storage Engines
19.2.3. Using Replication for Scale-Out
19.2.4. Replicating Different Databases to Different Slaves
19.2.5. Improving Replication Performance
19.2.6. Switching Masters During Failover
19.2.7. Setting Up Replication Using SSL
19.3. Replication Notes and Tips [+/-]
19.3.1. Replication Features and Issues
19.3.2. Replication Compatibility Between MySQL Versions
19.3.3. Upgrading a Replication Setup
19.3.4. Replication FAQ
19.3.5. Troubleshooting Replication
19.3.6. How to Report Replication Bugs or Problems
19.4. Replication Implementation [+/-]
19.4.1. Replication Implementation Details
19.4.2. Replication Relay and Status Files
19.4.3. How Servers Evaluate Replication Rules
附註:其他版本的官方Repkication文章
MySQL 5.0版 Replication
MySQL 6.0版 Replication
MySQL 3.2/4.0/4.1版 Replication
2008年6月26日 星期四
19 )MySQLCan't Start after Replication
在[mysqld]區段下是:
server-id=2 #編號
log-slave-updates #啟用串鏈覆寫機制
master-port=3306 #Master的port
replicate-do-db=XXX #指定要覆寫的資料庫
master-host=125.224.XXX.XXX #Master的IP
master-user=XXX #存取的帳號
master-password=XXX #存取的密碼
註:XXX需自行設定名稱
結果卻無法啟動MySQL
之後我去查log檔
[root@localhost etc]# cat /var/log/mysqld.log
內容如下:
080626 18:32:59 [Warning] You need to use --log-bin to make --log-slave-updates work.
之後我就去google一下
然後我就在my.cnf的[mysqld]區段下新增
log-bin=mysql-bin
然後重新啟動
[root@localhost etc]# /etc/rc.d/init.d/mysqld restart
正在停止 MySQL: [失敗]
正在啟動 MySQL: [ 確定 ]
成功啟動了~但還不確定可不可以複寫>"<
但實際原由和log-bin是什麼還不清楚
有人可以解說一下嗎?
紀錄:20080626 18:48