mysql备份、复制

MySQL整体来看,其实就有两块:一块是Server层,它主要做的是MySQL功能层面的事情;还有一块是引擎层,负责存储相关的具体事宜。InnoDB引擎特有的日志是redo log,而Server层的日志称为binlogbinlog记录了对MySQL数据库执行更改的所有操作,binlog文件写到一定大小后会切换到下一个(但一个事务的操作肯定在一个文件中,即大事务引发大文件)。

其大体作用:

恢复:某些数据的恢复需要二进制日志。
复制(replication):通过复制和执行二进制日志使一台远程的MySQL数据库(一般为slavestandby)与一台MySQL数据库(一般为masterprimary)进行同步。(阿里cannel开源框架)
审计(audit):用户可以通过二进制日志中的信息进行审计,判断是否有对数据库进行注入的攻击

备份

将指定数据库备份到某dump文件(转储文件)中:

1
mysqldump -uroot -p123 test > test.dump

从备份文件恢复数据库:

1
mysql -uroot -p123 test < test.dump

复制

mysql支持两种复制方式:基于行的复制和基于语句的复制。基于语句的复制(也称为逻辑复制)。这两种方式都是通过在主库上记录二进制日志、在备库重放日志的方式来实现异步的数据复制。
这意味着,在同一时间点备库上的数据可能与主库存在不一致,并且无法保证主备之间的廷迟。一些大的语句可能导致备库产生几称、几分钟甚至几个小时的廷迟。
主库和备库使用不同的存储引擎(不推荐)

基于行的复制不会受这个问题的影响。因为它记录的是数据的更改,而不是SQL语句。如果一条语句改变了一个myisam表和一个innodb表的某些行,然后主库上发生了一次死锁,innodb表的更新会被回滚,而myisam表的更新仍会被记录到日志中并在备库重放。
当使用基于语句的复制方式时,如果通过不确定的方式更改数据可能会导致主备不一致。

根据备份的方法不同可以将备份分为

热备、冷备、温备。
热备是指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响。
冷备非常简单,只需要备份mysql数据库的frm文件,共享表空间文件,独立表空间文件,重做日志文件,配置文件。


A cada cerdo le llega su San Martín.