Mysql备份和AB复制的过程和步骤
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 进行恢复数据的操作;这种方法不会忽略掉任何的数据; (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |