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

Mysql备份和AB复制的过程和步骤

发布时间:2016-08-11 12:29:55 所属栏目:MySql教程 来源:站长网
导读:Mysql 的完全备份有2种方式 1 使用系统命令直接将Mysql数据拷贝进行备份 例如 /etc/init.d/mysqld stop tar cvfz /var/lib/mysql/mydb_backup.tar.gz /tmp /etc
Mysql 的完全备份有2种方式

1 使用系统命令直接将Mysql数据拷贝进行备份

例如

/etc/init.d/mysqld stop

tar cvfz /var/lib/mysql/mydb_backup.tar.gz /tmp

/etc/init.d/mysqld start

此种方法必须要先关闭Mysql服务,这也是一大弊端,而且此备份出的数据不支持不同版本的Mysql进行恢复!

所以此法生产环境中很少用

2 使用mysqldump 进行备份

mysqldump 备份的原理是,将对数据库中的内容修改所生成的sql 语句保存指定位置;恢复时只要将该sql 语句文件导出交给新mysql 重新执行一次,实现恢复数据。

  例如

mysqldump -u root -p 123 > /var/test/123.sql

如果需要备份mysql 中的所有数据库,使用 -all-databases

mysqldump -u root -p --all-databases > /var/test/123.sql

恢复数据的命令如下:

mysql -u root -p 123 < /var/test/123.sql

mysql 的增量备份

增量备份是比完全备份作的频率高的多的操作;

mysql 的增量备份使用的方法的是用过mysql 的二进制日志来实现的;

mysql 的二进制日志中保存了对mysql 的所有操作sql 语句;

mysql 的二进制日志功能默认是关闭着的,我们需要自己手动去打开;

vim /etc/my.cnf 编辑添加

log-bin=noah(台头) 如果不加台头则默认为binlog;

重新启动服务后就会在/var/lib/mysql 中发现binlog 二进制文件;

二进制的日志文件我们需要使用命令mysqlbinlog 来查看;

那么,如何使用二进制文件来恢复数据呢;

1 使用时间来恢复

例如

mysqlbinlog --start-date="2009-05-20 10:51:01" --stop-date="2009-05-20 11:52:12" /var/lib/mysql/binlog.000001 | mysql -uroot -p123456

将这2段时间之间对mysql 进行操作的sql 语句输出给mysql 执行;这样就恢复这段时间内的数据;

但是这里的时间只精确到秒,那么在同一秒内有许多sql 语句的话,就会出现问题了;因此,我们引入了更加精确的恢复的方法,如下;

2 使用位置号来恢复

例如

mysqlbinlog --start-position="457" --stop-position="1009" /var/lib/mysql/binlog.000001 | mysql -uroot -p123456

在mysql 二进制日志中会设定一个唯一的log_pos;我们就利用这个唯一的position 进行恢复数据的操作;这种方法不会忽略掉任何的数据;

(编辑:宁德站长网)

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

    热点阅读