MySQL数据库双机热备的配置方法详解

2025-11-11 22:50

本文主要是介绍MySQL数据库双机热备的配置方法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M...

1. 环境准备

假设我们有两台服务器,分别作为主服务器(Master)和从服务器(Slave):

  • 主服务器(Master):192.168.1.100
  • 从服务器(Slave):192.168.1.101

1.1 安装MySQL

确保两台服务器上都安装了相同版本的MySQL。可以使用以下命令安装MySQL:

sudo apt-get update
sudo apt-get install mysql-server

1.2 配置MySQL

1.2.1 主服务器配置

编辑主服务器的MySQL配置文件​​/etc/mysql/my.cnf​​,添加或修改以下内容:

[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​log_bin​​:指定二进制日志文件的路径。
  • ​binlog_do_db​​:指定需要同步的数据库名称。

重启MySQL服务以使配置生效:

sudo systemctl restart mysql

1.2.2 从服务器配置

编辑从服务器的MySQL配置文件​​/etc/mysql/my.cnf​​,添加或修改以下内容:

[mysqld]
server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
log_bin=/var/log/mysql/mysql-bin.log
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​relay-log​​:指定中继日志文件的路径。
  • ​log_bin​​:指定二进制日志文件的路径。

重启MySQL服务以使配置生效:

sudo systemctl restart mysql

2. 配置主从复制

2.1 创建复制用户

在主服务器上创建一个用于复制的用户,并授予相应的权限:

CREATE USER 'repl'@China编程'192.168.1.101' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
FLUSH PRIVILEGES;

2.2 获取主服务器的二进制日志文件和位置

在主服务器上执行以下命令,获取当前二进制日志文件和位置:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录下​​File​​和​​Position​​的值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 12345    | your_database|                  |
+------------------+----------+--------------+------------------+

2.3 配置从服务器

在从服务器上执行以下命令,配置从服务器连接到主服务器:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;

2.4 启动从服务器的复制线程

在从服务器上启动复制线程:

START SLAVE;

2.5 检查复制状态

在从服务器上检查复制状态:

SHOW SLAVE STATUS\G

确保​​Slave_IO_Running​​和​​Slave_SQL_Running​​都为​​Yes​​,表示复制正常运行。

3. 测试主从复制

在主服务器上创建一个测试表并插入一些数据:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_table VALUES (1, 'Alice'), (2, 'Bob');

在从服务器上检查数据是否同步:

USE test_db;
SELECT * FROM test_table;

如果数据已经同步到从服务器,说明主从复制配置成功。

MySQL的双机热备(也称为主从复制)是一种常见的高可用性解决方案,通过在两台或多台服务器之间同步数据来提高系统的可靠性和性能。在主从复制中,一台服务器作为主服务器(Master),负责处理所有的写操作;其他服务器作为从服务器(Slave),负责读取数据并复制主服务器的数据变更。

下面是一个基本的MySQL主从复制配置步骤和示例代码:

1. 配置主服务器(Master)

首先,在主服务器上编辑MySQL配置文件​​my.cnf​​或​​my.ini​​,通常位于​​/etc/mysql/​​目录下,添加或修改以下内容:

[mysqld]
server-id=1
log-bin=myswww.chinasem.cnql-bin
binlog-format=row
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​log-bin​​:启用二进制日志,用于记录所有更改数据库的操作。
  • ​binlog-format​​:设置二进制日志格式为行格式,这有助于更精确地复制数据。

重启MySQL服务以应用更改:

sudo systemctl restart mysql

2. 创建复制用户

在主服务器上创建一个专门用于复制的用户,并赋予相应的权限:

CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
phpFLUSH PRIVILEGES;

3. 获取主服务器的状态信息

执行以下命令获取主服务器的当前二进制日志文件名和位置,这些信息将在配置从服务器时使用:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

输出示例:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      120 |              |                  |
+------------------+----------+--------------+------------------+

记住​​File​​和​​Position​​的值,因为它们将用于配置从服务器。

4. 解锁表

在获取了必要的信息后,解锁表:

UNLOCK TABLES;

5. 配置从服务器(Slave)

编辑从服务器上的MySQL配置文件​​my.cnf​​或​​my.ini​​,添加或修改以下内容:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
  • ​server-id​​:确保与主服务器不同。
  • ​relay-log​​:指定中继日志文件的名称。
  • ​log-slave-updates​​:允许从服务器将其接收到的更新记录到自己的二进制日志中。
  • ​read-only​​:使从服务器只读,防止意外的数据修改。

重启MySQL服务以应用更改:

sudo systemctl restart mysql

6. 配置从服务器连接主服务器

在从服务器上执行以下SQL命令,配置从服务器连接到主服务器:

CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='replication',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=120;
  • ​MASTER_HOST​​:主服务器的IP地址。
  • ​MASTER_USER​​:在主服务器上创建的复制用户的用户名。
  • ​MASTER_PASSChina编程WORD​​:复制用户的密码。
  • ​MASTER_LOG_FILE​​ 和 ​​MASTER_LOG_POS​​:从主服务器的​​SHOW MASTER STATUS;​​命令中获得的值。

7.China编程 启动从服务器的复制进程

在从服务器上启动复制进程:

START SLAVE;

检查复制状态:

SHOW SLAVE STATUS\G

确保​​Slave_IO_Running​​和​​Slave_SQL_Running​​都显示为​​Yes​​,表示复制正在正常运行。

8. 测试复制

在主服务器上创建一个测试数据库和表,并插入一些数据,然后检查从服务器上是否同步了这些更改。

-- 在主服务器上
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_table VALUES (1, 'Test');
 
-- 在从服务器上
USE test_db;
SELECT * FROM test_table;

如果从服务器上能看到相同的表和数据,说明主从复制配置成功。

MySQL数据库的双机热备(也称为主从复制)是一种常见的高可用性解决方案,它通过在两台或多台服务器之间同步数据来确保系统的可靠性和连续性。主从复制的基本原理是将一台MySQL服务器设置为主服务器(Master),另一台或多台设置为从服务器(Slave)。主服务器上的所有更改都会被记录到二进制日志(Binary Log)中,从服务器则会读取这些日志并应用相应的更改。

以下是配置MySQL主从复制的基本步骤,包括所需的SQL命令和配置文件修改:

1. 配置主服务器

修改主服务器的​​my.cnf​​配置文件

首先,需要编辑主服务器的MySQL配置文件(通常是​​/etc/mysql/my.cnf​​或​​/etc/my.cnf​​),添加或修改以下内容以启用二进制日志和唯一服务器ID:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=row
  • ​server-id​​:每个MySQL实例必须有一个唯一的标识符。
  • ​log-bin​​:指定二进制日志的前缀名。
  • ​binlog-format​​:设置二进制日志格式,推荐使用​​row​​模式。

重启MySQL服务

保存配置文件后,重启MySQL服务使配置生效:

sudo systemctl restart mysql

创建用于复制的用户

在主服务器上创建一个专门用于复制的MySQL用户,并赋予相应的权限:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  • ​CREATE USER​​:创建新用户。
  • ​GRANT REPLICATION SLAVE​​:授予该用户复制权限。
  • ​FLUSH PRIVILEGES​​:刷新权限表,使更改立即生效。

获取二进制日志位置

在开始复制之前,需要锁定主服务器的数据表,获取当前的二进制日志文件名和位置:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

2. 配置从服务器

修改从服务器的​​my.cnf​​配置文件

同样地,编辑从服务器的MySQL配置文件,添加或修改以下内容:

[mysqld]
server-id=2
  • ​server-id​​:设置与主服务器不同的唯一标识符。

重启MySQL服务

保存配置文件后,重启MySQL服务:

sudo systemctl restart mysql

配置从服务器连接主服务器

在从服务器上执行以下SQL命令,配置从服务器连接到主服务器,并指定二进制日志文件和位置:

CHANGE MASTER TO
MASTER_HOST='master_host_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
  • ​MASTER_HOST​​:主服务器的IP地址。
  • ​MASTER_USER​​、​​MASTER_PASSWORD​​:用于复制的用户名和密码。
  • ​MASTER_LOG_FILE​​、​​MASTER_LOG_POS​​:从哪个二进制日志文件和位置开始复制。

启动复制进程

启动从服务器的复制进程:

START SLAVE;

3. 验证复制状态

在从服务器上检查复制状态,确保一切正常:

SHOW SLAVE STATUS\G

重点查看以下几个字段:

  • ​Slave_IO_Running​​ 和 ​​Slave_SQL_Running​​ 应该都显示为 ​​Yes​​。
  • ​Last_Error​​ 和 ​​Last_IO_Error​​ 应该为空。

如果一切正常,那么主从复制就已经成功配置了。

注意事项

  • 确保主从服务器之间的网络连接畅通。
  • 定期检查复制状态,确保没有延迟或错误。
  • 考虑使用SSL加密复制通道,提高安全性。

以上就是MySQL数据库双机热备的配置方法详解的详细内容,更多关于MySQL双机热备配置的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于MySQL数据库双机热备的配置方法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156137

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符