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

最近在做这方面调优,顺便记录一下。

一、MariaDB Galera Cluster概要:

1.简述:

MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到 各个节点上去。在数据方面完全兼容 MariaDB 和 MySQL。

2.特性:

(1).同步复制 Synchronous replication

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

(3).可对集群中任一节点进行数据读写

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

(5).自动节点加入

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

(7).直接客户端连接,原生的 MySQL 接口

(8).每个节点都包含完整的数据副本

(9).多台数据库中数据同步由 wsrep 接口实现

3.局限性

(1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的.

(2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集.

(3).在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()…

(4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。

(5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。

(6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对 于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).

(7).XA事务不支持,由于在提交上可能回滚。

(8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。

(9).集群节点建议最少3个。

(10).如果DDL语句有问题将破坏集群。

采用快捷的yum方式。

MariaDB.repo

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

版本可以参考baseurl 里面的连接,更换数字,以及系统位数

使用yum clearn all 清除缓存

10.1.X 后的版本和之前的不一样。没有Mariadb galera server 这个包。

yum -y install MariaDB-client MariaDB-common MariaDB-devel MariaDB-server MariaDB-shared galera

自己cmake 也可以。(觉得没必要)

然后更改配置文件(根据自身系统优化过后的)

[server]

[mysqld]
log-error = /data/mysql/error.log
skip-name-resolve
skip-host-cache
skip-external-locking #set client (except root)
init_connect = 'SET autocommit = 0'
init_connect = 'SET NAMES utf8'
init_connect = 'SET character_set_client = utf8'
init_connect = 'SET character_set_results = utf8'
init_connect = 'SET character_set_connection = utf8'
skip-character-set-client-handshake #log
#log-bin = /data/mysql/mysql_logs/binary_log/dbtest-bin
#log-bin-index = /data/mysql/mysql_logs/binary_log/dbtest-bin.index
#networking
wait_timeout = 10
max_allowed_packet = 64M max_connections = 300
max_connect_errors = 6000 event_scheduler = ON innodb_buffer_pool_instances = 8
innodb_file_per_table = 1 #每张表一个数据文件
innodb_log_files_in_group = 3
innodb_log_file_size = 768M
innodb_log_buffer_size = 16M
innodb_data_file_path = ibdata1:500M;ibdata2:500M:autoextend
innodb_buffer_pool_size = 22G
innodb_flush_log_at_trx_commit = 2 #可以提高性能,gslera保证不丢数据 innodb_max_dirty_pages_pct = 90
innodb_thread_concurrency = 0 #Set to 0 when using the threadpool
innodb_thread_sleep_delay = 500
innodb_concurrency_tickets = 5000
innodb_read_io_threads = 8
innodb_write_io_threads = 4
#innodb_io_capacity = 2000
innodb_lock_wait_timeout = 30
innodb_purge_threads = 1
innodb_purge_batch_size = 300
innodb_open_files = 2000
innodb_read_ahead_threshold = 56 innodb_flush_method = O_DIRECT
innodb_use_native_aio = on
innodb_use_sys_malloc = on
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_dump_now = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_load_now = 1 default-storage-engine=InnoDB
sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
table_open_cache = 2000
open_files_limit = 65535
sort_buffer_size = 2M
thread_cache_size = 300
tmp_table_size = 128M
key_buffer_size = 1024M
read_buffer_size = 1M
read_rnd_buffer_size = 12M innodb_buffer_pool_populate = 1
thread_handling = pool-of-threads binlog_format =ROW
bind-address =0.0.0.0
datadir =/data/mysql
socket =/data/mysql/mysql.sock wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera01'
wsrep_cluster_address="gcomm://node1,node2,node3"
wsrep_node_name=node1
wsrep_node_address=172.16.38.172
wsrep_on=ON
default_storage_engine=InnoDB
wsrep_sst_method=rsync
wsrep_sst_auth=sst_user:dbpass

不一一解释了,当时用tpcc-mysql调优的参数。

启动第一个

service mysql start --wsrep-new-cluster

可能会点点点很长时间,但是我们可以通过日志看到数据库是否已经正常起来。

如果还在点点点,可以不用管,直接crtl+c

第二胎第三台就直接service mysql start 就行了。只要有一台在 就不用刚刚启动第一次的命令。

show status like 'wsrep%';

来查看集群状态

加上haproxy之后 需要添加允许haproxy 健康检查,和集群之间的互相访问

 grant all privileges on *.* to sst_user@localhost identified by 'dbpass';
insert into mysql.user (host,user) values ('172.16.38.178','haproxy');
grant all privileges on *.* to root@localhost identified by 'anjubao.com';
#如果insert 报错,有可能配置文件 有sql_mod 选项,是为了安全考虑的。

centos MariaDB10.1.X galera cluster的更多相关文章

  1. 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇

    前言 有一段时间没有写blogs,乘着周末开始整理下haproxy + keeplived 实现 mysql mariadb galera cluster 集群访问环境的搭建工作. 本文集中讲hapr ...

  2. Centos 7 MariaDB Galera cluster 部署

    一.安装环境准备 1.系统: CentOS Linux release 7.4.1708 (Core) 2.hosts 10.6.32.51 openstack1 10.6.32.52 opensta ...

  3. Centos 7 下 Mysql 5.7 Galera Cluster 集群部署

     一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...

  4. 构建 MariaDB Galera Cluster 分布式数据库集群(二)

    MariaDB的安装 构建 MariaDB Galera Cluster之前,首先安装MariaDB,本文使用的版本是10.1 1.环境准备 主机: MariaDB01(192.168.56.102) ...

  5. MySQL高可用(Galera Cluster)

    Galera Cluster简介 Galera Cluster是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分 ...

  6. MariaDB Galera Cluster集群搭建

    MariaDB Galera Cluster是什么?   Galera Cluster是由第三方公司Codership所研发的一套免费开源的集群高可用方案,实现了数据零丢失,官网地址为http://g ...

  7. MariaDB Galera Cluster部署手册

    MariaDB Galera Cluster部署手册 galara保证双主数据库的同步及一致性 1.环境准备 基于新部署.最小化安装centos6.5 1>  yum install opens ...

  8. MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)

    MariaDB Galera Cluster 部署(如何快速部署MariaDB集群) [日期:--] 来源:Linux社区 作者:Linux [字体:大 中 小] MariaDB作为Mysql的一个分 ...

  9. Docker MariaDB 10.3 Galera Cluster 集群同步复制 多主 Docker Haproxy 负载均衡

    mariadb 现有动态列,支持json格式存储,类似mongodb的bson,但是操作能力较为尴尬,中间件有spider,我非常感兴趣的一个东西 关于spider 这里有一篇很好的博文,有时间一定得 ...

随机推荐

  1. 友盟消息推送UPush

    第一步:把下载的SDK里面的PushSDK当做Module导入自己的项目 第二步:在自己项目的build.gradle里面一定要配置applicationId defaultConfig { appl ...

  2. Practical JAVA (四)异常处理

    Practice 16~27 一 异常控制流(exceptional control flow)机制: try{ <block> } catch(<ExceptionClass> ...

  3. 定时备份mysql

    @echo offset filename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%mysqldump -- ...

  4. Jmeter之Badboy录制脚本及简化脚本http请求(三)

    测试脚本的精简对于测试来说是一项基础的能力,因为你得看懂一行脚本代表的是什么意思,是怎么运行的,做了什么内容.才能得到对应的测试结果分析. 上一节介绍的代理服务器的录制童鞋们也明白了,有点麻烦,而且不 ...

  5. css整理-04 基本视觉格式化

    基本框 假定每一个元素都会生成一个火多个矩形框,为元素框 元素框中心有一个内容区,周围有内边距,边距和外边距 内容的背景会应用到内边距,外边距是透明的,可以看到父元素的背景 内边距不能是负值,外边距可 ...

  6. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  7. Unity 状态转化机器

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /** 有限状 ...

  8. mysql 连接超时解决

    修改my.cnf文件即可. ************************************ 在/etc/my.cnf下添加如下两行代码: wait_timeout=31536000inter ...

  9. webpack练手项目之easySlide(一):初探webpack (转)

    最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力.     webpack是一个前端的打包管理工具,大家可以前往:http:/ ...

  10. Nginx+Lua 积累

    1.解析16进制编码的中文参数 local encodeStr = "%E6%B0%94" local decodeStr = ""; , #encodeStr ...