跳转至

15. 备份恢复

1. 备份类型

# 热备:在数据库正常业务时备份数据,并且能够一致性恢复。
# 冷备:关闭数据库业务,数据库在没有任何变更的情况下备份。
# 温备:锁表备份,备份时只能查询不能修改。

2. 备份方式

# 逻辑备份:基于SQL语句的备份
    mysqldump
    mysqlbinlog
# 物理备份:基于磁盘文件的备份
    cp
    xtrabackup

3. 备份策略

# 全备:全库备份
# 增量:备份变化的数据
# 逻辑备份:mysqldump+mysqlbinlog
# 物理备份:xtrabackup
# 备份周期:根据数据量设计备份周期

4. mysqldump

4.1 通用参数

-u -p -h -P -S

4.2 备份专用参数

1.-A 全备

mkdir /backup
mysqldump -uroot -p -A >/backup/full.sql

注意:生产环境如果迁移的话,只迁移生产库,不迁移系统库!!!因为每个版本的系统库不一定相同

2.-B 单库多库备份

mysqldump -uroot -p -B oldboy world >/backup/bak.sql

3.单库单表多表备份(注意:恢复时,库必须事先存在,且use到库下!)

mysqldump -uroot -p world city >/backup/city.sql
mysqldump -uroot -p world city country >/backup/ci_co.sql

4.特殊参数1(必加!!!)

-R          #备份存储过程及函数
--triggers   #备份触发器
mysqldump -uroot -p -A -R --triggers >/backup/full.sql

5.特殊参数2

-F                  #在备份开始时,刷新一个新的binlog日志(产生大量二进制日志文件,有几个库就产生几个,少用)
--master-data=2       #以注释的形式,保存备份开始时间点的binlog状态信息(必加参数!!)
--single-transaction  #对innodb可以不锁表热备,对非innodb可以实现自动锁表功能
mysqldump -uroot -p -A -R --triggers -F >/backup/full.sql
mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction >/backup/full.sql

4.3 mysqldump备份策略

1.比较适合100G以下的数据量
2.原生态不支持增量备份
3.如果要实现增量,可以配合binlog实现
4.如果对于大数据量的数据库备份,可以从架构上拆分,分别备份

4.4 mysqldump优点

1.可读性强
2.文本形式备份,压缩比比较高

5. 基本完善的配置文件

vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/application/mysql/tmp/mysql.sock
port=3306
log_error=/var/log/mysql.log
server_id=6
skip_name_resolve
secure-file-priv=/tmp
innodb_data_file_path=ibdata1:76M;ibdata2:50M:autoextend    #根据实际大小填写
log_bin=/data/mysql/mysql-bin
binlog_format=row
slow_query_log=1
slow_query_log_file=/data/mysql/slow.log
long_query_time=0.01
log_queries_not_using_indexes
autocommit=0

[mysql]
socket=/application/mysql/tmp/mysql.sock
prompt=\\ccpsql [\\d]>      # 自定义客户端命令行左侧的提示符

6. 基本完善的mysqldump备份语句

6.1 全库备份

mysqldump -uroot -p  -R --triggers --master-data=2 --single-transaction -A >/backup/full.sql

6.2 多库备份

mysqldump -uroot -p  -R --triggers --master-data=2 --single-transaction -B world oldboy>/backup/bak.sql

6.3 多表备份

mysqldump -uroot -p  -R --triggers --master-data=2 --single-transaction world city country>/backup/ci_co.sql

最后更新: 2022-02-20 08:44:07