最近Hive的原數據要用到mysql,因此又把Galera Cluster又裝了一遍,雖然裝過不少遍,但依然會有一些模糊的地方。因此大體記錄下來分享出來。node
Galera Cluster必須安裝在至少3臺服務器上,做爲全主無延遲集羣,奇數臺服務器是爲了防止腦裂。mysql
首先要準備的文件以下c++
安裝以前,咱們要安裝一些準備的庫:sql
yum install libaio gcc gcc-c++ boost-devel scons check-devel openssl-devel openssh-clientsvim
perl-DBD-MySQL perl-Time-HiRes perl-Digest nc rsync lsof galera autoconf 大概就這些了吧,不排除會有遺漏,因此裝galera cluster是很麻煩的事情。服務器
安裝以前移除CentOS 7自帶的mysql庫,這個以前博客有寫過ssh
yum remove mariadb-libs-5.5.56-2.el7.x86_64socket
而後開始安裝ide
rpm -ivh 加文件名ui
如rpm -ivh mysql-wsrep-libs-compat-5.6-5.6.36-25.20.el6.x86_64.rpm
圖片中全部的要所有安裝,安裝順序除mysql-wsrep-server-5.6-5.6.36-25.20.el6.x86_64.rpm以及mysql-wsrep-5.6-5.6.36-25.20.el6.x86_64.rpm最後裝之外,其餘的能夠任意順序。
若是安裝過程當中有錯誤,那就是庫沒有裝齊,你能夠用--force強行安裝。
安裝完成以後執行一下操做
建議dbdata/mysql_3306放在你比較大的外掛盤裏面,不要放在系統盤。也就是說/opt目錄可選。能夠用df -h來查看。
編寫my.cnf,以下
[client]
port = 3306
socket = /mnt/dbdata/mysql_3306/mysql.sock
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
log = /var/log/mysqld_multi.err
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqld]
port = 3306
socket = /mnt/dbdata/mysql_3306/mysql.sock
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin-trust-function-creators = 1
expire_logs_days = 1
max_connections = 600
skip-external-locking
skip-name-resolve
datadir=/mnt/dbdata/mysql_3306
character_set_server = utf8
log-bin = mysql-bin
max_allowed_packet=64M
# Mandatory Settings
server-id= 44
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
# Optional mysqld Settings
#datadir=/path/to/datadir
#innodb_buffer_pool_size=28G
#innodb_log_file_size=100M
#innodb_file_per_table=1
#innodb_flush_log_at_trx_commit=0
# Basic wsrep Provider Settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
#wsrep_provider_options="gcache.szie=32m;gcache.page_size=32m;"
##############################################
#if this is the node started firstly,use this option
#wsrep_cluster_address=gcomm://
#nor,use this option
wsrep_cluster_address=gcomm://IP1,IP2,IP3
##############################################
wsrep_cluster_name='galera_cluster'
wsrep_node_address='IP1'
wsrep_node_name='node1'
wsrep_sst_method=xtrabackup
wsrep_sst_auth=root:密碼
# Optional wsrep Provider Settings
#wsrep_node_incoming_address='192.168.1.158'
#wsrep_sst_donor='demo_node1'
#wsrep_slave_threads=16
###############################################################################
#啓動node1 --wsrep-new-cluster
三臺服務器不一樣的地方
server-id 要設置不一樣的數字,通常設爲IP地址最後一個數字
wsrep_node_address設爲各自不一樣的IP
wsrep_node_name設爲不一樣的節點名稱
wsrep_sst_method第一次鏈接集羣的時候必須設爲rsync,若是用xtrabackup,第一次鏈接集羣,你是連不進去的,第一次三臺服務器鏈接成功以後,再關閉全部的mysql服務,再所有改回xtrabackup,以後就能夠鏈接成功。
編輯完成後記得放入/etc目錄中
第一臺服務器啓動前,註釋掉wsrep_cluster_address=gcomm://IP1,IP2,IP3,把wsrep_cluster_address=gcomm://給解除註釋。
啓動第一臺服務器service mysql start
直接使用mysql進入,無需用戶名,密碼。
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '密碼'; '%'的意思是說不限制IP訪問,若是你要限制IP訪問,能夠設置IP地址段,如 GRANT ALL ON *.* TO 'root'@'192.168.%' IDENTIFIED BY '密碼';
use mysql
update user set password=PASSWORD('密碼') where user='root';
flush privileges;
exit
停掉服務service mysql stop
從新編輯my.cnf vim /etc/my.cnf
註釋掉wsrep_cluster_address=gcomm://,反註釋wsrep_cluster_address=gcomm://IP1,IP2,IP3
再次啓動 service mysql start --wsrep_cluster_address=gcomm://
接着連續啓動第二,第三臺服務器 service mysql start
此時三臺服務器都可以正常啓動並鏈接成功。
進入任一臺mysql查看,mysql -uroot -hIP1 -p
輸入密碼後,進入
show status like 'wsrep%';
說明三臺服務器鏈接成功,此時你在任意一臺作的SQL寫入,修改,建立表,建立庫操做都會同時在三臺服務器響應,數據達到徹底同步。
關閉全部服務器service mysql stop
vim /etc/my.cnf
wsrep_sst_method把rsync改爲xtrabackup
再按照上述方法依次啓動服務器,galera cluster的所有安裝就完成了。