前言

这段时间 一直在Cloudera Manager集群上配置高可用的Mariadb服务。今天花一点记录一下自己的配置过程 希望后续的读者看到后 在遇到相同业务需求时具有参考价值。

以往我们在配置MySQL卓仓复制时,一般而言 在配置到一主 一从 能够实现MySQL的读写分离 就差不多了,因为导师的要求 这里要配置一个互为主从的MySQL服务,也就是我们常说的双主模式。
A B之间互相同步数据,A写入的数据在B上能够读取 更新,B上写入的数据在A上也鞥实现相同的操作。

因为在网上看到的大多数资料 都是配置的一主一从,这里 我就这段时间的配置过程 做一个大概的文档总结。

配置过程详解

我们在这里选取主机ip尾号为145 147的两台CentOS 7.1的主机来实现Mariadb的双主模式。

1.安装 mysql

yum install mariadb-embedded mariadb-libs mariadb-bench mariadb mariadb-server

2.mysql主从复制(互为主从)

1.在两台机器上分别添加一个用于从机访问的帐号, 赋予REPLICATION SLAVE权限.
GRANT REPLICATION SLAVE ON . TO ‘slave’@’%’ IDENTIFIED BY ‘000000’;
2.第一台服务器(IP: 172.19.2.147)运行:
GRANT REPLICATION SLAVE ON . TO ‘slave’@‘172.19.2.145’ IDENTIFIED BY ‘000000’;
3.第二台服务器(IP: 172.19.2.145)运行:
GRANT REPLICATION SLAVE ON . TO ‘slave’@‘172.19.2.147’ IDENTIFIED BY ‘000000’;

4 修改配置文件,配置服务器编号, 开启bin-log
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=145 ##或者147不同主机的id唯一标识
log_bin =mysql-bin
#binlog_ignore_table=scm.CM_VERSION

relay-log = relay-mysql #开启二进制日志
relay-log-index =relay-mysql.index #开启中继日志
log_slave_updates=on
auto-increment-increment = 2
auto-increment-offset = 1 #从1开始 或者2开始 为避免id冲突 两台主机的起步要不同
打开这两行的注释, 注意这里的server-id是服务器编号, 所以, 两台服务器上的值要设置的不一样. 比如1和2,最好用IP地址最后一段标识。

如下图所示:

5.重启MySQL服务
Systemctl restart mariadb //重启
Systemctl status mariadb //查看进程

6.这里可以清空两台主机的master和slave日志(若之前有开启过同步的,需要先停止同步:stop slave;)
在mysql命令行中输入:
reset master;
reset slave;
7.在mysql命令模式执行
SHOW MASTER STATUS; ##前面已经查看过了。
分别给145 147数据库加读锁,防止配置同步时有数据写入: flush tables with read lock;

8.此时请保证执行这两条命令的mysql控制台不要退出,【非常重要】.
然后进mysql控制台,分别产看相关信息
在21服务器上:
show master status;
在25服务器上:
show master status;

分别重新打开一个mysql控台台(重要)
分别在新打开的两个mysql>中执行如下:

change master to master_host='172.19.2.147',master_user='slave',master_password='000000',master_log_file='mysql-bin.000002',master_log_pos=586748096;
change master to master_host='172.19.2.145',master_user='slave',master_password='000000',master_log_file='mysql-bin.000002',master_log_pos=429515657;

参数说明:
CHANGE MASTER TO
MASTER_HOST = ‘host’, #另一台机器的地址
MASTER_PORT = 3306, #另一台机器的端口
MASTER_USER = ‘slave’,#另一台机器上第一步分配的用户名
MASTER_PASSWORD = ‘000000’, #另一台机器上第一步分配的密码
MASTER_LOG_FILE = ‘mysql-bin.000001’,#另一台机器上执行SHOW MASTER STATUS得到的文件名(File)
MASTER_LOG_POS = 237; #另一台机器上执行SHOW MASTER STATUS得到的偏移量(Position)

9.START SLAVE;
10.SHOW SLAVE STATUS \G;


注意看 这里配置的是145 147的互为主从模式,所以一定是两个节点上的slave status上的Slave_IO_Running和Slave_SQL_Running都是Yes状态,这样才实现了 双主模式。
11. 解锁: unlock tables;
启动两个节点的slave 之后,我们队两个进行锁解除,然后写数据进行双主模式的测试。
一般而言,企业里面的数据库 数据表较大,数据属性多,这也是为什么 现在越来越多的商业应用中开始选用主从模式 甚至是双主模式来开发,归根结底 南国认为 很重要的一个原因 担心大量的读写操作 使得服务宕机。
所以在测试时,南国建议开发者可以在某个数据库中自己创建的少数属性的数据表,并在不同节点进行数据增删查改 我们还可以继续在MySQL命令行 查看两个节点的slave状态 是否还是双Yes。

如果一直是双Yes,而且数据可以实现互相读写同步,那么恭喜你 MySQL的双主模式你已经成功搭建好。

注意:
在配置MySQL互为主从模式(双主模式)时经常出现的坑是 两个节点只能实现一边主从,某一个节点上的slave status会显示错误,错误一般是1032 某个数据库中的信息不能更新,这是一般采用的方法是 将主库中的数据备份 然后加载到从库中,方可以得到解决。
也可以在从库中: stop slave; set global sql_slave_skip_counter=1;#执行跳过错误操作,但这个治标不治本,下次 主库更新数据 还会报错 start slave;

还有一些常见的错误例如1032 1062的错误及参考的解决办法,可以参考http://xstarcd.github.io/wiki/MySQL/online_mysqlrepl_error.html

小结:
南国配置MySQL双主模式 主要是因为最近部署CLoudera Manager HA模式所使用,在搭建的过程中 也是遇到了不少坑,好在最后还是成功了。 其实双主模式 最重要的考虑是 避免单一节点宕机 造成数据丢失,而没有将负载放在首要地位考虑。因为 现有的节点资源 足够大了,数据量远没有超过其负荷。
当然 不同应用场景 有不同考虑,更多认识 未完待续~

Mariadb互为主从(双主模式)配置相关推荐

  1. redis 互为主从(双主)

    http://blog.csdn.net/zhu_tianwei/article/details/44982521

  2. mysql双主和主从的区别_MySQL群集,主从复制及双主模式

    MySQL主从复制,是一个MySQL的群集,可以很好的解决的单点故障,并且可以进行读写分离来减轻数据库的压力.很多情况下主服务器仅作为写入数据服务器,而构建多个从节点来进行数据读取. 构建主从复制的几 ...

  3. Nginx+keepalived 高可用双机热备(主从模式/双主模式)

    基础介绍 负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:l ...

  4. ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...

  5. mysql 主备和双主模式_MySQL双主模式

    双主模式 互为主从:两个节点各自都要开启binlog和relay log(1)数据不一致 (2)自动增长ID 定义一个节点使用奇数ID auto_increment_offset=1 auto_inc ...

  6. MariaDB+Keepalived 搭建双主HA数据库服务

    1.安装mysql   在linux版本下,mysql称为mariadb,可以选择在线安装,或编译安装.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开 ...

  7. MySQL双主模式(2022/11/19)

    MySQL双主模式(2022/11/19) 文章目录 MySQL双主模式(2022/11/19) 一.搭建环境 二.搭建过程 2.1 MySQL 服务安装 2.2 binlog 开启 2.3 创建节点 ...

  8. OpenResty+Keepalived组建高可用集群+双主模式

    * 环境: system version:CentOS Linux release 7.5.1804 (Core) 3.10.0-862.9.1.el7.x86_64 nginx version:op ...

  9. mysql复制模式第二部分-----双主模式

    双主配置 我在配置主从服务器时,使用了两台服务器:10.19.34.126和10.19.34.91. 1.首先需要在这两台上搭建单独的mysql服务masterA和masterB. 2.配置数据库ma ...

最新文章

  1. Java扫描注解下的包_使用Spring mvc 利用java的反射技术,来扫描对应包下的注解请求url 统一保存在数据库中...
  2. uniapp一键登陆(php)
  3. springboot快速集成swagger
  4. Visual Studio 2012 C# ActiveX控件开发总结
  5. java集合框架的结构_集合框架(Collections Framework)详解及代码示例
  6. 关于maven面试的哪些事儿~
  7. 使用python编写自己的进程调试工具
  8. emacs(考场+平时)配置方案
  9. Oracle 向上递归、向下递归
  10. win7启动黑屏安全模式下卸载驱动图解
  11. 大型软件工作站计算机性能配置要求,推荐配置7.3万元的高性能服务器计算机工作站(全文)...
  12. 使用计算机时什么是死机,电脑死机的原因是什么,电脑死机怎么办? - 电脑死机的原因 电脑死机怎么办 - 安全专题...
  13. Eclipse+Java+Swing实现宠物商店管理系统
  14. 提升工作效率五步走之前两步 2016-09-18 思佳真探
  15. js html 编辑器添加图片不显示,彻底解决ewebeditor网站后台不能上传图片的方法
  16. centos重启和关闭命令
  17. 操作系统----进程间通信的方式
  18. java 广告插件_谷歌提议 Chrome 限制广告插件
  19. Bug 生命周期 中的 各个状态!
  20. 各CCF期刊点评网站/学术论坛的信息汇总及个人评价

热门文章

  1. 声网 Token 鉴权机制,以及常见的问题
  2. 用深层神经网络识别猫咪图片:吴恩达Course1-神经网络与深度学习-week3week4作业
  3. Python 中的Numpy函数
  4. 《论语》全文原文(一至十)
  5. 不是我说,不掌握这些坑,你敢用BigDecimal吗?
  6. Java中用包装模式实现标准的DataSource数据源连接池
  7. TypeScript类型
  8. Spring三十五问,四万字+五十图详解 建议收藏
  9. 献给杭电五十周年校庆的礼物+递推
  10. matlab日期统计,Matlab 日期频次统计