Mysql双机热备配置(超详细多图版)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 一、双击热备介绍 1.基本概念   双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。

一、双击热备介绍

1.基本概念

  双机热备特指基于高可用系统中的两台服务器的热备(或高可用)双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。而双主机方式即指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)

2.实现方式

a.基于共享存储(磁盘阵列)的方式

共享存储方式主要通过磁盘阵列提供切换后,对数据完整性和连续性的保障。用户数据一般会放在磁盘阵列上,当主机宕机后,备机继续从磁盘阵列上取得原有数据

                                  

b.全冗余方式

全冗余方式就是双机双存储

                                  

MySQL热备原理

双机热备就是使用MySQL提供的一种主从备份机制实现。所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务。这个复制的过程实质上是从服务器复制主服务器上MySQL的二进制日志(bin-log),并在从服务器上还原主服务器上的sql语句操作,这样只要两个数据库的初态是一样的,就能一直同步。

双机热备的实现需要MySQL的版本高于3.2.。另外由于这种备份是基于MySQL二进制日志实现,所以主从服务器上的MySQL版本最好能够一样,至少从服务器的MySQL版本不可以低于主服务器的数据库版本。因为MySQL不同的版本之间二进制日志可能不一样。

当然这种复制和重复都是MySQL自动实现的,我们只需要配置即可。

如下图所示:

                               

 

上图中有两个服务器, 演示了从一个主服务器(master) 把数据同步到从服务器(slave)的过程。

这是一个主-从复制的例子。 主-主互相复制只是把上面的例子反过来再做一遍。 所以我们以这个例子介绍原理。

对于一个mysql服务器, 一般有两个线程来负责复制和被复制。当开启复制之后。作为主服务器Master会把自己的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log, 然后在自己那里再执行一遍。)

作为从服务器Slave, 会用master上的账号登陆到 master上, 读取master的Binarylog,  写入到自己的中继日志 Relaylog, 然后自己的sql线程会负责读取这个中继日志,并执行一遍。  到这里主服务器上的更改就同步到从服务器上了。

配置步骤

第一步环境搭建:

现在有两个服务器,分别为A(主服务器),B(从服务器)。

  • A和B分别分配静态IP地址。我采用的是dhcp自动分配方式,A的ip地址为192.168.119.128,B的ip地址为192.168.119.130。
  • 保证A和B能够ping通,在B上输入命令如果出现以下结果:则说明A和B是能够通信的,如果不能,则查看是否A和B是否在同一个局域网中,或者关闭linux系统的防火墙 命令为 : /etc/init.d/iptables stop。
  • 分别为A和B安装mysql,client和server都需要安装。

第二步 A(主服务器配置)配置

1.

进入mysql数据库。输入命令:然后根据提示输入密码。在A上面创建专门用于备份的用户。命令如下:

grant replication slave on *.* to 'username'@'192.168.119.130' identified by '123456';

其中username是用户名,192.168.119.130是B(从服务器)的ip地址,密码为’123456’;这个等会在B上要用;

2.

创建数据库。

我这里用的sql语句创建的 create database test;(具体实施的时候应该是直接导入数据库,数据库已经提前创建好了)。这个数据库是来测试的。

3.

开启A的binarylog

这里输入命令:,就会打开MySQL的配置文件。修改MySQL绑定的IP地址:

这个是MySQL默认的ip,这里修改成A的ip:192.168.119.128.

继续修改如下配置

  • server-id =1 表示A的id(之前是被#注释掉的)
  • Long_bin = mysql-bin.log 表示log日志,如果采用mysql之前默认的/var/log/mysql/mysql-bin.log会导致MySQL服务无法启动。
  • binlog-do-db =test用来表示,只把哪些数据库的改动记录到binary日志中。 可以写上关注test数据库(这句话最关键)。
  • auto-increment-increment = 10和auto-increment-offset = 1用于在 双主(多主循环)互相备份。 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。  解决这个问题的办法就是让每个数据库的自增主键不连续。  上图说是, 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10.   而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。
  • 所有设置完成之后,退出文本编辑,按ESC,再按shift+;键,然后输入wq,就能保存当前设置,并退出。
  • 最后:重启MySQL服务,输入命令: service mysql restart。

4.

获取主服务器状态和同步状态。

注:因为数据库库是已经提前创建好的,所以以下步骤可以省略

现在我有数据库在A上面;

输入命令 use test 进入到test数据库,

然后锁定test,输入命令:FLUSH TABLES WITH READ LOCK;

然后导出数据库。

注:以下这一步骤需要进行!

查看A服务器的binary日志位置:

输入命令:show master status\G

记住File和Position,接下来再设置从服务器的时候需要用到。

主服务器的全部做完,可以解除锁定:

 

 

第三步:B(从服务器)配置

1.

设置从服务器的文件配置。

输入命令:打开MySQL的配置文件。修改文件如下:

server-id 必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环。

replicate-do-db 可以指定需要复制的数据库, 这里是test

relay_log 中继日志的名字。 log-slave-updates 意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。  就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。

修改完成之后,保存,重启MySQL;

2.

导入数据库,开始同步。

实施人员将数据库导入到B中的MySQL。这里我就不详细了。

我导入的是test数据库。

进入MySQL,输入命令:mysql -uroot -p 输入密码后进入。

mysql中输入:

CHANGE MASTER TO

       MASTER_HOST='192.168.119.128',

       MASTER_USER='username',

       MASTER_PASSWORD='123456',

       MASTER_LOG_FILE='mysql-bin.000003',

       MASTER_LOG_POS=510;

执行此语句,会出现

重启MySQL, 然后查看slave线程开启了没。

 

 

注意图中的红框, 两个都是Yes, 说明开启成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果其中一个是No, 那就说明不成功。需要查看mysql的错误日志。。有时候密码填错了, 有时候防火墙的3306没有打开。ip地址不对,等等。 都会导致失败。

到这里就全部配置完成了。

 

 

第四步 测试

 

1.A服务器的test的数据库中的mytable表(这个是用来测试的,其他数据库不一定有),添加一条数据。

 

A:未添加前的状态:

 

 

 

B的数据库

 

现在A和B的初态是一样的。现在我往A里面插入一条数据,输入命令:

insert into mytable values(‘test’,’f’,’1900-01-01’,’china’);

插入成功,现在A的状态更新为:

 

 与此同时B的数据库也更新为:

这个动作是同时的,几乎没有什么间隔。

好了,MySQL的双机热备数据同步就完成了。

 

个人博客网站 http://www.janti.cn
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
377 7
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
334 11
|
8月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
7月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
749 30
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
453 11
|
7月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1737 26
|
8月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
|
7月前
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
455 0
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
959 2

推荐镜像

更多