专栏首页从零学习云计算Mysql学习(2)——Mysql双机热备

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

参考博客《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,配置参数可能会有差别。

两个主机关闭防火墙

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

# systemctl stop firewalld
# systemctl disable firewalld

Master服务器配置

  • 进入MySQL命令行, 创建备份账号,即备份主机使用用户名backup,密码123456就可以连接到主服务器,进行备份
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]下添加:

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
# systemctl restart mysqld
  • 查看mysql状态

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

Slave服务器配置

  • 暂停Mysql服务。
# systemctl stop mysql
  • 修改mysql的配置文件/etc/my.cnf,添加如下配置:
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:
# systemctl restart mysql
  • 打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据即上文设置的同步账号密码,二进制文件的名称和位置)。
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状态:
mysql> show slave status\G;

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

测试

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

  • 在主数据库test库中,新建一张表backup。
  • 在从数据库中查看。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql学习(1)——Mysql安装

    mysql-devel:开发用到的库以及包含文件。 mysql:mysql客户端。 mysql-server:数据库服务器。

    胡了了
  • openshift/origin工作记录(13)——利用NFS动态提供后端存储卷

    参考《利用NFS动态提供Kubernetes后端存储卷》以及 https://github.com/kubernetes-incubator/external-...

    胡了了
  • openshift/origin学习记录(2)——添加Router组件

    学习资料来源于官方英文文档与《开源容器云OpenShift》一书,因为刚开始学习,不确定博客的正确性,以下内容仅供参考。 本部分是在openshift/orig...

    胡了了
  • mysql主从同步

    参考https://www.cnblogs.com/xiaoyuanqujing/articles/11796376.html#4417022

    小小咸鱼YwY
  • Mysql主主同步失败后的恢复

    tonglei0429
  • linux安装mysql8并且实现主从同步

    准备服务器Server1和Server2,如果在同一个服务器的话则安装mysql时需要改变其端口。

    我的小熊不见了丶
  • mysql主从复制配置与问题解决

    原理:MySQL使用3个线程来执行复制功能(其中1个在【主服务器】上,另两个在【从服务器】上)       当【从服务器】发出START SLAVE时,【从...

    匠心Java
  • Docker + MySQL 主从环境搭建

    my.cnf(部分老版本可能是my.ini)是MySQL核心配置文件。首先,在任意挂载目录下新建*.cnf文件(这里的*代表可以是任意的文件名称)。如果你的m...

    happyJared
  • Mysql主从配置实战

    老梁
  • centos7 .*tar包安装 MySQL5.7

    周小董

扫码关注云+社区

领取腾讯云代金券