1、mariadb-galera-server
三个控制节点安装
yum install -y centos-release-openstack-stein
yum install -y python-openstackclient openstack-selinux MySQL-python python2-PyMySQL
yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync
配置数据库三个控制节点 mariadb-galera-server
####################################################################################
参考文档
https://blog.51cto.com/arkling/2114967
https://www.jianshu.com/p/a99c474f9fba
https://cloud.tencent.com/developer/article/1120419
https://www.cnblogs.com/hukey/p/8047070.html
https://blog.csdn.net/super_man_ww/article/details/51460572
https://galeracluster.com/library/documentation/mysql-wsrep-options.html#wsrep-auto-increment-control
https://www.ywnds.com/?p=6084
https://yq.aliyun.com/articles/500227
http://code.oneapm.com/database/2015/07/02/mariadb-galera-cluster/
https://www.cnblogs.com/fawaikuangtu123/p/10915229.html 主要参考
https://www.andylouse.net/linux-galera-haproxy-keepalived-mariadb
#安装完启动服务
systemctl start mariadb
#初始化密码所有控制节点都操作
mysql_secure_installation
设置密码为
#创建所有需要的同步帐号
#!/bin/bash
USERS="galera
nova
neutron
keystone
glance
placement
nova
neutron
cinder"
for U in ${USERS}
do
mysql -uroot -p “密码” -e "GRANT ALL ON ${U}.* to ${U}@'%' IDENTIFIED BY \"${U}\";"
echo "$?"
done
mysql -uroot -p“密码” -e "flush privileges;"
echo "$?"
systemctl stop mariadb
vim mariadb-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
server_id=10 #其他节点修改
bind-address = 192.168.176.57 #其他节点修改
skip-external-locking
skip-name-resolve
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server=utf8
innodb_flush_method = O_DIRECT
wait_timeout = 28800
binlog_cache_size = 16M
max_allowed_packet = 64M
expire_logs_days = 30
sort_buffer_size = 128M
innodb_buffer_pool_size = 512M
[galera]
wsrep_on=ON
wsrep_provider="/lib64/galera/libgalera_smm.so"
wsrep_cluster_address="gcomm://192.168.176.57,192.168.176.58,192.168.176.59"
wsrep_cluster_name="galera_cluster"
wsrep_node_address=192.168.176.57 #其他节点修改
wsrep_node_name=node1 #其他节点修改
wsrep_slave_threads=1
wsrep_causal_reads=ON
wsrep_certify_nonPK=ON
wsrep_sst_method=rsync
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address = 192.168.176.57 #其他节点修改
innodb_flush_log_at_trx_commit=0
问题
#!/bin/sh
systemctl set-environment _WSREP_NEW_CLUSTER='--wsrep-new-cluster' && \
systemctl start ${1:-mariadb}
extcode=$?
systemctl set-environment _WSREP_NEW_CLUSTER=''
return $extcode #修改为 exit
#同步文件
echo 'LimitNOFILE=65535 \ LimitNPROC=65535' >> /usr/lib/systemd/system/mariadb.service
scp /usr/lib/systemd/system/mariadb.service root@node2:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/mariadb.service root@node3:/usr/lib/systemd/system/
scp /etc/my.cnf.d/mariadb-server.cnf root@node2:/etc/my.cnf.d/
scp /etc/my.cnf.d/mariadb-server.cnf root@node3:/etc/my.cnf.d/
scp /usr/bin/galera_new_cluster root@node2:/usr/bin/
scp /usr/bin/galera_new_cluster root@node3:/usr/bin/
#启动第一个节点
#当集群中所有节点都关闭后,需要重新初始化集群
mysqld_safe --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql --wsrep-new-cluster &
#启动其他节点 如有node1节点 重启后,执行以下命令即可 相当于集群没有关闭,启动后自动加入到集群中。
mysqld_safe --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql &
#查看启动集群状态
mysql > SHOW VARIABLES LIKE 'wsrep_%';
mysql > SHOW STATUS LIKE 'wsrep_%';
mysql > SHOW STATUS LIKE 'wsrep_cluster_size';
#宕机查看
vim /var/lib/mysql/grastate.dat
#GALERA savedd state
version:2.1
uuid: 自己的cluster id
seqno: -1 #数大 数据最全
safe_to_bootstrap:0 #修改为 1 先启动
mysqld_safe --defaults-file=/etc/my.cnf.d/mariadb-server.cnf --user=mysql --wsrep-new-cluster &
#node1 node2 node3模拟 全部断电关机
[root@node1 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 054626cb-020f-11ea-9e0e-1b0aafe9b491
seqno: 840
safe_to_bootstrap: 0
[root@node2 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 054626cb-020f-11ea-9e0e-1b0aafe9b491
seqno: 840
safe_to_bootstrap: 0
[root@node3 ~]# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid: 054626cb-020f-11ea-9e0e-1b0aafe9b491
seqno: 840
safe_to_bootstrap: 1
grep -Ev '^$|^#'
【问题场景】
1.正式环境下基本上不会出现此类情况
2.测试环境的时候可能会出现,如自己电脑上搞的几个虚拟机上测试,后来全部关机了,再想启动集群,报错了
【系统环境】
CentOS7 + MariaDB10.1.22+galera cluster
【解决方式】
1.正常第一次启动集群,使用命令:galera_new_cluster ,其他版本请另行参考
2.整个集群关闭后,再重新启动,则打开任一主机,输入命令:
vim /var/lib/mysql/grastate.dat
或者找到最后关闭的那个节点默认值就是1
3.重新启动集群命令:
mysqld --wsrep-new-cluster --user root
4.其他节点:systemctl start mariadb
或者/etc/init.d/mysql start
注:正常情况下 先停止节点,然后找最后停止的那台上去执行启动集群
mysqld --wsrep-new-cluster --user root
然后再依次启动
##################################################################################
来源:CSDN
作者:放开那stack
链接:https://blog.csdn.net/hellowangshao/article/details/103825023