1. 搭建集群
參考 如何在ubuntu16.04上搭建mariadb galera集群
2. 啟動主節(jié)點
如果使用 service mysql start --wsrep-new-cluster
啟動主節(jié)點,可能會報錯:
[ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -110 (Connection timed out)
我們安裝的版本應該在 10.2 以上了忠怖,需要用如下指令來啟動:
galera_new_cluster
這時候可能還啟動不了
如果這個節(jié)點之前以集群節(jié)點形式啟動過切心,因為某些原因重啟了數(shù)據(jù)庫崭捍,那么啟動過程會告訴你盖奈,由于這個節(jié)點不是集群中最后一個關閉的節(jié)點拆又,所以無法以主節(jié)點形式啟動养晋。因為如果這個節(jié)點不是最后一個關閉的話偏窝,它的數(shù)據(jù)就不是最新的數(shù)據(jù)收恢,如果以它為主節(jié)點,別的節(jié)點從它同步數(shù)據(jù)祭往,就會造成數(shù)據(jù)損失
這時候如果一定要以該節(jié)點作為主節(jié)點啟動伦意,可以通過如下方法解決:
在 /var/lib/mysql/grastate.dat
文件中,把 safe_to_bootstrap
設置為1硼补。
然后重新執(zhí)行 galera_new_cluster
這樣默赂,主節(jié)點就啟動了
注意,這是危險操作括勺,慎用缆八!
3. 啟動從節(jié)點
使用 service mysql start
命令啟動從節(jié)點,從節(jié)點會從主節(jié)點同步數(shù)據(jù)疾捍,但同步的過程中可能會花式報出各種形式的錯誤奈辰,最有可能的是超時錯誤
一些錯誤如下:
[ERROR] WSREP: Process was aborted.
[ERROR] WSREP: Process completed with error: wsrep_sst_rsync --role 'joiner' --address '192.168.0.179' --datadir '/
[ERROR] WSREP: Failed to read uuid:seqno and wsrep_gtid_domain_id from joiner script.
[ERROR] WSREP: SST failed: 2 (No such file or directory)
[ERROR] Aborting
[Warning] WSREP: 1.0 (compute1): State transfer to 0.0 (compute2) failed: -255 (Unknown error 255)
[ERROR] WSREP: gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():737: Will never receive state. Need to abort.
WSREP: Member 2.0 (compute3) requested state transfer from '*any*', but it is impossible to select State
[ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -110 (Connection timed out)
[ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1379: Failed to open channel ''galera_cluster’' at 'gcomm://192.168.0.177,192.168.0.179,192.168.0.205': -110 (Connection timed out)
[ERROR] WSREP: gcs connect failed: Connection timed out
[ERROR] WSREP: wsrep::connect(gcomm://192.168.0.177,192.168.0.179,192.168.0.205) failed: 7
[ERROR] Aborting
解決辦法如下:
刪除一些緩存文件:
在所有數(shù)據(jù)庫節(jié)點的 /var/lib/mysql
目錄下刪除 galera.cache
和 gvwstate.dat
文件,重新依次啟動主節(jié)點和從節(jié)點乱豆。
如果從節(jié)點依舊不能正常啟動奖恰,很可能是因為主節(jié)點數(shù)據(jù)過大,同步過程超時宛裕,所以可以在從節(jié)點的 /etc/systemd/system/mariadb.service.d
目錄下瑟啃,新建一個配置文件,把超時時間設置為永不超時揩尸,如下:
vim /etc/systemd/system/mariadb.service.d/timeout.conf
[Service]
TimeoutSec=infinity
重啟下該文件:
systemctl daemon-reload
然后重啟從節(jié)點數(shù)據(jù)庫 service mysql restart
這時候應該可以正常啟動了
參考
https://serverfault.com/questions/812719/mysql-mariadb-not-starting
https://stackoverflow.com/questions/37212127/mariadb-gcomm-backend-connection-failed-110
https://www.atlantic.net/hipaa-compliant-cloud-storage/how-to-setup-rsync-daemon-linux-server/
http://blog.itpub.net/133735/viewspace-2140548/
數(shù)據(jù)庫集群的學習還任重道遠