1,Mariadb Galera Cluster 集群介绍

Mariadb Galera Cluster 是MySQL高可用性和可扩展的解决方案

Mariadb Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步复制的系统架构,业务层面无需做读写分离工作

特性:

(1)同步复制 Synchronous replication

(2)Active-Active multi-master 拓扑逻辑

(3)可对集群中任一几点进行读写

(4)自动成员控制,故障节点自动从集群中移除

(5)自动节点加入

(6)真正并行复制,基于行级

(7)每个节点都包含原生的数据副本

架构图:

2,配置mariadb的官方源地址

三个节点执行下面操作,目的是安装Galera,保留centos原有的repo文件

在/etc/yum.repos.d/ 添加一个repo文件,内容如下:

[mariadb]

name=mariadb

baseurl=http://yum.mariadb.org/10.1/centos7-amd64/

gpgcheck=0

enable=1

#yum clean all

#yum makecache

3,安装Mariadb Galera

在三个node上分别执行:

# yum install mariadb-server mariadb mariadb-server-galera galera xinetd rsync

#systemctl start mariadb.service

#mysql_secure_installation  (执行设置mysql密码,此次试验密码为teamsun)

然后在每个节点登录mysql测试

#mysql -uroot -p

4,配置MariaDB Galera集群

第一个节点上添加如下内容

#vim /etc/my.cnf.d/client.cnf

添加内容:

[client]

port = 3306

scoket = /var/lib/mysql/mysql.sock

#vim /etc/my.cnf.d/galera.cnf

添加内容

[isamchk]

key_buffer_size = 16M

[mysqld]

binlog_format = ROW

character-set-server = utf8

collation-server = utf8_general_ci

max_connections = 10000

ignore-db-dirs = lost+found

init-connect = SET NAMES utf8

innodb_autoinc_lock_mode = 2

innodb_buffer_pool_size = 2000M

innodb_doublewrite = 0

innodb_file_format = Barracuda

innodb_file_per_table = 1

innodb_flush_log_at_trx_commit = 2

innodb_flush_method = O_DIRECT

innodb_io_capacity = 500

innodb_locks_unsafe_for_binlog = 1

innodb_log_file_size = 2000M

innodb_read_io_threads = 8

innodb_write_io_threads = 8

key_buffer_size = 64

myisam-recover-options = BACKUP

myisam_sort_buffer_size = 64M

open_files_limit = 102400

performance_schema = on

query_cache_limit = 1M

query_cache_type = 0

query_cache_size = 0

skip-external-locking

skip-name-resolve = 1

socket = /var/lib/mysql/mysql.sock

table_open_cache = 10000

thread_cache_size = 8

thread_stack = 256K

tmpdir = /tmp

user = mysql

wait_timeout = 1800

log-error = /var/log/mariadb/mariadb.log

datadir = /var/lib/mysql

pid-file = /var/run/mariadb/mariadb.pid

[galera]

bind-address=172.16.194.36

wsrep_provider = /usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address = "gcomm://172.16.194.36,172.16.194.37,172.16.194.39"

wsrep_cluster_name = galera_cluster

wsrep_convert_LOCK_to_trx = 0

wsrep_debug = 0

wsrep_drupal_282555_workaround = 0

wsrep_retry_autocommit = 1

wsrep_node_name = controller1

wsrep_node_address = 172.16.194.36

wsrep_on = ON

wsrep_slave_threads = 1

wsrep_sst_method = rsync

default_storage_engine = innodb

[mysqld_safe]

nice = 0

socket = /var/lib/mysql/mysql.sock

log-error = /var/log/mariadb/mariadb.log

#vim mysql-clients.cnf

添加内容:

[mysqldump]

max_allowed_packet = 16M

quick

quote-names

第二个和第三个节点的配置如下,注意更改相关IP和节点名称

#vim /var/lib/mysql/client.cnf

[client]

port = 3306

socket = /var/lib/mysql/mysql.sock

#vim /etc/my.cnf/server.cnf

[isamchk]

key_buffer_size = 16M

[mysqld]

binlog_format = ROW

character-set-server = utf8

collation-server = utf8_general_ci

max_connections = 10000

ignore-db-dirs = lost+found

init-connect = SET NAMES utf8

innodb_autoinc_lock_mode = 2

innodb_buffer_pool_size = 2000M

innodb_doublewrite = 0

innodb_file_format = Barracuda

innodb_file_per_table = 1

innodb_flush_log_at_trx_commit = 2

innodb_flush_method = O_DIRECT

innodb_io_capacity = 500

innodb_locks_unsafe_for_binlog = 1

innodb_log_file_size = 2000M

innodb_read_io_threads = 8

innodb_write_io_threads = 8

key_buffer_size = 64

myisam-recover-options = BACKUP

myisam_sort_buffer_size = 64M

open_files_limit = 102400

performance_schema = on

query_cache_limit = 1M

query_cache_type = 0

query_cache_size = 0

skip-external-locking

skip-name-resolve

socket = /var/lib/mysql/mysql.sock

table_open_cache = 10000

thread_cache_size = 8

thread_stack = 256K

tmpdir = /tmp

user = mysql

wait_timeout = 1800

[galera]                                注意修改主机名和ip

bind-address=172.16.194.37

wsrep_provider = /usr/lib64/galera/libgalera_smm.so

wsrep_cluster_address = "gcomm://172.16.194.36,172.16.194.37,172.16.194.39"

wsrep_cluster_name = openstack

wsrep_node_name = controller2

wsrep_node_address = 172.16.194.37

wsrep_on = ON

wsrep_slave_threads = 4

wsrep_sst_method = rsync

default_storage_engine=InnoDB

[mysqld_safe]

nice = 0

socket = /var/lib/mysql/mysql.sock

syslog = /var/log/mariadb/mariadb.log

#vim mysql-clients.cnf

[mysqldump]

max_allowed_packet = 16M

quick

quote-names

5,设置mysql最大连接数

修改完server.cnf ,然后修改下mysql.service文件,让数据库支持最大连接数为10000(当虚拟数量较多负载较大时

,会出现因数据库连接数不够导致访问界面出现各种内容刷不出的情况)

#vim /usr/lib/systemd/system/mariadb.service

在[Service]段添加如下两行

LimitNOFILE=10000

LimitNPROC=10000

都修改完毕后执行:

#systemctl daemon-reload

6,关于mysql服务的启动顺序

三个节点my.cnf.d 都配置完后,全部执行:

#systemctl stop mariadb.service && systemctl disable mariadb.service

然后在第一个节点用下面的命令初始化启动mariadb集群服务

#/usr/libexec/mysqld --wsrep-new-cluster --user=root &

其他两个节点分别启动mariadb

#systemctl start mariadb.service

#systemctl status mariadb.service

最后其他两个节点启动成功,在回第一个节点执行

#pkill -9 mysql

#pkill -9 mysql

#systemctl start mariadb.service

#systemctl status mariadb.service

注意:如果遇到服务启动不了的情况,看下具体错误,如果是[ERROR]Can’t init tc log 错误可通过以下方式解决:

#cd /var/lib/mysql

#chown mysql:mysql *

更改完重启服务即可,因为/var/lib/mysql/tc.log 用户组和用户名不是mysql

7,查看mariadb数据库集群状态

#mysql -uroot -p

#mysql>show status like ‘wsrep_cluster_size%’;

登录这两节点的mysql里,发现mysql集群数变成了3,说明这个集群有三个节点,到这里galera集群就已搭建成功

8,测试

下面来测试一下,在controller3中创建一张表,并插入相关记录,看controller1和controller2中能否查询得到

Mysql@controller3>create database happy;

mysql@controller2>use happy;  在controller2上也能看到创建的库‘happy’.

mysql galera集群搭建_搭建mysql_galera数据库集群相关推荐

  1. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

  2. mysql集群软件有哪些_浅谈数据库集群软件优缺点有哪些

    满心狼藉 回答时间:2019-12-05 向TA提问 集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提 供网络服务或应用程序(包括数据库.Web服务和文件 ...

  3. mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...

    前言: 数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性? 1 半同步复制 简单的说就是: 主库发生增删改操作的时候,会等从库及时复制了并且通知了主库, 才会把这 ...

  4. arm集群服务器_高密度ARM集群服务器的应用场景

    1 什么是高密度ARM集群服务器 ARM集群服务器,是在一个机箱内设计N个高性能ARM处理器,每个ARM处理器配置独立的内存及存储,所有的处理器通过高速网络(千兆或万兆网络)进行相互之间以及对外通信的 ...

  5. 检查集群状态命令_轻松管理Kubernetes集群的7个工具

    Kubernetes正在不断加快在云原生环境的应用,但如何以统一.安全的方式对运行于任何地方的Kubernetes集群进行管理面临着挑战,而有效的管理工具能够大大降低管理的难度. K9s k9s是基于 ...

  6. mysql killed进程不结束_优秀的数据库产品——MySQL 云数据库服务

    作为一种低成本,高性能,高可靠性和开放源代码的数据库产品,MySQL已在Internet公司中广泛使用. 例如,淘宝有数千个MySQL服务器. 尽管NoSQL在过去两年中发展迅速,新产品层出不穷,但N ...

  7. mysql异地灾备架构_最佳实践 数据库异地灾备

    方案概述 根据企业所在行业.合规要求.数据规模.RPO/RTO要求的不同,数据库灾备目的和要求各不相同,投入成本也是不同的.阿里云数据库灾备解决方案提供实时数据备份能力,满足企业备份多样化选择.通过数 ...

  8. mysql字段值是什么_什么是数据库字段值

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql软件分为几种_常见的数据库软件有哪几种

    常见的数据库软件介绍: 一.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发.发布和支持. MySQL是一个快速的.多线程.多用户.健壮的SQL数据库服务器.My ...

最新文章

  1. LeetCode 198 House Robber Python
  2. 互为质数的勾股数c语言,c语言 寻求勾股数满足x2+y2=z2的正整数x,y和z称为一组勾股数(pythagorean...
  3. mysql order by 中文 排序
  4. jzoj4049-排序【搜索】
  5. oracle中闪回和回滚,oracle闪回操作详解
  6. 网上读书关于软件测试,【读书笔记】之软件测试
  7. Deep Learning经典论文列表(Reading List)
  8. 关于印发医疗联合体管理办法(试行)的通知
  9. 陈睿提供2009-06-19
  10. C语言的前置++和后置++
  11. Python实战 | 如何一次检查大量网页是否更新?
  12. 电子纸/墨水屏的一些了解
  13. 百度联盟与Google AdSense的比较
  14. Mac-iTerm2固定标签名字
  15. Simulink数学建模
  16. 2019年50家最有可能成为独角兽的初创公司
  17. 星巴克后麦当劳推咖啡外送服务,咖啡新零售进入深水区
  18. 华为2017 校园招聘
  19. 机器学习模型训练问答
  20. linux centos 下载安装yum

热门文章

  1. 杂谈——Java中同步与异步有什么区别
  2. vue下拉框添加disabled属性
  3. java 取反 值_java编程 按位取反的问题 java中取反操作是正数
  4. 37 | 高速缓存(上):“4毫秒”究竟值多少钱?
  5. 程序员求职面试心经40条——谨记原则
  6. Google Earth Engine(GEE)—— 各矿区时序NDVI变化图(包含具体的运行函数)
  7. Gradle开发环境配置
  8. 最全自动驾驶数据集分享系列一|目标检测数据集(3/3)
  9. 勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节
  10. LibLInear库中数据格式介绍