单台mysql增加节点_如何在一台服务器上安装两个PXC集群节点
我認為在單個物理服務器上運行2個或多個Percona XtraDB Cluster(PXC)節點這樣沒有什么意義,除了教育和測試目的,但在這種情況下這樣做仍然是有用的。最受歡迎的實現方式似乎是服務器的虛擬化,比如利用流浪盒子。但是同樣的方式你可以運行多個MySQL實例在并行操作系統級別上,還有并發的mysqld的形成過程,因此你也可以有多個Percona XtraDB Cluster節點。而且實現這一目標的方法是恰恰相同的:使用專用的datadirs和為每個節點設置不同的端口。
哪個端口?
Pecona XtraDB Cluster 使用?4 個 TCP 端口:
常規的MySQL端口(默認3306)
(Galera)(默認4567)
狀態傳輸端口(默認4444)
增量狀態傳輸端口(默認是:組通信端口(4567)+ 1 = 4568)
當然,當你在同一臺服務器上有多個實例的默認值,并不適用于所有人,所以我們需要為其他實例定義新的端口,確保本地防火墻對他們是開放的,如果有一個活動(iptables,selinux,…)。
安裝Percona XtraDB 集群,配置并啟動第一個節點
我的測試服務器用的是一個全新的CentOS(社區企業操作系統)6.5 版,系統安裝了Percona yum 工具,通過工具我安裝了最新的Percona XtraDB集群(5.6.20-25.7.888.el6版本);注意:你可能需要安裝EPEL(企業版Linux額外包)和socat(Socket CAT)工具,這兩個工具是獨立的(見bug)。 為了避免沖突,我已經停止了mysql服務的自啟動:
chkconfig?–level?3?mysql?off
chkconfig?–del?mysql
我原本計劃從壓縮包中安裝PXC(Percona XtraDB Cluster),但是后來我決定通過yum工具進行安裝,這樣可以自動下載所有依賴包。 這是我最初的/etc/my.cnf 文件(注意默認值的使用):
[mysqld]
datadir?=?/var/lib/mysql
port=3306
socket=/var/lib/mysql/mysql-node1.sock
pid-file=/var/lib/mysql/mysql-node1.pid
log-error=/var/lib/mysql/mysql-node1.err
binlog_format=ROW
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_name?=?singlebox
wsrep_node_name?=?node1
wsrep_cluster_address=gcomm://
我使用下面的命令手動啟動了一個節點上的集群引導程序:
$?mysqld_safe?–defaults-file=/etc/my.cnf?–wsrep-new-cluster
啟動后,你應當可以通過本地接口訪問該節點:
$?mysql?-S?/var/lib/mysql/mysql-node1.sock
配置和啟動第二個節點
然后,我創建了一個類似的第二個實例配置文件的配置,我叫/etc/my2.cnf,有以下修改:
[mysqld]
datadir?=?/var/lib/mysql2
port=3307
socket=/var/lib/mysql2/mysql-node2.sock
pid-file=/var/lib/mysql2/mysql-node2.pid
log-error=/var/lib/mysql2/mysql-node2.err
binlog_format=ROW
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_name?=?singlebox
wsrep_node_name?=?node2
wsrep_cluster_address=gcomm://127.0.0.1:4567,127.0.0.1:5020
wsrep_provider_options?=?“base_port=5020;”
注意使用base_port:通過它定義的,5020端口是用于組通信和5020(上面)為IST保留著(一樣簡單的使用gmcast.listen_addr =tcp:/ / 127.0.0.1:5021)。
您需要在這第二個實例中為datadir創建和設置正確的權限,否則MySQL無法創建一些文件(像.pid和.err),雖然你不需要運行mysql_install_db腳本:
$?chown?-R?mysql:mysql?/var/lib/mysql2
然后,您可以用以下命令啟動第二個實例:
$?mysqld_safe?–defaults-file=/etc/my2.cnf
當開始時,通過看日志來觀察這第二個節點開始,與主節點間的通信和加入集群。從一開始的實例在不同的終端上執行:
$?tail?-f?/var/log/mysql2/mysql-node2.err
記住,任何時候都可以使用mysqladmin停止節點,您只需要提供正確的套接字作為參數,如:
$?mysqladmin?-S?/var/lib/mysql/mysql-node1.sock?shutdown
最后,一旦你有整個集群,你應該編輯my.cnf中的第一節點與一個完整的wsrep_cluster_addres,在/etc/my2.cnf上面顯示。
使用mysqld_multi
我最新的博客發表在使用myslqd_multi運行MySQL多實例.它也可以在這里使用,唯一的例外是,你需要確保,無論什么時候初始化運行集群,在第一個節點要使用“wsrep_cluster_address=gcomm://”,同時,注意在其它節點之前啟動它.
在我看來,使用mysqld_multi的唯一優勢,在于促進節點的管理(啟動/停止),并集中所有的配置到單一的my.cnf文件中.除了教學目的,你完全不需要在單一服務器運行一個PXC集群.
為生產服務器增加第二個Percona XtraDB Cluster節點
如果你有一個生產集群,它們由多個物理服務器組成,同時,你想為其中之一增加第二個節點,這個情況會怎么樣呢?它以同樣的方式工作.配置的時候,你需要使用服務器的IP地址取代回路地址.這里有一個PXC集群的例子,初始情況下,它由三個節點組成:?192.168.70.1, 192.168.70.2和 192.168.70.3.我已經增加了第四個節點,它正運行并服務著第三個節點.在修改之后,wsrep_cluster_address?行看起來像下面這樣:
wsrep_cluster_address?=?gcomm://192.168.70.1,192.168.70.2,192.168.70.3:4567,192.168.70.3:5020
其它資源
我有一個關于“如何在單一服務器配置三節點的集群”的參考資料頁面,它采用了一些不同的方法,比我上面談到的內容包含更多的細節.
我們一直都在努力堅持原創.......請不要一聲不吭,就悄悄拿走。
我原創,你原創,我們的內容世界才會更加精彩!
【所有原創內容版權均屬TechTarget,歡迎大家轉發分享。但未經授權,嚴禁任何媒體(平面媒體、網絡媒體、自媒體等)以及微信公眾號復制、轉載、摘編或以其他方式進行使用。】
微信公眾號
TechTarget
官方微博
TechTarget中國
總結
以上是生活随笔為你收集整理的单台mysql增加节点_如何在一台服务器上安装两个PXC集群节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql extis_SQL --
- 下一篇: mysql sequence 关键字_m