加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2022-03-02 21:45:43 所属栏目:编程 来源:互联网
导读:数据库实时备份的需求很常见,MySQL本身提供了 Replication 机制,摘译官方介绍如下: MySQL Replication 可以将一个主数据库中的数据同步到一个或多个从数据库中。并且这个同步过程默认以异步方式工作,不需要保持主从数据库的实时连接(即允许连接中断)。
      数据库实时备份的需求很常见,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 Log
log-bin=mysql-bin
# 设置全局ID
server-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;
手动数据同步相关操作略...
 
START SLAVE;
 
查看同步状态:
 
SHOW SLAVE STATUS;
 
Master的binlog_format 参数
 
binlog_format用于配置Binary Log的格式,支持如下三种类型:
 
Row
 
按数据行的变化进行记录,该模式与SQL语句、存储过程、函数、触发器等无关,它只关心每一行的数据是否发生变化,如变化则记录,因此Row模式是准确度最高的。但它的缺点是某些情况下会产生大量内容而导致效率下降,比如表结构发生变更时。
 
Statement
 
按SQL语句进行记录,很明显这个解决了Row模式的短板,但问题是准确度不够高,因为SQL语句可以非常复杂并且容易出现意外情况。
 
Mixed
 
Row与Statement混合模式,由MySQL自动决定什么时候使用Row,什么时候使用Statement,这也是默认模式。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读