MySQL Galera介绍

主要功能:

  • 同步复制
  • 真正的multi-master,即所有节点可以同时读写数据库
  • 自动的节点成员控制,失效节点自动被清除
  • 新节点加入数据自动复制
  • 真正的并行复制,行级
  • 用户可以直接连接集群,使用感受上与MySQL完全一致

优势:

  • 因为是多主,所以不存在Slave lag(延迟)
  • 不存在丢失交易的情况
  • 同时具有读和写的扩展能力
  • 更小的客户端延迟
  • 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

环境

 IP 地址         主机名         描述
10.0.0.10 node1 第一个启动
10.0.0.11 node2
10.0.0.12 node3

版本信息

[root@node1 ~]#  cat /etc/redhat-release
CentOS Linux release 7.1. (Core)
[root@node1 ~]# uname -a
Linux node2 3.10.-.el7.x86_64 # SMP Fri Mar :: UTC x86_64 x86_64 x86_64 GNU/Linux

修改主机名

 [root@localhost ~]# hostnamectl set-hostname node1

关闭防火墙和SElinux

[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# setenforce

清除原有Mysql

[root@node1 ~]# yum erase mysql mysql-devel mysql-libs -y
[root@node1 ~]# rpm -qa |grep mysql

组件下载地址

http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/
http://releases.galeracluster.com/galera-3/centos/7/x86_64/

安装组件(yum 安装,依次安装了,如果失败,等其他安装包安装好以后,重新安装一遍)

[root@node1 ~]# yum install -y http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/mysql-wsrep-client-5.6-5.6.38-25.21.el7.x86_64.rpm
[root@node1 ~]# yum install -y http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/mysql-wsrep-devel-5.6-5.6.38-25.21.el7.x86_64.rpm
[root@node1 ~]# yum install -y http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/mysql-wsrep-shared-5.6-5.6.38-25.21.el7.x86_64.rpm
[root@node1 ~]# yum install -y http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/mysql-wsrep-test-5.6-5.6.38-25.21.el7.x86_64.rpm
[root@node1 ~]# yum install -y http://releases.galeracluster.com/galera-3/centos/7/x86_64/galera-3-25.3.22-2.el7.x86_64.rpm
[root@node1 ~]# yum install -y http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64/mysql-wsrep-server-5.6-5.6.38-25.21.el7.x86_64.rpm

启动 mysql 并添加用户名、密码和对应数据库的用户名、密码权限

[root@node1 ~]# service mysql start --skip-grant-tables
[root@node1 ~]# mysql
mysql> use mysql;
mysql> update user set password=PASSWORD("") where USER="root";
mysql> quit

重启mysql服务,使用创建的用户名和密码登录.再次进入的时候回提示你设置密码

[root@node1 ~]# service mysql restart
[root@node1 ~]# mysql -uroot -p
mysql> SET PASSWORD=PASSWORD("123456");

创建同步账号并授权

mysql> grant all on *.* to 'wsrep'@'%' identified by 'nx111111';
mysql> quit

设置Mysql为开机启动

[root@node1 ~]# chkconfig mysql on

去掉Postfix,这个可能跟MySQL配置有冲突

[root@node1 ~]# yum remove postfix -y

关闭Mysql

[root@node1 ~]# service mysql stop

配置文件

[root@node1 ~]# vim /etc/my.cnf
!includedir /etc/my.cnf.d/ # 添加此行

拷贝swrep.conf 文件到/etc/my.cnf.d/下

[root@node1 ~]# cp -r /usr/share/doc/mysql-wsrep-server-5.6-5.6./wsrep.cnf /etc/my.cnf.d/

将以下配置替原有配置

vim /etc/my.cnf.d/wsrep.cnf

[mysqld]
server_id = 10 # 每个节点都不一样,分别是 10、11、12
default_storage_engine = InnoDB
datadir =/var/lib/mysql/
binlog_format = ROW
log-bin = mysql-bin
log-slave-updates = 1
innodb_autoinc_lock_mode = 2
lower_case_table_names = 1 # 修改这个配置必须重启
log_bin_trust_function_creators = 1 wsrep_provider = /usr/lib64/galera-3/libgalera_smm.so
wsrep_sst_auth = wsrep:nx111111
wsrep_sst_method = xtrabackup
wsrep_cluster_name = 'nx_wsrep' # 集群名,一定要一致。
wsrep_node_name = node1 #本节点主机名
wsrep_cluster_address = gcomm://10.0.0.11,10.0.0.12 # 其它节点 IP
wsrep_node_address = 10.0.0.10 # 本节点 IP
wsrep_sst_donor=node2,node3, # 其它节点的名称
wsrep_sst_method = rsync
wsrep_slave_threads=8 innodb_buffer_pool_size=10737418240
innodb_log_file_size=134217728
innodb_flush_log_at_trx_commit=2 #innodb_buffer_pool_dump_at_shutdown=1
#innodb_buffer_pool_load_at_startup=1
#innodb_log_file_buffer_size=16777216
skip-name-resolve [client]
user = wsrep
password = nx111111

启动 mysql-wsrep

集群中的第一个节点,以空地址启动

[root@node1 ~]# mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &

其它节点,启动方式

[root@node1 ~]# mysqld_safe > /dev/null &

更新数据库

[root@node1 ~]# mysql_upgrade

增加数据库的安全性

[root@node1 ~]# mysql_secure_installation

查看集群状态

查看集群配置

mysql> show status like "wsrep%";

确认MySQL的3306端口和wsrep的4567端口处于监听状态

[root@node3 ~]# netstat -tulpn | grep -e  -e
tcp 0.0.0.0: 0.0.0.0:* LISTEN /mysqld
tcp6 ::: :::* LISTEN /mysqld

集群功能是否开启

mysql> show status like 'wsrep_ready';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready | ON |
+---------------+-------+
row in set (0.00 sec)

集群ID号

mysql> SHOW  GLOBAL  STATUS  LIKE  'wsrep_cluster_state_uuid' ;
+--------------------------+--------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------+
| wsrep_cluster_state_uuid | 176a8d84-e0ba-11e7-9e7b-d7b3a39130ff |
+--------------------------+--------------------------------------+
row in set (0.00 sec)

集群中的节点数量

mysql> SHOW  GLOBAL  STATUS  LIKE  'wsrep_cluster_size' ;
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | |
+--------------------+-------+
row in set (0.00 sec)

集群(其他)节点地址

mysql> show variables like 'wsrep_cluster_address';
+-----------------------+----------+
| Variable_name | Value |
+-----------------------+----------+
| wsrep_cluster_address | gcomm:// |
+-----------------------+----------+
row in set (0.00 sec)

参考

http://blog.csdn.net/yangchuan_csdn91/article/details/52689981?locationNum=2

MySQL 集群的更多相关文章

  1. mysql集群数据一致性校验

    目前,mysql在互联网行业使用地如火如荼,很多大型网站都在使用MySQL数据库,通过搭建mysql主备集群,实现高性能,高可用的存储方案.mysql集群的共同特性是通过复制来实现主备间的同步,保证主 ...

  2. MySQL集群在断网后再启动报"Unable to start missing node group"问题处理

    总所周知,MySQL集群又名ndb cluster,而ndb就是network based database的简称,数据库节点之间依靠网络来通信和保证数据分块间的一致性.今天由于机房交换机损坏,导致集 ...

  3. 京东分布式MySQL集群方案介绍

    背景 数据库作为一个非常基础的系统,任何一家互联网公司都会使用,数据库产品也很多,有Oracle.SQL Server .MySQL.PostgeSQL.MariaDB等,像SQLServer/Ora ...

  4. MySql集群FAQ----mysql主从配置与集群区别、集群中需要多少台计算机呢?为什么? 等

    抽取一部分显示在这里,如下, What's the difference in using Clustervs using replication? 在复制系统中,一个MySQL主服务器会更新一个或多 ...

  5. linux上使用amoeba实现MySql集群,以及读写分离,主从复制

    一.由于是MySql集群,所以就不可能只有一个MySql,需要多个MySql,具体安装步骤,可以参考http://www.cnblogs.com/ywzq/p/4882140.html这个地址进行安装 ...

  6. 高可用性、负载均衡的mysql集群解决方案

    高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么 ...

  7. mysql集群实例

    原文地址:http://www.it165.net/database/html/201403/5678.html http://www.cnblogs.com/seesea125/archive/20 ...

  8. MySQL Cluster(MySQL 集群) 初试(转)

    作/译者:叶金荣(imysql#imysql.com>),来源:http://imysql.com,欢迎转载. 作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请 ...

  9. 浅谈mysql集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  10. MYSQL集群的搭建

    按照此配置完全可以配置成功!! 一.介绍========测试环境:Server1:ndbd 192.168.1.225Server2:ndbd 192.168.1.226Server3:mysqld ...

随机推荐

  1. bzoj千题计划188:bzoj1923: [Sdoi2010]外星千足虫 (高斯—若尔当消元法解异或方程组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1923 #include<cstdio> #include<cstring> ...

  2. IntelliJ IDEA 破解 - pycharm

    MAC激活方法 下载破解文件 下载地址: https://files.cnblogs.com/files/resn/JetbrainsCrack-2.7-release-str.jar.zip 或者去 ...

  3. JMS学习(四)-一个简单的聊天应用程序分析

    一,介绍 本文介绍一个简单的聊天应用程序:生产者将消息发送到Topic上,然后由ActiveMQ将该消息Push给订阅了该Topic的消费者.示例程序来自于<JAVA 消息服务--第二版 Mar ...

  4. android中实现在ImageView上随意画线涂鸦

    我实现的思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完 ...

  5. 新.Net架构必备工具列表

    N多年前微软官网曾发了.Net下必备的十种工具,N多年过去了,世异时移,很多东西都已经变化了,那个列表也似乎陈旧了.而且,该文也只是对十种工具独立的介绍,显得有些罗列的感觉,是不是每个工具都是同等重要 ...

  6. jmeter的环境配置

    工具/原料   WIN7 Jmeter安装包 JDK 一.安装JDK   1 [步骤一]安装jdk 1.下载jdk,到官网下载jdk,地址:http://www.oracle.com/technetw ...

  7. Ansible Tower系列 二(安装 Tower)【转】

    文档:http://docs.ansible.com/ansible-tower/ 安装前检查 python版本为2.6 保持网络畅通 内存预留充足 安装用户为root 软件下载 下载地址:http: ...

  8. JavaScript中对象与函数的某些事[JavaScript语言精粹-N1]

    今天在读<JavaScript语言精粹>的时候,关于函数的一个部分,始终觉得有点难以理解,代码如下: 1: var obj = (function(){ 2: var value = 0; ...

  9. C/C++杂记:深入理解数据成员指针、函数成员指针

    1. 数据成员指针 对于普通指针变量来说,其值是它所指向的地址,0表示空指针. 而对于数据成员指针变量来说,其值是数据成员所在地址相对于对象起始地址的偏移值,空指针用-1表示.例: 代码示例: str ...

  10. 设置adb server的端口号

    在操作系统的系统环境里面,加一个环境变量: ANDROID_ADB_SERVER_PORT,值为9999,看自己喜欢.