首页 > 数据库 > MySQL > 正文

MySQL数据库的实时备份知识点详解

2024-07-24 12:49:59
字体:
来源:转载
供稿:网友

前言

数据库实时备份的需求很常见,MySQL本身提供了 Replication 机制,摘译官方介绍如下:

MySQL Replication 可以将一个主数据库中的数据同步到一个或多个从数据库中。并且这个同步过程默认以异步方式工作,不需要保持主从数据库的实时连接(即允许连接中断)。同时允许自定义配置需同步的数据库及数据表。

MySQL Replication 的优点及应用场景如下:

1、通过 MySQL Replication 实现负载均衡与读写分离(主数据库仅更新,从数据库仅读取),提升数据库性能。

2、通过 MySQL Replication 实现数据的实时备份,保证数据安全。

3、通过 MySQL Replication 实现数据的离线分析(主数据库生成数据,从数据库分析计算不影响主数据库性能)。

4、数据分发。

MySQL Replication完整的官方文档请参阅:https://dev.mysql.com/doc/refman/5.7/en/replication.html

工作原理

1111

1、Master中的所有数据库变更事件写入Binary Log文件

2、当在Slave中执行“SLAVE START”命令时,开启Slave I/O Thread,并连接Master

3、Master侦测到Slave I/O Thread的连接,开启Log Jump Thread进行响应

4、Master Binary Log经Master Log Jump Thread和Slave I/O Thread传输至Slave Relay Log

5、Slave SQL Thread将Relay Log还原至数据,同步完成

注:可使用“SHOW PROCESSLIST”命令在Master和Slave中查看对应线程的运行情况

配置Master

开启Binary Log并设置ServerID,ServerID必须唯一,取值范围1至232-1

[mysqld]# 开启Binary Loglog-bin=mysql-bin# 设置全局IDserver-id=1# 指定需同步的数据库(因为数据库名称可能包含逗号,因此多个数据库必须重复配置多次而不能以逗号分隔)binlog-do-db=database_name# 指定禁止同步的数据库binlog-ignore-db=database_name# 指定Binary Log格式binlog_format=MIXED

创建同步帐号

因为每个Slave均需要使用帐号密码连接至主数据库,所以在主数据库上必须提供帐号。建议使用一个独立帐号,仅授权数据同步权限。

CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

获取Binary Log信息

Slave启动I/O Thread时需要传入Binary Log部分信息,因此需要获取一下Binary Log信息:

SHOW MASTER STATUS;

使用“SHOW MASTER STATUS”命令获取Binary Log信息,并记录File和Position字段值。

同步前保证Master与Slave的数据一致

在Slave启动I/O Thread前,需确保Master与Slave的数据一致,因此先对Master进行锁定(防止数据变更),手动同步并确保数据一致后再解锁。

FLUSH TABLES WITH READ LOCK;

手动数据同步相关操作略...

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表