1 全备
1.1 概念
备份整个数据库的数据
1.2 实现方式
mysqldump
#备份单个数据库中全部表或者部分表的数据
mysqldump [OPTIONS] database [tables]
#备份一个或者多个库的数据
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
#备份所有库的数据
mysqldump [OPTIONS] --all-databases [OPTIONS]
[options]
-A, --all-databases #备份所有数据库
例如:
mysqldump -uroot -proop -A > mysql_bak.sql
mysqldump -uroot -proop --all-databases > mysql_bak.sql
--compact #使输出的内容更简洁
例如:
mysqldump -uroot -proop -B mysql test > mysql_bak.sql
-B, --databases #备份指定的数据库,并使用use db_name和create databse db_name
--default-character-set=name #设置字符集
#查看mysql的指定参数值
/usr/libexec/mysqld --verbose --help | grep 'default-character-set=name' | grep -v name
-u #用户名
-p, --password[=name] #密码
-P, --port=# #远程连接使用,端口 -h ip
-h, --host=name #ip
-S, --socket=name #多实例时实用指定Socket文件
--single-transaction #InnoDB备份表时,保证数据的一致性
1.3 查看库的引擎
show ENGINES;
1.4 MyISAM引擎(默认引擎)备份
表级锁,在备份时防止数据写入而导致数据不一致
因此实用--lock-all-tables加上读锁
例如:
mysqldump -A -F -B --lock-all-tables |gzip >/data/backup/$(data +%F).tar.gz
1.5 InnoDB引擎(常用引擎)备份
行锁,备份时不需要对数据库加锁
原理:
设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据
例如:
mysqldump -A -F -B --single-transaction |gzip >/data/backup/$(data +%F).tar.gz
2 增备
2.1 概念
备份从上次全备开始到现在增加的数据
2.2 实现方式
拷贝新增的binlog日志
3 逻辑备份
使用mysqldump备份,将数据转换为SQL存储
4 物理备份
拷贝data目录下的数据文件