MySQL主备操作以及原理详解

yizhihongxing

MySQL主备操作以及原理详解

什么是MySQL主备

MySQL主备是一种高可用性的架构,通过在主库和多个备库之间进行数据同步,确保在主库发生故障时备库可以立刻接管服务,从而降低系统出现宕机的可能性,保证系统的稳定性和可靠性。

MySQL主备原理

MySQL主从备份原理实现了主从复制,即主库将数据更新同步到备库。MySQL主备的基本原理如下:

  1. 主库将写操作记录在二进制日志(Binary Log)中,并通过网络传输到备库;
  2. 备库将收到的二进制日志记录到本地的中继日志(Relay Log)中,并依次执行;

因此,当主库发生故障或数据丢失时,可以使用备库中的数据快速恢复业务。

MySQL主备操作

下面是MySQL主备操作的具体步骤:

1. 准备主库

首先,在主库中配置主从同步的用户名和密码,并开启二进制日志。

配置文件 my.cnf 内容示例:

# 配置主从同步的用户名和密码
server-id = 1
log-bin = /var/lib/mysql/mysql-bin.log
binlog_do_db = dbtest
binlog_ignore_db = mysql
relay-log = /var/lib/mysql/relay-bin
expire_logs_days = 10
max_binlog_size = 100M

2. 准备备库

在备库上配置同步用户名和密码,并指定主库的地址。

配置文件 my.cnf 内容示例:

server-id = 2

设置主库地址:

CHANGE MASTER TO
MASTER_HOST='192.168.0.198',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_password',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000018',
MASTER_LOG_POS=251;

3. 启动主备同步

在备库上使用以下命令启动主备同步:

START SLAVE;

4. 监测主备同步状态

使用以下命令查看主备同步状态:

SHOW SLAVE STATUS\G

在状态结果中,如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则代表主备同步正常。

MySQL主备示例

以下示例演示了MySQL主备配置的过程:

示例1:主库

在主库上执行以下SQL命令创建一个名为 dbtest 的数据库,并向表中插入10条数据:

CREATE DATABASE dbtest;
USE dbtest;
CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
);
INSERT INTO users (name) VALUES ('user1'),('user2'),('user3'),('user4'),('user5'),('user6'),('user7'),('user8'),('user9'),('user10');

在主库的 my.cnf 文件中设置如下参数:

[mysqld]
#开启二进制日志
log-bin=mysql-bin
#从库IP
bind-address=192.168.0.198

示例2:备库

在备库上执行以下SQL命令:

CREATE DATABASE `dbtest` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `dbtest`;
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

在备库的 my.cnf 文件中设置如下参数:

[mysqld]
#设置server-id
server-id = 2
#设置从库ip
bind-address = 192.168.0.199

#主库数据复制配置
#注意:这里的master_log_file和master_log_pos是从SHOW MASTER STATUS出来的结果,请各位按自己的结果来设置 而不是照抄 ...
replicate-do-db = dbtest
master-host = 192.168.0.198
master-user = root
master-password = root
master-port = 3306
relay-log = dbtest-relay-bin
log-slave-updates = true
slave-skip-errors = all

重启MySQL服务,使用以下命令启动主备同步:

START SLAVE;

使用以下命令查看主备同步状态:

SHOW SLAVE STATUS\G;

如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则代表主备同步正常。可以在主库中修改数据并验证备库是否同步成功。

总结

MySQL主备是一种非常常用的高可用性架构,可以提供数据失效保护和快速恢复的功能。在实际应用开发过程中,可以根据自己的业务场景和需求来合理配置和使用MySQL主备架构。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL主备操作以及原理详解 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • linux下mysql 5.x得到root密码后的另外一种利用方式

    Linux下MySQL 5.x得到root密码后的另外一种利用方式是通过 MySQL 运行时加载自己编写的共享对象(Libraries)并执行其中的函数,以获取root权限。这种攻击方式也称为”UAD”(User-Defined Functions in Aggregate Deterministic Mode)攻击。以下是具体攻击步骤: 前提条件- Lin…

    database 2023年5月22日
    00
  • redis 缓存验证码 步骤

    1. 安装redis https://redis.io/download 根据官网的教程就行操作: $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make可能会遇到的问题是你的服务器上没有装…

    Redis 2023年4月11日
    00
  • Linux学习基础教程

    “Linux学习基础教程”攻略 简介 Linux学习是现代IT人士必备技能之一,本教程将帮助读者快速入门Linux基础知识。此教程面向初学者,内容涵盖了Linux基础命令、文本编辑器和文件权限等核心知识点。 学习过程 1. 安装Linux 如果您尚未安装Linux,请首先选择一款适合您的发行版进行安装。常用的发行版有Ubuntu、Debian、CentOS等…

    database 2023年5月22日
    00
  • MySQL注释:单行注释和多行注释使用方法

    MySQL注释可以帮助我们在SQL语句中添加注释,提高代码的可读性和维护性。在MySQL中,注释分为单行注释和多行注释两种。 单行注释 单行注释以"#"或"–"开头,直到该行的结尾为止,该行后面的代码都不会被执行。 例如: — 这是单行注释 # 这也是单行注释 SELECT * FROM `users`; — 该…

    MySQL 2023年3月9日
    00
  • MySQL 元数据查看及实例代码

    MySQL 元数据是指用于描述数据库架构和数据对象的数据。在MySQL中,可以使用不同的方式来查看元数据信息,其中包括以下几种: SHOW语句 – SHOW语句可以用于显示MySQL服务器及其数据库、表和列的详细信息。一些常用的SHOW语句包括: SHOW DATABASES – 显示所有可用的数据库。 SHOW TABLES – 显示当前数据库中所有的表。…

    database 2023年5月21日
    00
  • .Net Core使用Redis

    一.准备     在.Net Core项目中使用StackExChange.Redis来使用Redis,这里通过Nuget去安装相关的包。安装完如下图。 二.配置   在appsettings.json中配置Redis的相关信息。一般需要配置连接地址、实例名、哪个DB、密码。 { “Logging”: { “LogLevel”: { “Default”: “…

    Redis 2023年4月12日
    00
  • Oracle和dBASE的区别

    Oracle和dBASE都是关系数据库管理系统(RDBMS),然而它们之间存在很多差异。本文将详细讲解Oracle和dBASE的区别,并且配有实例说明。 1. 定义 Oracle是一种企业级RDBMS,适用于大型企业的管理和数据处理。 dBASE是一种轻量级RDBMS,适用于个人和小型企业的管理和数据处理。 2. 数据库容量 Oracle可以处理非常大的数据…

    database 2023年3月27日
    00
  • Linux中更改转移mysql数据库目录的步骤

    要在Linux中更改转移MySQL数据库目录,需要完成以下步骤: 停止MySQL服务:可以使用如下命令停止MySQL服务: sudo systemctl stop mysql 备份MySQL数据库:移动MySQL目录可能会导致数据丢失,因此在移动之前最好对其进行备份。可以使用如下命令备份MySQL数据库: sudo mysqldump -u root -p …

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部