文档章节

Mariadb集群搭建

litterMo
 litterMo
发布于 2016/03/22 14:19
字数 858
阅读 154
收藏 4

Galera Cluster是MariaDB的一个双活多主集群,其可以使得MariDB的所有节点保持同步,Galera为MariaDB提供了同步复制(相对于原生的异步复制),因此其可以保证HA,且其当前仅支持XtraDB/InnoDB存储引擎(扩展支持MyISAM),并且只可在Linux下使用。
Galera Cluster拥有以下特性:

  • 真正的多主架构,任何节点都可以进行读写

  • 同步复制,各节点间无延迟且节点宕机不会导致数据丢失

  • 紧密耦合,所有节点均保持相同状态,节点间无不同数据

  • 无需主从切换操作或使用VIP

  • 热Standby,在Failover过程中无停机时间(由于不需要Failover)

  • 自动节点配置,无需手工备份当前数据库并拷贝至新节点

  • 支持InnoDB存储引擎

  • 对应于透明,无需更改应用或是进行极小的更改

  • 无需进行读写分离

本文主要说明Galera的集群如何搭建,使用环境是centos6.5,使用三台服务器

机器信息

  节点node1 Ip 1.1.1.1

  节点node2 Ip 1.1.1.2

  节点node3 Ip 1.1.1.3

第一步:添加Mariadb源   

   创建 mariadb 源 /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

第二步:安装MariaDB

 

 yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/socat-1.7.2.3-1.el6.x86_64.rpm
 yum install MariaDB-Galera-server MariaDB-client rsync galera

   如果安装Mariadb失败,请先把自带的mysql卸掉 ,使用rpm -q mysql 查找安装包信息,rpm -e 进行卸载

第三步:设置Mariadb 安全

service mysql start 
/usr/bin/mysql_secure_installation

   密码当前设置是dbpass,所有问题都是默认 default

第四步:创建MariaDB Galera集群用户

   现在创建每个节点通用授权的用户sst_user,在每个节点上执行下面的命令

mysql -u root -p
mysql> DELETE FROM mysql.user WHERE user='';
mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass';
mysql> GRANT ALL PRIVILEGES on *.* to sst_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> quit

第五步: 创建集群的配置

 所有节点停止mysql 服务,

service mysql stop

 我们进行node1,node2,node3上的环境配置,下面是node1的配置

cat >> /etc/my.cnf.d/server.cnf << EOF
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://1.1.1.1,1.1.1.2,1.1.1.3"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='1.1.1.1'
wsrep_node_name='node1'
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass
EOF

   node2的配置在wsrep_node_address 和wsrep_node_name 有修改

wsrep_node_address=1.1.1.2
wsrep_node_name='node2'

  node3

wsrep_node_address=1.1.1.3
wsrep_node_name='node3'

第六步:初始化node1节点

/etc/init.d/mysql start --wsrep-new-cluster

   查看一下node1上的状态信息

mysql -u root-p -e "show status like 'wsrep%'"

  正确信息如下:

wsrep_local_state_comment | Synced 
wsrep_incoming_addresses  | 1.1.1.1:3306 
wsrep_cluster_size        | 1 
wsrep_ready               | ON

第七步:启动其他节点

 其他节点启动和平常命令一下

service mysql start

  在node2上查看一下状态

mysql -u root-p -e "show status like 'wsrep%'"

  显示如下:

| wsrep_local_state_comment | Synced                    |
| wsrep_incoming_addre sses | 1.1.1.1:3306,1.1.1.2:3306 |
| wsrep_cluster_size        | 2                         |
| wsrep_connected           | ON                        |
| wsrep_ready               | ON                        |

  启动node3后显示信息如下

  

| wsrep_local_state_comment | Synced                    |
| wsrep_incoming_addre sses | 1.1.1.1:3306,1.1.1.2:3306,1.1.1.3:3306 |
| wsrep_cluster_size        | 2                         |
| wsrep_connected           | ON                        |
| wsrep_ready               | ON                        |

第八步:验证同步

  

mysql -u root -p -e 'CREATE DATABASE clustertest;'
mysql -u root -p -e 'CREATE TABLE clustertest.mycluster ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), ipaddress VARCHAR(20), PRIMARY KEY(id));'
mysql -u root -p -e 'INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("node1", "1.1.1.1");'

   在node2和node3上检查相应的表信息,如果能够如下显示,表示已经成功同步

mysql -u root -p -e 'SELECT * FROM clustertest.mycluster;'
Enter password: 
+----+------+-----------+
| id | name | ipaddress |
+----+------+-----------+
| 2  | node1  | 1.1.1.1   |
+----+------+-----------+

  成功完成


参考文章:http://www.unixmen.com/setup-mariadb-galera-cluster-10-0-centos/


© 著作权归作者所有

共有 人打赏支持
litterMo
粉丝 4
博文 46
码字总数 21331
作品 0
东城
程序员
私信 提问
Docker Swarm 部署Mysql/Mariadb高可用主从复制集群

本文为转载,原文:Docker Swarm 部署Mysql/Mariadb高可用主从复制集群 1. MariaDB与MySQL MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被S...

ChainZhang
2018/05/16
0
0
OpenStack(Queens版)高可用集群-2.基础服务

参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html 理解Pacemaker:http://www.......

盖世英雄iii
2018/08/23
0
0
MariaDB Galera Cluster 10.0.25 发布

MariaDB Galera Cluster 10.0.25 发布了,MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具。在数据方面完全兼容 MariaDB 和 MySQL。 特性: 同步复制 Synchron...

淡漠悠然
2016/05/05
1K
1
ClusterControl 现支持 MariaDB 10

Severalnines ClusterControl 现在支持 MariaDB 10! MariaDB 10 是现在最新最高级的 MariaDB 版本,集群部署都会基于 MariaDB Galera Cluster 10(完全整合了 MariaDB 10.0.12 和 Galera Clu...

oschina
2014/07/23
910
0
MariaDB Galera Cluster 5.5.58 稳定版发布,Bug 修复

MariaDB Galera Cluster 5.5.58 发布,MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具。在数据方面完全兼容 MariaDB 和 MySQL。 这是一个修复 bug 的稳定版本...

局长
2017/11/22
701
1

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
34分钟前
1
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
37分钟前
9
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
39分钟前
1
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
40分钟前
8
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部