• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
阿德莱德探路者 显示全部楼层 发表于 2021-10-26 13:38:26 |阅读模式 打印 上一主题 下一主题
前言
数据库实时备份的需求很常见,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
  1. [mysqld]
  2. # 开启Binary Log
  3. log-bin=mysql-bin
  4. # 设置全局ID
  5. server-id=1
  6. # 指定需同步的数据库(因为数据库名称可能包含逗号,因此多个数据库必须重复配置多次而不能以逗号分隔)
  7. binlog-do-db=database_name
  8. # 指定禁止同步的数据库
  9. binlog-ignore-db=database_name
  10. # 指定Binary Log格式
  11. binlog_format=MIXED
复制代码
创建同步帐号
因为每个Slave均需要利用帐号密码连接至主数据库,所以在主数据库上必须提供帐号。发起利用一个独立帐号,仅授权数据同步权限。
  1. CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
  2. GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
复制代码
获取Binary Log信息
Slave启动I/O Thread时需要传入Binary Log部分信息,因此需要获取一下Binary Log信息:
  1. SHOW MASTER STATUS;
复制代码
利用“SHOW MASTER STATUS”下令获取Binary Log信息,并记录File和Position字段值。
同步前包管Master与Slave的数据一致
在Slave启动I/O Thread前,需确保Master与Slave的数据一致,因此先对Master进行锁定(防止数据变更),手动同步并确保数据一致后再解锁。
  1. FLUSH TABLES WITH READ LOCK;
复制代码
手动数据同步相关操纵略...
  1. UNLOCK TABLES;
复制代码
设置Slave
设置ServerID,可不必开启BinLog:
  1. [mysqld]
  2. # 设置全局ID
  3. server-id=2
  4. # 指定同步的数据库
  5. replicate-do-db=database_name
  6. # 指定禁止同步的数据库
  7. replicate_ignore_db=database_name
复制代码
设置Master信息,实行如下下令:
  1. mysql> CHANGE MASTER TO
  2.   ->   MASTER_HOST='master_host_name',
  3.   ->   MASTER_PORT='master_host_port',
  4.   ->   MASTER_USER='replication_user_name',
  5.   ->   MASTER_PASSWORD='replication_password',
  6.   ->   MASTER_LOG_FILE='recorded_log_file_name',
  7.   ->   MASTER_LOG_POS=recorded_log_position;
复制代码
启动I/O Thread
  1. START SLAVE;
复制代码
查看同步状态:
  1. SHOW SLAVE STATUS;
复制代码
Master的binlog_format 参数
binlog_format用于设置Binary Log的格式,支持如下三种范例:
Row
按数据行的变革进行记录,该模式与SQL语句、存储过程、函数、触发器等无关,它只关心每一行的数据是否发生变革,如变革则记录,因此Row模式是准确度最高的。但它的缺点是某些环境下会产生大量内容而导致服从下降,好比表布局发生变更时。
Statement
按SQL语句进行记录,很明显这个办理了Row模式的短板,但题目是准确度不够高,因为SQL语句可以非常复杂而且容易出现不测环境。
Mixed
Row与Statement混合模式,由MySQL自动决定什么时间利用Row,什么时间利用Statement,这也是默认模式。
replicate-do-db留意事项
当在Slave中利用replicate-do-db和replicate-ignore-db设置项时,需特别留意,跨数据库的SQL语句将不会被同步,如:
  1. replicate-do-db=a
  2. use b;
  3. update a.some_table set some_field = 'some value';
复制代码
办理方案是利用replicate_wild_do_table和replicate_wild_ignore_table,如:
  1. replicate_wild_do_table=database_name.%
  2. replicate_wild_ignore_table=database_name.%
复制代码

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作