最近部署测试环境,涉及到MySQL数据库主从双向同步的部署,记录一下部署过程,正常读写都发生在主库,从库作为备选数据库(热备份),当主库发生异常,数据库自动切换到从库,这里面是怎么监控数据库异常并触发自动切换,就不在这里研究记录了(公司用的自研中间件,这里可以使用heartbeat实现,暂不做研究);另外,主库和从库都还可以配置一个只读模式的备库,可以实现读写分离(使用mycat实现),这个看实际业务性能需求是否需要配置。下面只简单介绍主从双向同步的配置:

1. 原理:网上找的一张图解,应该是比较清晰的画出了组网中各个关键部件和作用,这张图解是主从复制,并不是双向同步,不过双向同步也是差不多了,只不过主库既是master也是slave,从库也即是master也是slave。

              

2. 环境准备,主从库的MySQL版本装同一个版本(5.6.38),避免出现未知的异常

主库:192.168.245.130:3306

从库:192.168.245.131:3306

3. 主库和从库的配置保持一致,除了server-id

# 设置server_id,主从服务器配置不同的值
server-id = 1
# 开启二进制日志功能,最好是绝对路径
log_bin = /opt/database/mysql/mysql-bin.log
# 中继日志路径
relay_log = /opt/database/mysql/mysql-relay-bin.log
# 允许从库将其重放的事件也记录到自身的二进制日志中
log_slave_updates = 1
# 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days = 7
# slave重放的事件时忽略的错误,all是忽略所有错误
# ddl_exist_errors:1007,1008,1050,1051,1054,1060,1061,1068,1094,1146
slave-skip-errors = ddl_exist_errors

4. 主从服务均创建帐号并授权:

# 在131机器执行下面SQL,在130机器上面把130换成131后执行,密码自定义
# 创建用户repl
CREATE USER 'repl'@'192.168.245.130' IDENTIFIED BY '';
# 授权
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.245.130';
# 刷新权限
flush privileges;

5. 主从服务器上均查看slave状态:SHOW MASTER STATUS;

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

分别记录主从服务器的File 和 Position,后面有用

6. 主从服务均执行slave同步语句,MASTER_LOG_FILE和MASTER_LOG_POS填写上一步查询的值,MASTER_HOST,MASTER_USER,MASTER_PASSWORD根据实际情况填写,当使用 MASTER_AUTO_POSITION 参数的时候,MASTER_LOG_FILE,MASTER_LOG_POS参数不能使用

CHANGE MASTER TO MASTER_HOST='192.168.245.130', MASTER_USER='repl', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;

7. 主从服务器均启动slave:START SLAVE;

8. 主从服务器均查看slave状态:SHOW SLAVE STATUS\G;

mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.245.130
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 117
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

状态中显示Slave_IO_Running和Slave_SQL_Running状态均为YES,说明主从同步已经配置完成,其中Seconds_Behind_Master显示比master落后的数据时延,通过这个数据可以查看主从的数据时差,判断主从同步的性能压力。

9. 常见问题:

a. 主从复制的时候,SQL线程执行的时候出现异常,Slave_SQL_Running状态编程NO,该怎么解决?

目前本人也没有比较好的办法解决,在配置参数里面添加了slave-skip-errors参数进行忽略错误,实际生产环境该参数如何添加要实际评估,如果不加该参数,出现SQL执行异常的时候,主从同步其实是会阻塞的,只能手动恢复,重新指定pos,stop salve -》change master to -》start slave

b. 怎么删除bin日志

stop salve -》reset slave -》start slave

c. 怎么开始GTID(全局事务ID)

在my.cfg配置文件添加如下参数,然后重启MySQL:

gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates = 1

MySQL主从双向同步的更多相关文章

  1. 配置MySQL主从双向同步

    原文地址:http://www.cnblogs.com/zhongshengzhen/ 原主数据库:192.168.137.33 原从数据库:192.168.137.197   需要先阅读并操作:ht ...

  2. Centos 配置 Mysql 主从双向同步

    配置之前,请先阅读mysql主从复制: Mysql-主从复制 原:  主从环境: 主服务器:192.168.153.130 从服务器:192.168.153.131 1.从数据库创建同步用户,将主数据 ...

  3. MySQL主从双向同步复制

    本文介绍了mysql主从,实现mysql的双向同步复制. MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护日 ...

  4. MySQL Dual-Master 双向同步

    本文介绍的Mysql Dual-Master 复制实施方法可能不是最完美.最强大的.但是在我的应用环境下能很好的满足各项需求. 本文基于我们仅仅使用两台MySQL服务器的情况下,但是你会发现文章中介绍 ...

  5. MySQL主从数据库同步延迟问题解决(转)

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...

  6. 配置ogg目录索引-oracle与mysql的双向同步步骤

    以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...

  7. windows下 MySQL数据库双向同步 配置步骤

          最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下 ...

  8. MYSQL主从库同步配置过程

    MYSQL主从库同步配置过程 为了实现网站数据库的异地备份,采用了MySQL数据库主从同步配置,需要两台服务器分别作为主从库,当主库发生增删改等操作,会实时反映到从库,我的个人服务器配置如下: 主库为 ...

  9. MySQL 数据库双向同步复制

    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...

随机推荐

  1. Phoenix安装批次提交插入更新语句

    1 贴一下官方的代码 https://phoenix.apache.org/tuning_guide.html try (Connection conn = DriverManager.getConn ...

  2. linux-2.6.38 input子系统(用输入子系统实现按键操作)

    一.设备驱动程序 在上一篇随笔中已经分析,linux输入子系统分为设备驱动层.核心层和事件层.要利用linux内核中自带的输入子系统实现一个某个设备的操作,我们一般只需要完成驱动层的程序即可,核心层和 ...

  3. Ubuntu18.04安装OpenCV4.1.0

    Ubuntu18.04安装OpenCV4.1.0 1.首先要安装依赖 sudo apt-get install build-essential \ cmake git libgtk2.0-dev pk ...

  4. 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流

    建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bi ...

  5. Angular Multiple HTTP Requests with RxJS

    原文:https://coryrylan.com/blog/angular-multiple-http-requests-with-rxjs ----------------------------- ...

  6. 冒泡排序Bubble_Sort

    基本原理:对于冒泡排序来说,基本思想是从第一个元素开始,数组中的数据依次和它后面相邻的数据进行比较,即1和2比较,2和3比较,a和a+1比较,直到倒数第二位和倒数第一位的比较,如果顺序不对就进行交换, ...

  7. python pip 出现locations that require TLS/SSL异常处理方法

    python pip 出现locations that require TLS/SSL异常处理方法 转载 郑才华 发布于2018-03-24 21:41:16 阅读数 51844 收藏 展开 最近在r ...

  8. Java中的集合List、ArrayList、Vector、Stack(三)

    List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...

  9. BZOJ 3924 / Luogu P3345 [ZJOI2015]幻想乡战略游戏 (动态点分治/点分树)

    题意 树的结构不变,每个点有点权,每一条边有边权,有修改点权的操作,设xxx为树中一点.求∑idist(x,i)∗a[i]\sum_idist(x,i)*a[i]i∑​dist(x,i)∗a[i]的最 ...

  10. Codeforces Round #588 (Div. 2) A. Dawid and Bags of Candies

    链接: https://codeforces.com/contest/1230/problem/A 题意: Dawid has four bags of candies. The i-th of th ...