博主的第一篇文章,写的不完善的地方,请大家多担待.
做程序员已经好久了,从来都是只索取不奉献。遇到问题都是在网上找别人分享的博客来参考,自己却没有分享过。惭愧~
本文主要针对MySQL主主集群配置方案,且服务器的环境为Centos7
1.rpm文件下载路径:
http://releases.galeracluster.com/centos/7/x86_64/
下载时最好下载对应最新的安装包,我下载的是5.6版本的
使用 (yum install -y 包名)命令进行安装 ,安装MySQL时可能会安装失败,不用担心,依次安装所有的
包,如果还是安装失败,等其他安装包安装好以后,重新安装一遍
2.mysql 首次启动
使用命令:service mysql start --skip-grant-tables 开启mysql服务
也就是使用safe模式启动,登录的时候不用输入密码
使用命令: mysql 登录
添加用户名、密码和对应数据库的用户名、密码权限
mysql> use mysql;
mysql> update user set password=PASSWORD("密码") where USER="用户名"
mysql> quit
使用命令: service mysql restart
重启mysql服务,使用创建的用户名和密码登录.
再次进入的时候回提示你设置密码
mysql> SET PASSWORD=PASSWORD("密码")
给对应需要访问MySQL的用户名和密码进行授权,如果没有授权,是无法远程连接MySQL的
授权指定端口用户连接mysql数据库的命令:
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'192.168.168.72' IDENTIFIED BY '密码' WITH GRANT OPTION;
授权无端口限制的用户登录mysql数据库:
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
3.Mysql相关环境设置
Galera 访问默认为4567端口
MySQL访问默认为3306端口
开启防火墙命令:
systemctl stop firewalld.service(停止防火墙)
systemctl disable firewalld.service(禁止开机启动)
firewall-cmd --zone=public --add-port=80/tcp --permanent (开启端口)
firewall-cmd --zone=public --remove-port=80/tcp --permanent (删除端口)
firewall-cmd --zone=public --query-port=80/tcp --permanent (查询是否有该端口)
firewall-cmd --reload (防火墙重设)
firewall-cmd --list-all (查看所有端口)
开启4444 4567 4568 9200 9300 3306端口
设置MySQL开机启动:chkconfig mysql on
去掉Postfix,这个可能跟MySQL配置有冲突: yum remove postfix -y
4.Mysql配置文件设置
拷贝wsrep.cnf 文件(/usr/share/doc/mysql-wsrep-server) 到 /etc/my.cnf.d/下:
cp -r /usr/share/doc/mysql-wsrep-server/wsrep.cnf /etc/my.cnf.d/
编辑/etc/my.cnf:
vi /etc/my.cnf
添加一行: !includedir /etc/my.cnf.d/
修改wsrep.cnf:
vi /etc/my.cnf.d/wsrep,cnf (能详细指定端口号的,最好指定详细的端口号)
#MySQL服务器的ID,必须是唯一的
server-id=101
#galera集群的名字,必须是统一的
wsrep_cluster_name='yangchuan'
#wsrep提供者,必须配置
wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so (.so文件的路径在哪,就配置成哪)
#wsrep节点的ID,必须是唯一的
wsrep_node_name = node1
#集群中的其他节点地址,可以使用主机名或IP
wsrep_cluster_address=gcomm://192.168.168.232:4567,192.168.168.72:4567,
#本机节点地址,可以使用主机名或IP
wsrep_node_address='192.168.168.102:4567'
#指定wsrep启动端口号
wsrep_node_incoming_address='192.168.168.102:4567'
#一个逗号分割的节点串作为状态转移源,比如wsrep_sst_donor=node5,node3,如果node5可用,用node5,不可
#用node3,如果node3不可用,最后的逗号表明让提供商自己选择一个最优的。
wsrep_sst_donor='node1,node2,node3,'
#线程数量。参考设置:1.CPU内核数*2以上;2.其它写节点连接总数的1/4.
wsrep_slave_threads=16
#xtrabackup使用的用户名密码(最好能和mysql数据库的用户名密码一致)
wsrep_sst_auth=root:123456
其余配置暂不用修改,有需要配置的,最好了解清楚以后修改.
5.mysql 集群启动
0节点启动方式一定是空地址启动,不用指向其他节点:
Service mysql start --wsrep-cluster-address=”gcomm://”
其余节点直接修改好配置使用service mysql start启动就可以了
其余节点配置方式主要是修改wsrep_cluster_address=”gcomm://192.168.168.112 ”
配置方式遵循,1节点指向0节点地址,2节点指向1节点地址,依次类推.
如果节点断开,启动之前先执行:mysqld_safe --wsrep-recover
会出现"Revovered position …… :38719(比较这个数字,选择最大值的 那个数据库服务器作为0节点启动,个人觉得应该就是数据库最多的那个作为0节点启动)"
6.相关注意事项:
galera集群是主主集群配置,数据会同时写入
建议集群最少配置3个节点,也就是3台服务器,避免出现"脑裂",断开其中一个,剩下两台还可以继续使用
严禁在集群断开的时候,在单台数据库上进行添加数据的操作,后期想重新连接起来会比较麻烦
集群配置好了以后使用命令: mysql> show status like ''wsrep%";
查看配置的情况:
wsrep_cluster_size 后面的值为多少就表示目前集群有多少个节点.
原创博客,转载请注明出处!