mysql 多主
原理:多个msyql/mariadb之间可以实时同步,任意节点的操作可以立即同步到其他节点,底层采用galera插件同步,类似rsync,上层mysql相对于galera是透明的,可以实现多节点同时读写(无法实现读写分离)。
NOTE:普通的msyql/mariadb无法集成galera,要想使用galera必须编译msyql/mariadb让其拥有调用galera 的能力,或者可以直接下载支持galera的mysql/mariadb。
环境:
1.采用三节点
节点一:192.168.85.136
节点二:192.168.85.137
节点三:192.168.85.138
2.系统平台:
Red Hat Enterprise Linux Server release 6.7 (Santiago)
3.关闭防火墙(所有节点执行)
/etc/rc.d/init.d/iptables stop
setenforce 0
4.设置galera.repo
http://releases.galeracluster.com//mysql-wsrep-5.5/redhat/6/x86_64/ #mysql-server软件包
http://releases.galeracluster.com//galera-3/redhat/6/x86_64/ #galera组件
将上面地址加入yum repo
5.查看libgalera_smm.so路径(mysql 会调用此模块像其他节点同步数据)
rpm -ql galera-3-25.3.25-2.el6.x86_64 | grep smm.so
/usr/lib64/galera-3/libgalera_smm.so
6.配置my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock wsrep_node_name=node1
wsrep_provider=/usr/lib64/galera-/libgalera_smm.so
wsrep_sst_method=rsync
port=
user=mysql
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=
innodb_locks_unsafe_for_binlog=
innodb_flush_log_at_trx_commit=
innodb_doublewrite=
innodb_file_per_table=
binlog_format=ROW
log-bin=mysql-bin
server-id=
relay-log=mysql-relay-bin
log-slave-updates=
symbolic-links= [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
三个节点全部同步此配置文件,需注意:
wsrep_node_name=node1 #配置成节点node名称
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so #就是刚才我们查出的模块路径 7.启动mysql:
node1:service mysql start --wsrep_cluster_address=gcomm://
node2:service mysql start --wsrep_cluster_address=gcomm://192.168.85.136
node3:service mysql start --wsrep_cluster_address=gcomm://192.168.85.137 8.验证:
在node1上创建数据库:

在其余node查看:
node2:
node3:

接下来可以将集群信息写入到my.cnf
在每个节点中my.cnf 文件mysqld段中加入:
wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138" ################################################################################
排错:
启动mysql出现without updating PID file (/var/lib/mysql/node1.pid):
解决:
注释my.cnf中 wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138"
启动第一个node:
/etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://
启动第二个node:
/etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://192.168.85.136
启动第三个node:
/etc/rc.d/init.d/mysql start --wsrep_cluster_address=gcomm://192.168.85.136
全部启动完成后将 wsrep_cluster_address="gcomm://192.168.85.136,192.168.85.137,192.168.85.138" 加入到每个节点中 NOTE:导致上述问题的原因未知,也未去深入研究,只要三个节点不同时启动就不会有问题,如果三个节点同时启动就会出现上述问题(重启三节点任意一个节点不会出现任何问题)。
mysql 多主的更多相关文章
- mySQL 中主键值自动增加
转 http://stevenjohn.iteye.com/blog/976397 MySql 主键自动增长 博客分类: DataBase MySQLSQL 创建数据库,创建表. mysql> ...
- MySQL双主(主主)架构方案
在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入 ...
- 分布式数据存储 - MySQL双主复制
上篇文章<分布式数据存储 - MySQL主从复制>,我们说到MySQL主从复制很好的保障了从库,读的高可用性.so,问题来了: 1.针对主库,写的高可用性又是如何做到高可用性? 2.如果需 ...
- MySQL双主配置
MySQL双主配置 准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.1 ...
- Mysql增加主键或者更改表的列为主键的sql语句
...
- Keepalived+MySQL双主
一.Keepalived+MySQL Replication的应用场景 MySQL的高可用方案有cluster,MMM,MHA等,这些高可用方案都要三台服务器以上,成本有点高,今天介绍一个低成本高可用 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- MySQL集群(四)之keepalived实现mysql双主高可用
前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Kee ...
- 配置mysql为主主复制步骤
mysql版本:mysql-5.6.24-solaris10-sparc-64bit.tar 操作系统:solaris 11g u10 操作用户:使用非root进行操作安装,a路服务器ip地址为192 ...
- MYSQL 双主配置
MYSQL1. 版本号:5.7.243. 部署方式:双主部署,两台机器即是主又是备 ,双向拷贝,可以同时写入.4. 安装部署路径: a) /home/softb) 配置路径 /etc/my.cnfc) ...
随机推荐
- [20180604]在内存修改数据(bbed).txt
[20180604]在内存修改数据(bbed).txt --//以前曾经做过在内存修改数据,通过oradebug poke命令修改内存信息,相关链接:--//http://blog.itpub.net ...
- [20180123]测试SQLNET.EXPIRE_TIME参数.txt
[20180123]测试SQLNET.EXPIRE_TIME参数.txt --//曾经写过一篇linux内核网络参数测试tcp_keepalive,链接http://blog.itpub.net/26 ...
- python第十二天 生成器,迭代器,内置函数
第二模块学习: 生成器,迭代器,内置函数 生成器特点:只有在调用时才会生成相应的数据,运行的速度快! 示例: def fil(max):#斐波那契数 n,a,b=0,0,1 #定义初始数据 whil ...
- 【PAT】B1067 试密码(20 分)
注意读取时的换行符用getchar吸收 第十个错误后直接输出锁定 #include<cstdio> #include<string.h> int main(){ char mi ...
- 12LaTeX学习系列之---LaTex的图片插入
目录 目录 前言 (一)插图的基本语法 (二)插入的基本设置 1.说明: 2.源代码: 3.输出效果 (三)查看文档 目录 本系列是有关LaTeX的学习系列,共计19篇,本章节是第12篇. 前一篇:1 ...
- ios 百度地图使用
第一步.引入 1.下载SDK 地址http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 2.解压出Baid ...
- 12种不宜使用的javascript的语法
1. == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前一组,永远只使用===和!==.因 ...
- jQuery插件slider实现图片轮播
1:引入相应的js文件 jquery.SuperSilder.js 2:HTML: 结构 注:此地加载图片的代码也可以从后台库中读取图片的集合列表,然后通过循环的方式显示出来 3:CSS 样式定义左 ...
- Django之数据表增删改查
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...
- sysctl命令
sysctl命令作用: 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中,它包含一些TCP/ip堆栈和虚拟内存系统的高级选项,用sysctl可以读取设置超过五百个系 ...
