最近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强行安装。
安装完成之后执行一下操作
建议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的全部安装就完成了。