MySQL数据库的主从复制原理及其意义
  TEZNKK3IfmPf 2023年11月14日 51 0

                 MySQL数据库的主从复制原理及其意义

首先,我们要明确的一点是什么是数据库的主从复制?简单的来说,数据库由于自身的特点(脆弱性,不易维护),例如,突发事件停电,人为因素误删库,数据流量过大造成硬盘空间过满,sql语句设计不合理,等等因素,造成数据的丢失或者损坏以及无法及时存入数据,那么主从复制可能解决这些问题。

主从复制,指的是建立一个和主数据库环境一模一样的从数据库环境,也就是说,主从是单独的,独立的两套MySQL数据库,版本一致,其中运行MySQL的系统也最好尽量的一致,MySQL内的库也完全一致,通过binlog日志系统,同步数据库的数据,并在预先备份过binlog日志的时候,如果出现了问题,通过binlog日志来恢复数据库。

能够实现主从复制,完全是由于binlog日志的作用,那么什么是binlog?

binlog(像不像广东人经常说的冰狗??),字面意思为程序的日志,既然是MySQL的日志,自然指的是MySQL运行时所产生的日志喽。

  1、MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

    a、DDL

      ----Data Definition Language 数据库定义语言 

      主要的命令有create、alter、drop等,ddl主要是用在定义或改变表(table)的结构,数据类型,表之间的连接和约束等初始工作上,他们大多在建表时候使用。

    b、DML

      ----Data Manipulation Language 数据操纵语言

      主要命令是slect,update,insert,delete,就像它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

              c. DCL

               ----Data Control Language 数据库控制语言如grant,deny,revoke等,只有管理员才有这样的权限。你要普通用户提权过了,那么,当我没说。和主从复制没多大关系,也就不讲解了。

结论:binlog日志记录了数据库的所有操作,除了权限类的和查询类的操作。那么,binlog在哪里?首先,默认也就是全新安装后的MySQL是没有开启binlog的,如果开启了binlog,那么保存日志的文件在MySQL的数据库目录下,也就是和其内建库,比如mysql,information_schema这样的数据库的上面一层目录,文件名开始为master,结尾以00000+数字结尾,以及以index结尾的文件。我这么说的是Linux的目录下。通常,MySQL也是装在Linux下。

MySQL数据库的主从复制原理及其意义

master打头的两个文件即为binlog的文件,00000*结尾的文件是二进制文件,无法通过文本编辑器 比如vim打开,或者cat命令查看,以index结尾的文件可以使用文本编辑器打开,也可以使用cat命令查看。index结尾的文件记录了所有可用的二进制文件的索引,00000*记录的是数据库的所有ddl和dml语句事件,除了select查询事件。

由于我在MySQL的配置文件,my.cnf文件内做了相应配置,并重启了mysql服务,才会出现这两个文件哦。

MySQL数据库的主从复制原理及其意义

 如何开启binlog日志? 

首先,我们需要查看binlog日志的状态,是否开启?

MySQL数据库的主从复制原理及其意义

这样的就是开启的,log_bin 的值为on表示开启,如果为off,需要打开my.cnf文件,将该日志功能打开,由于是服务日志更改,因此必须重启服务。         

MySQL数据库的主从复制原理及其意义 

红色箭头表示要添加的两行。椭圆表示打开的哪个文件以及添加的位置。

彻底的总结:

MySQL数据库的主从复制是通过开启binlog日志功能,通过日志内记录的sql语句,将主数据库的sql语句传送到从数据库并执行,从而达到主从复制同步数据的目的。也就是说,第一关键是binlog日志的生成,第二关键那么就是从数据库获取到日志内的sql语句,并执行。

主从复制的意义在于,不将鸡蛋装在一个篮子内,并且,由于binlog的特性(保存了sql事件),我们可以实现一定程度的备份。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   25   0   0 mysql
  TEZNKK3IfmPf   2024年05月17日   53   0   0 sqlmysql
  TEZNKK3IfmPf   2024年05月31日   31   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月17日   49   0   0 查询mysql索引
  TEZNKK3IfmPf   2024年05月17日   50   0   0 jsonmysql
  TEZNKK3IfmPf   2024年05月17日   49   0   0 mysqlphp
  TEZNKK3IfmPf   2024年05月31日   27   0   0 数据库mysql
TEZNKK3IfmPf