最近Hive的原数据要用到mysql,所以又把Galera Cluster又装了一遍,虽然装过很多遍,但依然会有一些模糊的地方。所以大致记录下来分享出来。
Galera Cluster必须安装在至少3台服务器上,作为全主无延迟集群,奇数台服务器是为了防止脑裂。
首先要准备的文件如下
安装之前,我们要安装一些准备的库:
yum install libaio gcc gcc-c++ boost-devel scons check-devel openssl-devel openssh-clients
perl-DBD-MySQL perl-Time-HiRes perl-Digest nc rsync lsof galera autoconf 大概就这些了吧,不排除会有遗漏,所以装galera cluster是很麻烦的事情。
安装之前移除CentOS 7自带的mysql库,这个之前博客有写过
yum remove mariadb-libs-5.5.56-2.el7.x86_64
然后开始安装
rpm -ivh 加文件名
如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强行安装。
安装完成之后执行一下操作
- mkdir -p /opt/dbdata/mysql_3306
- chown -R mysql:mysql /opt/dbdata/mysql_3306
- chmod -R 755 /opt/dbdata/mysql_3306
- mysql_install_db --user=mysql --datadir=/opt/dbdata/mysql_3306
建议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的全部安装就完成了。