最近因为一次偶然的数据库磁盘坏道故障,所以决定进行mysql同步的HA方案升级,趁着这个机会又重新审视了一把mysql replication的过程。
整个方案是基于四个mysql实例,实现两两主从,同时两台master之间进行主主同步,此方案的优势是任何一台master或者slave故障时,都可以切换到另一台master或slave进行服务,当任一台故障实例恢复后,都可以自动恢复和同步数据,整个故障和修复过程的数据同步问题,无需进行人工干预。简单的拓扑关系如下:
首先,准备四台虚拟机,安装上版本相同的mysql,保证slave版本大于等于master,为确保兼容性问题,最好是版本相同(至少保证版本号的前两位相同)
资源清单:
Master A : 192.168.4.85 , server_id 1
Slave A : 192.168.4.86 , server_id 2
Master B : 192.168.4.87 , server_id 3
Slave B : 192.168.4.88 , server_id 4
Mysql版本号:5.5.43
同步库名:test1
OK,从拓扑图中可以看出,我们的方案要做的其实是两件事,两个主从同步和一个主主同步。
先来看下主从同步的配置:
主库配置:
1、修改Master A的配置文件my.conf:
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M binlog_do_db = test1
2、添加具有同步权限的账户
GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
3、重启mysql:
service mysql restart
4、显示master日志位置:
mysql >> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000003 | 107 | | |
+------------------+-----------+--------------+------------------+
从库配置
1、修改Slave A的配置文件my.conf:
server-id = 2 expire_logs_days = 10 max_binlog_size = 100M replicate_do_db = test1
2、重启mysql:
service mysql restart
3、设置主服务器信息
(如果主库有存量数据需要同步,则需要先进行dump操作后再进行从库的同步,此处不做详细介绍)
change master to master_host='192.169.4.85',
master_user='user',
master_password=password,
master_log_file='mysql-bin.000003',
master_log_pos=107;
4、启动同步
mysql >>slave start;
5、显示slave状态,出现以下信息表示同步开启成功,主要看
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Mysql >> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 1.1.1.1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 107
Relay_Log_File: relay-relay-bin.000012
Relay_Log_Pos: 1148354
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table: gslb.server_threshold,gslb.server,gslb.threshold,gslb.vip,gslb.status,gslb.vip_threshold
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 270500590
Relay_Log_Space: 1148510
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 10201
1 row in set (0.00 sec)
接下去,在master的test1库中进行建表、插数据等操作后,到slave中能看到同步后的操作结果。
Master B -- Slave B 的主从同步配置同上,至此两个主从同步均已部署完成,接下去,我们就要进行Master A -- Master B的主主同步配置工作,见下节
相关推荐
MySQL数据库主从同步服务器部署说明文档
MySQL借助Google提供的插件,完成半同步复制模型,大家可以学习配置下
部署mysql主从同步结构操作指引及工具软件 1、数据库安装包:mysql-5.7.32-winx64.zip 2、数据库客户端:SQLyog 8.14.rar 3、说明文档:部署mysql主从同步结构操作指引文档.doc
MySql 主从 双主 主主 同步 文档 ,包含每一步操作
Mysql主从同步(1) - 概念和原理介绍 以及 主从_主主模式 部署记录 - 散尽浮华 - 博客园1
MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时...
mysql主从 互为同步的研究 与各种问题 和各种奇葩问题的解决方案
windows下mysql双向同步备份实现方法以下的文章主要讲述的是在windows环境下实现MySQL数据库的主从同步备份的正确操作方案,我在一些相关的网站看见关于windows环境下实现MySQL数据库的主从同步备份的操作步骤描述,...
MySQL 主从同步分为 3 个步骤: master 节点将数据的更新记录写到 binary log 中。 slave 节点开启 IO 线程连接 master 节点,请求获取指定 binary log 文件的指定位置之后的日志。 master 节点的 binary log ...
MYSQL 主从复制部署方式。提供主从数据同步,弱同步,无数据一致性校验。
一主一备架构是双机部署中最简单的一种架构了,mysql数据库系统自带这个数据同步(主备)功能。 思路:将mysql数据库部署到两台机器,其中一台机器作为日常线上提供数据读写服务的机器,称为主机;另一台机器不提供...
19-MySQL主从同步一键安装脚本实战mp4 20-MySQL多主多从高可用集群自动切换实现mp4 21-有关MySQL高可用注意及常见故障讲解mp4 22-MySQL集群及高可用的更多思路方案引子mp4 23-常见MySQL集群高可用架构讲座01.mp4 24-...
Docker安装mysql8.0集群-主主(双主)部署实现 1. 主从复制的原理 2. 主主(双主)实现方案 3. 前置条件 4. 安装步骤 (1) 拉取镜像 (2) docker启动mysql容器 1. 数据卷挂载 2. 编写my.cnf文件(这一步...
CentOS7.0部署基于MySQL内建复制模式,实现异地数据同步,单向复制环境,
一般来说mysql都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。
MySQL的主从复制(replication)关系,不太严谨的叫法是“同步”或者“主从同步”。实际上在早期,MySQL的主从并不能实现真正的“同步”(sync),而是“异步”的(async)。 MySQL主从复制它可以有多种模式,最经典的也是...
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump...mysql master收到dump请求,开始推送binary log给slave(也就是canal),canal解析binary log对象(原始为byte流),主从同步的必备品
网盘文件永久链接 18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) ...监控MySQL主从同步状态是否异常脚本 目录文件变化监控和实时文件同步 自动发布Java项目 自动发布PHP项目脚本
mysql主从数据库部署 memcache扩展改用libmemcached; 引入消息机制(MemcaheQ),异步发表微博; 微博推送用户分级,优先推送重点用户; InnoDB搜索引擎 按时间分表,索引以mysql存放,内容采用nosql存储 问题...