redolog和binlog
- redolog是innodb自带的,binlog是mysql自带的
- redolog就是类似于缓冲区,将事务的信息写入这个缓冲区,有了redolog数据库就可以崩溃重启数据不丢,innodb_flush_log_at_trx_commit设置为1可以每次都把事务持久化到磁盘,innodb_log_buffer_size是缓存区大小
- binlog就是记录了逻辑修改的日志,sync_binlog设置为1可以保证binlog不丢
- 定时通过mysqldump备份数据库,根据binlog时间段恢复数据
mysqldump
- mysqldump -u root -p --databases xx xxx xx > xx.sql 保存多个数据库
- mysqldump -u root -p aaa bbb > xx.sql aaa库的bbb表
- mysqldump -u root -p --no-data 只要表结构
binlog
- show variables like ‘%bin%’ 查看binlog是否开启
- 没有打开的话在my.cnf的mysqld下边加上log_bin=mysql-bin
- show binlog events in ‘mysql-bin.00000x’; 查看binlog
- mysqlbinlog binlog全路径 -d 数据库名 --skip-gtids --start-position=序号 --stop-position=序号 > xx.sql binlog转换成对应的sql
- –start-datetime,–start-position和–stop-position都是可选参数
- binlog分为3种记录模式,statement,row和 mixed
- statement:记录原生sql,有可能主从执行会出现不一致,不推荐
- row:记录信息,执行的sql数据量很大会很占空间
- mixed:上边两个混合,如果mysql认为不会出现不一致则使用statement记录,数据量太大使用row记录
undolog
|