close
Blogtrottr
Mobile01最新文章
 
Shop Tervis tumblers.

Create a one of a kind personalized gift. It's fun and easy to design!
From our sponsors
使用DRBD與Heartbeat建構高可靠性的MySQL資料庫伺服器 (2/4: 資料庫伺服器)
Jul 22nd 2014, 07:42

MySQL Server是個非常受人歡迎, 好用的資料庫軟體, 不過在MySQL AB被Sun Microsystems收購, 其後Sun又被Oracle給買了, 雖然維持了MySQL Server社群版(Community Edition)仍是開源軟體, MySQL Server用戶眾多疑慮下, MySQL的創始人開發了完全相容MySQL的MariaDB, 所以MySQL的愛用者也不用過於擔心。

您可以繼續使用MySQL或MariaDB, 在本系列文章, 我們採用從MySQL分支出來的Percona Server, 它與MySQL完全相容, 是個MySQL Server的強化版本, 還有方便的工具程式可以使用。

本系列文章將分成四段, 避免過於冗長, 方便各位閱讀:
一、DRBD安裝與設定
二、MySQL資料庫安裝與設定
三、Heartbeat服務監測安裝與設定
四、MySQL資料庫伺服器Master-Slave Replication安裝與設定

Percona Server安裝
Percona提供了Debian用的套件, 經由修改系統/etc/apt/sources.list後以apt-get安裝, 十分方便; 在此之前, 我們必須先完成幾個步驟, 才能順利安裝。db1與db2都需要安裝Percona Server, 大致上是一樣的, 有差異的部分我會標示出來讓各位注意。

慣例我們給MySQL Server的用戶與群組名稱都叫"mysql", 由此方法增加:

groupadd -g 3306 mysql
useradd -g 3306 -u 3306 -r mysql


group id與user id都是3306, 一如MySQL Server預設的服務port 3306。

增加Percona的public key, 並匯到apt

gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | apt-key add -


看到"OK"訊息代表匯入成功

編輯apt的sources.list

nano /etc/apt/sources.list

將以下Percona提供的套件伺服器位址加入

deb http://repo.percona.com/apt wheezy main
deb-src http://repo.percona.com/apt wheezy main


儲存後離開。


執行apt-get update更新套件資訊, 當然接著你也能跑apt-get upgrade把系統都升級, 不過已經用了Debian 7.6了, 所以沒有新東西需要安裝。

安裝Percona Server
目前的最新版是版號5.6, 所以採用套件名稱"percona-server-server-5.6"

apt-get install percona-server-server-5.6


同樣按下"Y"開始安裝Percona Server, 在安裝期間會詢問資料庫伺服器帳號root的密碼, 需要輸入兩次以確保你的密碼是正確的。


安裝完後, 資料庫伺服器已自動起動, 不過我們後續還有很多變動, 所以先關掉資料庫伺服器。

停止Percona Server的服務

/etc/init.d/mysql stop


MySQL伺服器停止了。


安裝Percona Tool Kit與XtraBackup

apt-get install percona-toolkit
apt-get install percona-xtrabackup


XtraBackup備份工具能支援MyISAM與InnoDB(在Percona Server叫XtraDB)類型的資料表。

設定my.cnf
將建議的預設值放到my.cnf, 並且放在/etc/mysql下, 我將系統原本的my.cnf做個備份, 叫"my_backup.cnf", 或是刪掉它也可以。

nano /etc/mysql/my.cnf


製作新的/etc/mysql/my.cnf
請貼上以下內容到my.cnf, 然後存檔

[mysqld]
binlog_format = STATEMENT
character_set_server = utf8
collation_server = utf8_unicode_ci
datadir = /var/lib/mysql
default_storage_engine = InnoDB
expire_logs_days = 7
innodb_buffer_pool_instances = 1 # 1 CPU = 1, 12 CPU = 12
innodb_buffer_pool_size = 3276M   # 4GB RAM, 80%
innodb_data_file_path = ibdata1:64M;ibdata2:64M:autoextend
innodb_file_format = Barracuda
innodb_file_per_table
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_io_capacity = 200 # 1 CPU = 200, 12 CPU = 2400
innodb_log_file_size = 64M
innodb_print_all_deadlocks = 1
innodb_support_xa = FALSE
key_buffer_size = 32M
log-bin = mysqld-bin
log-queries-not-using-indexes
log-slave-updates
long_query_time = 1
max_allowed_packet = 64M
max_connect_errors = 4294967295
max_connections = 4096
port = 3306
skip-name-resolve
slow_query_log = 1
thread_cache = 1024
tmpdir = /srv/tmp
transaction_isolation = REPEATABLE-READ
user = mysql
wait_timeout = 60
# You *MUST* change!
server-id = 1


以上的設定可以參考您自己機器的規格修改, innodb_buffer_pool_size建議使用80%的總記憶體容量, 像我這測試機有4GB RAM, 所以設3276M; 另外server-id在後續的Master-Slave Replication會用到, 這裡我們給它server-id = 1


建好my.cnf

以下的步驟, 只有db1需要做
將mysql目錄的所有資料移到DRBD的/srv/mysql

cd /var/lib
mv mysql /srv/mysql
ln -s /srv/mysql /var/lib/mysql
chown -R mysql:mysql /srv/mysql

移除InnoDB初始資料

cd /srv/mysql
rm ibdata1
rm ib_logfile*

測試啟動Percona Server

/etc/init.d/mysql start

再次停止Percona Server, 後面需要安裝Heartbeat

/etc/init.d/mysql stop


起動Percona Server成功後, 再次把它關閉。

db2依照前面的安裝步驟設好Percona Server, 移除/var/lib/mysql下的資料。

cd /var/lib
rm -rf mysql
ln -s /srv/mysql


也就是說standby的db2不需要/var/lib/mysql, 因為之後安裝Heartbeat監視服務狀態若db1有異常掛點了, 會把db2 online並掛載上/srv, 而/srv已經存在了我們正在使用的資料表與其所需檔案, 所以砍掉db2在安裝期間所產生的檔案。


db2是standby機器, 所以實際上/srv沒有掛載, 不過當它接手後就有作用了。

回到db1, 看看/etc/mysql/debian.cnf
取得user與password

修改db2 Percona Server的debian.cnf

nano /etc/mysql/debian.cnf


修改user與password為root與其密碼跟db1的debian.cnf一樣。


儲存後, 不需要啟動db2的Percona Server。

以上MySQL資料庫安裝與設定就完成了, 次回: Heartbeat服務監測安裝與設定。

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions
arrow
arrow
    全站熱搜

    yisoajkls 發表在 痞客邦 留言(0) 人氣()