备份:
- 物理备份:需要拷贝原库的配置文件(my.cnf),数据文件,日志,系统数据库(/var/lib/mysql/mysql)到新的目标环境,修改相应目录的权限,启动新数据库即可
- xtrabackup:可以实现mysql增量热备,通过全备的基础上去对改动的数据进行备份来提高备份效率
1. 进行全量备份
innobackupex --user=root --password /fullback
2.第一次增量
innobackupex --user=root --password --incremental-dir=/increment_1 /fullback
3.第二次增量
innobackupex --user=root --password --incremental-dir=/increment_2 /fullback
4.合并增量
xtrabackup --prepare --target-dir=/fullback --incremental-dir=/increment_1
xtrabackup --prepare --target-dir=/fullback --incremental-dir=/increment_2
- binlog恢复
binlog有三种format,statement,row,mixed
statement是对实际的sql语句进行记录
row是记录每行所做的修改,更新语句会写入日志
mixed是在statement的基础上看需要切换row格式
- 查询binlog格式
show variables like 'binlog_format'
2. 设置binlog格式(临时修改,重启后失效,要永久生效可以再my.cnf中设置并重启服务生效)
set @@global.binlog_format = row;
3. 启用二进制日志
在cnf配置文件中添加 [mysqld]
log_bin = /var/lib/mysql/binlog
server_id = 200
重启服务,systemctl restart mysqld
4.显示服务器所有的二进制日志
show master logs; 或者 show binary logs;
5.删除、刷新日志
reset master;删除所有
purge binary logs to <二进制日志名>删除这之前的日志,仅保留方括号
flush logs 重新启用新的binlog文件
6. 读取二进制日志,并恢复数据库
mysqlbinlog binlog.000001 > mysql_extra
cat mysql_extra | mysql -f -hlocalhost -uroot -p
补充:可以利用二进制日志,进行时间点和从偏移量中提取所需要的binlog进行恢复
mysqlbinlog xxx --start-datetime="stamp1" --stop-datetime="stamp2" >mysql_extra
mysqlbinlog xxx --start-position=100 --stop-position=179 > mysql_extra