mysql 多主_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

408749d4496ec5532b6ff80c78f8cef4.gif

[mysqld]

datadir=/var/lib/mysql

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

wsrep_node_name=node1

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

wsrep_sst_method=rsync

port=3306user=mysql

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2innodb_locks_unsafe_for_binlog=1innodb_flush_log_at_trx_commit=0innodb_doublewrite=0innodb_file_per_table=1

binlog_format=ROW

log-bin=mysql-bin

server-id=101relay-log=mysql-relay-bin

log-slave-updates=1symbolic-links=0[mysqld_safe]

log-error=/var/log/mysqld.log

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

408749d4496ec5532b6ff80c78f8cef4.gif

三个节点全部同步此配置文件,需注意:

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上创建数据库:

b4f22297ac21381ad952ec408a2d829f.png

在其余node查看:

node2:

1748f83eabfc5b2805a15be4ba3a941b.png

node3:

934c601e0db100547df3eea3a0473575.png

接下来可以将集群信息写入到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:导致上述问题的原因未知,也未去深入研究,只要三个节点不同时启动就不会有问题,如果三个节点同时启动就会出现上述问题(重启三节点任意一个节点不会出现任何问题)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值