前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql学习(2)——Mysql双机热备

Mysql学习(2)——Mysql双机热备

作者头像
胡了了
发布2019-05-26 14:54:57
1.3K0
发布2019-05-26 14:54:57
举报

参考博客《CentOS系统MySQL双机热备配置》。 参考官方文档https://dev.mysql.com/doc/refman/5.6/en/replication.html

实现机制

对于一个MySQL服务器,一般有两个线程来负责复制和被复制。当开启复制之后:

主服务器Master,会把自己的每一次改动都记录到二进制日志 binlog 中。 从服务器Slave,会用master上的账号登陆到master上,读取master的binlog,写入到自己的中继日志 Relaylog,然后自己的SQL线程会负责读取这个中继日志,并执行一遍。

在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程,这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的,但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。

准备工作

类型

主机名

IP

操作系统

Master

master

192.168.121.182

CentOS 7.3

slave

slave

192.168.121.181

CentOS 7.3

备份前保证两个数据库的数据一致。 mysql版本为5.6.39,不同版本的mysql,配置参数可能会有差别。

两个主机关闭防火墙

测试的时候为了方便起见,先关闭两台主机的防火墙。

代码语言:javascript
复制
# systemctl stop firewalld
# systemctl disable firewalld

Master服务器配置

  • 进入MySQL命令行, 创建备份账号,即备份主机使用用户名backup,密码123456就可以连接到主服务器,进行备份
代码语言:javascript
复制
grant file,select,replication slave on  *.* to backup@192.168.121.181 identified by '123456';

这条命令的作用是在主服务器建立一个专门用于Replication的账户,@后面是账户用户所在的那台计算机的域名。 如果想要在Slave上有权限执行”LOAD TABLE FROM MASTER”或”LOAD DATA FROM MASTER”语句的话,必须授予全局的 FILE 和 SELECT 权限。

这里写图片描述
这里写图片描述

- 修改mysql的配置文件/etc/my.cnf,[mysqld]下添加:

代码语言:javascript
复制
server-id=1
log-bin=mysql-bin #打开日志开关,二进制日志文件
max_binlog_size=104857600
binlog_format=mixed #日志模式row level和statement level的结合
binlog-do-db=test #在test库进行的操作记录二进制日志文件
binlog-ignore-db=mysql #忽略对mysql库的操作,即不记录到日志中
  • 重启mysql
代码语言:javascript
复制
# systemctl restart mysqld
  • 查看mysql状态
这里写图片描述
这里写图片描述

记录二进制文件名(mysql-bin.000002)和位置(120)。

Slave服务器配置

  • 暂停Mysql服务。
代码语言:javascript
复制
# systemctl stop mysql
  • 修改mysql的配置文件/etc/my.cnf,添加如下配置:
代码语言:javascript
复制
server-id=2
replicate-do-db=test #同步master的test库
relay-log=relay-bin #设置I/O线程读master的binlog并写入本地的文件名,即为relay-log
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
  • 重启mysql:
代码语言:javascript
复制
# systemctl restart mysql
  • 打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据即上文设置的同步账号密码,二进制文件的名称和位置)。
代码语言:javascript
复制
mysql> stop slave; #关闭Slave
mysql> change master to master_host='192.168.121.182',master_user='backup',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=120;
mysql> start slave; #开启Slave
这里写图片描述
这里写图片描述
  • 查看slave状态:
代码语言:javascript
复制
mysql> show slave status\G;

这里需要下图红框里的状态都是Yes。

这里写图片描述
这里写图片描述

测试

上面设置的,主从同步的数据库是test。

  • 在主数据库test库中,新建一张表backup。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
  • 在从数据库中查看。
这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年02月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现机制
  • 准备工作
  • 两个主机关闭防火墙
  • Master服务器配置
  • Slave服务器配置
  • 测试
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档