欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-09 20:42:59
...

参考博客《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 aaa@qq.com192.168.121.181 identified by '123456';

这条命令的作用是在主服务器建立一个专门用于Replication的账户,@后面是账户用户所在的那台计算机的域名。
如果想要在Slave上有权限执行”LOAD TABLE FROM MASTER”或”LOAD DATA FROM MASTER”语句的话,必须授予全局的 FILE 和 SELECT 权限。
Mysql学习(2)——Mysql双机热备
- 修改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学习(2)——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

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

  • 查看slave状态:
mysql> show slave status\G;

这里需要下图红框里的状态都是Yes。
Mysql学习(2)——Mysql双机热备

测试

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

  • 在主数据库test库中,新建一张表backup。
    Mysql学习(2)——Mysql双机热备
    Mysql学习(2)——Mysql双机热备
  • 在从数据库中查看。
    Mysql学习(2)——Mysql双机热备
相关标签: 双机热备