了解备份方式
热备份:读写不受影响(mysqldump-->innodb)
温备份:仅可以执行读操作(mysqldump-->myisam)
冷备份:离线备份,读写都不可用
逻辑备份:将数据导出文本文件中(mysqldump)
物理备份:将数据文件拷贝(xtrabackup、mysqlhotcopy)
完整备份:备份所有数据
增量备份:仅备份上次完整备份或增量备份以来变化的数据
差异备份:仅备份上次完整备份以来变化的数据
环境准备:
建立目录用于存放二进制文件位置
mkdir /home/mybinlog
chown mysql:mysql /home/mybinlog
#编辑配置文件my.cnf
vim /etc/my.cnf
log-bin=/home/mybinlog/mysql-bin ##二进制日志目录及文件名前缀
binlog_format=mixed #二进制日志格式
log-error = /data/3309/mysql-err #错误日志位置
innodb_file_per_table = 1 #为每一个新数据表创建一个表空间文件
sync_binlog = 1 #写二进制日志的时候,同步到磁盘上面
innodb_file_per_table = 1 ##启用InnoDB表每表一文件,默认所有库使用一个表空间
show master status 时没有数据显示时在my.cnf加log-bin=mysql-bin
cp /data/3309/my.cnf /opt/backup/ #备份配置文件
然后启动mysql
备份
创建用于存放备份的目录
Mkdir /home/mysqlbackup \\用于存放备份文件
Mkdir /home/mysqlbackup/mylogbin\\用于存放备份的二进制日志
mkdir /home/mysqlbackup/mylogstatus \\用于存放二进制日志起始位置
chown -R mysql:mysql /home/mysqlbackup
一、使用mysqldump实现完全热备+增量备份。
我们要使用mysqldump工具对innodb存储引擎的数据库做完全热备,并且滚动二进制日志,为了下次恢复或者增量方便,还要记录一下当前二进制日志文件位置。
第一步:全备
[root@localhost bin]# ./mysqldump -u root -p --master-data --all-databases --routines --events >/home/mysqlbackup/mydb_all_`date +%F`.sql;
第二步:生成全备滚动日志记录二进制日志文件与起始位置
[root@localhost bin]# ./mysql -u root -p -e 'show master status' > /home/mysqlbackup/mylogstastus/`date +%F-%H`.txt;
第三步:查看全备滚动日志的起始位置
[root@localhost bin]# cat /home/mysqlbackup/mylogstastus/2018-04-17-09.txt
第四步:查看全备的终点位置
MariaDB [(none)]> show master status;(进入MySQL下面)
第五步:新增数据,然后再次show master status;
第六步:查看日志存放再哪个目录下
第七步:进行增备
[root@localhostbin]# ./mysqlbinlog--start-position=801154 --stop-position=849789 > /opt/lampp/var/mysql/mysql-bin.000003 >/home/mysqlbackup/incrmental-`date +%F-%H`.sql;
第八步:记录当前show master status 状态
[root@localhost bin]# ./mysql -u root -p -e 'show master status' > /home/mysqlbackup/mylogstastus/`date +%F-%H`.txt;
第九步:删除数据库(为备份做准备)
MariaDB [test]> drop database test;
第十步:先全备
[root@localhost bin]# ./mysql -u root -p < /home/mysqlbackup/mydb_all_2018-04-17-13.sql
其次再增备
[root@localhost bin]# ./mysql -uroot -p </home/mysqlbackup/incremental-2018-04-17-13.sql