[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. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  2. poj 2115 Looooops

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23637   Accepted: 6528 Descr ...

  3. PhpMyAdmin管理,登录多台远程MySQL服务器

    法一: 可直接在config.inc.php里添加数据库连接信息即可 先$i++, 然后复制原来的配置信息后修改 不过这种方式需要将连接信息写在配置文件中,有点麻烦. 这种后面省事,不用填信息,选择一 ...

  4. psql-03数据类型(1)

    PostgreSQL支持的数据类型远比其他数据库要多; 类型输入与转换 select int '1', date '2015-12-6'; select '1'::int, '2015-12-6':: ...

  5. 如何定义移动端字体Font-Family?

    1.对于IOS 手机系统,默认中文字体是Heiti SC.默认英文字体是Helvetica.默认数字字体是HelveticaNeue.无微软雅黑字体: 2.对于Android 手机系统,默认中文字体是 ...

  6. hdu 1059 Dividing

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  7. 二叉搜索树 POJ 2418 Hardwood Species

    题目传送门 题意:输入一大堆字符串,问字典序输出每个字符串占的百分比 分析:二叉搜索树插入,然后中序遍历就是字典序,这里root 被new出来后要指向NULL,RE好几次.这题暴力sort也是可以过的 ...

  8. 【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现

    1.XML与JSON两种数据结构的优缺点 1> XML 优点:
 格式统一, 符合标准
 容易与其他系统进行远程交互, 数据共享比较方便 
 缺点: XML文件格式文件庞大, 格式复杂, 传输占 ...

  9. hdu 2160 母猪的故事

    Problem Description 话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生活.说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪.不过 ...

  10. ACM 字符串替换

    字符串替换 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 编写一个程序实现将字符串中的所有"you"替换成"we"   输入 ...