运维开发(一)MySQL备份
本文主要介绍MySQL备份。
关键词:MySQL
逻辑备份
数据库对象级备份,备份内容是表、索引、存储过程等数据库对象,常见工具为MySQL mysqldump、Oracle exp/imp等。
逻辑备份备份速度较慢,恢复速度较慢,体积较大,需要数据库正常运行才可以执行逻辑备份。
优点是备份级别可控,即可以任意选择备份的数据库或者备份的表。
逻辑备份适用于任何存储引擎,一般使用mysqldump进行数据库的逻辑备份。
常见参数
参数名 | 缩写 | 含义 | 默认值 |
---|---|---|---|
--user | -u | 用户名 | |
--password | -p | 密码 | |
--host | -h | 数据库地址 | |
--port | -P | 数据库端口号 | |
--databases | -B | 指定要备份的数据库 | |
--all-databases | -A | 备份mysql服务器上所有的数据库 | |
--add-drop-database | 每个数据库创建之前添加drop数据库语句 | 未开启 | |
--add-drop-table | 创建表之前添加drop语句 | 开启 | |
--event | -E | 导出事件 | 未开启 |
--routines | -R | 导出存储过程以及自定义函数 | 未开启 |
--triggers | 导出触发器 | 开启 | |
--extended-insert | -e | 使用具有多个VALUES列的INSERT语法 | 开启 |
--ignore-table | 指定不导出的表。需要忽略多个表时,需要重复多次 | ||
--no-data | -d | 不导出任何数据,只导出数据库表 | |
--no-create-info | -t | 只导出数据,不添加CREATE TABLE语句 | |
--force | -f | 导出过程中忽略SQL错误 | |
--tz-utc | 导出顶部设置时区TIME_ZONE='+00:00' | 开启 | |
--where | -w | 只转储指定WHERE条件选择的记录 | |
--set-gtid-purged | 是否添加SET @@GLOBAL.GTID_PURGED输出 | ||
--single-transaction | 通过在一个事务中导出所有表从而创建一个一致性的快照,适用于innodb引擎 | ||
--master-data | 该选项将当前服务器的binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER命令;如果为2,输出的CHANGE MASTER命令前添加注释信息 |
参考命令
导出、导入所有的库
1 | mysqldump -uroot -proot -hlocalhost -A > all_mysql_data.sql |
1 | mysql -uroot -proot -hlocalhost < all_muysql_data.sql |
导出、导入指定库
1 | mysqldump -uroot -proot -hlocalhost newcoder > newcoder.sql |
1 | mysql -uroot -proot -hlocalhost < newcoder.sql |
导出、导入某几个库
1 | mysqldump -uroot -proot -hlocalhost -B aaa bbb > aaa_bbb.sql |
1 | mysql -uroot -proot -hlocalhost < aaa_bbb.sql |
导出、导入某个库的某些表数据
比如操作aaa数据库的bbb表和ccc表
1 | # 可以在导出时加--add-locks参数,表示导出时锁定数据库表 |
1 | # 要确保aaa库存在 |
只导出数据库结构,不导出数据
1 | mysqldump -uroot -proot -hlocalhost aaa -d > bbb_ccc.sql |
1 | # 要确保aaa库存在 |
物理备份
数据库文件级备份,备份内容是操作系统上数据库文件,常见工具为MySQL XtraBackup、Oracle RMAN等。
由存储数据库的内容和文件的副本组成,适用于大型数据库。
优点是备份速度快,恢复速度快,体积小。
如果数据库正在运行,需要先执行锁定数据库,防止在备份期间更改数据库的内容。
一般使用XtraBackup进行数据备份。
Xtrabackup优点
备份速度快,物理备份可靠
备份过程不会打断正在执行的事务(无需锁表)
能够基于压缩等功能节约磁盘空间和流量
自动备份校验
还原速度快
可以流传将备份传输到另外一台机器上
在不增加服务器负载的情况备份数据
Xtrabackup常见参数
参数 | 含义 | 备注 |
---|---|---|
--backup | 备份到指定目录 | |
--target-dir | 指定目录 | |
--stream | 流式传输指定备份,参数xbstream | |
--compress | 是否启用压缩备份 | |
--compress-threads | 指定压缩线程 | |
--databases | 指定要备份的数据库 | |
--databases-exclude | 排除要备份的数据库 | |
--user | 用户名 | |
--password | 密码 | |
--host | 数据库IP | |
--rsync | 使用rsync工具优化本地传输,当指定这个选项,innobackupex使用rsync拷贝非Innodb文件而替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。 |
参考命令
流式备份并压缩、解压
1 | xtrabackup --backup --user=root --password=root --host=192.168.31.75 --stream=xbstream | gzip > `date +%Y%m%d`.gz |
1 | gzip -f -d < `date +%Y%m%d`.gz | xbstream -x -C mysql |