第三章openstack环境部署 之 mariadb-galera-server

十年热恋 提交于 2020-01-13 03:53:20

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
然后再依次启动
################################################################################## 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!