您的位置:首页 > 数据库 > MySQL

MySQL5.5数据库-全量备份与恢复

2019-05-18 12:22 459 查看
1.全量备份
  • 语法:备份指定库下的所有表

    mysqldump -u用户名 -p密码 [备份参数] 数据库名 > 备份的文件名
  • 语法:备份指定库下的单个表

    mysqldump -u用户名 -p密码 [备份参数] 数据库名  表名 > 备份的文件名
  • 备份参数

    参数 说明
    -A 导出所有数据库数据,包括数据库和创建脚本
    -a 导出包括创建选项,默认启用(如创建表时带有选项 ENGINE DEFAULT CHARSET
    不需要则使用:–skip-create-options
    -B 导出指定数据库数据,包括数据库和表的创建脚本 <不需要则使用:-n, --no-create-db>
    -C 服务器客户端协议间使用压缩
    -c 完整插入语句,insert时把字段名都列出
    --compact 多余的注释去掉,一般用于debug,生产不用
    --compatible 导出相应模式的脚本,模式有:ansi, mysql323, mysql40,postgresql, oracle, mssql, db2, maxdb, no_key_options,no_table_options, no_field_options
    -d 只备份表结构
    -t 只备份数据
    --default-character-set=<字符集名称> 导出指定字符集格式
    –delete-master-logs 使用新的日志,并删除所以旧日志文件。默认启用 --master-data
    -E 包括事件、触发器
    -e 多个insert使用一个语句多个values,默认启用
    相反:每个value一个insert则使用 --skip-extended-insert
    -F 刷新binlog日志,日志文件切换新
    -f 错误继续
    -i 包括额外信息,默认启用。
    -l 只读锁表
    --master-data[=#] 增加binlog日志文件及对应的位置点,等于2:注释状态,显示备份起始的日志点;等于1:多用于从库,使从库从某个日志点开始
    -Q 表和字段名使用符号(`)
    -R 包括存储过程和函数及触发器
    --replace “INSERT INTO” 替换为 “REPLACE INTO”
    --tables 覆盖选项"-B" ,如库和表同名
    –triggers 导出包括触发器
    -x 锁定所有数据库和表,全局读锁。关闭 --single-transaction 和 --lock-tables
    压缩 备份的库名|gzip
  • 示例
    备份study数据库中所有表

    mysqldump -uroot -p123456 study > /root/study_bak.sql
    mysqldump -uroot -p123456 -B study > /root/study_bak_B.sql
    mysqldump -uroot -p123456 -B study|gzip > /root/study_bak_B.sql.gz
    mysqldump -uroot -p123456 -B temp study|gzip > /root/multiple.sql.gz

    分库备份库中所有的库

    mysql -uroot -p123456 -e "show databases;"|grep -Evi "database|information_schema|performance_schema|mysql"|sed -r 's#^([a-z].*$)#mysqldump -uroot -p123456 --events -B \1|gzip >/root/\1.sql.gz#g'|bash

    检查备份结果

    grep -E -v "#|\/|^$|--" /root/study_bak.sql

2.恢复备份
2.1 source命令
  • 语法
    进入mysql数据库控制台,使用source命令
    source 备份的文件名
    示例:
    gzip -d /root/study.sql.gz
    mysql -uroot -p123456
    source /root/study.sql;
2.2 mysql命令(标准)
  • 语法

    mysql  -u 用户名 -p 密码 [库名] < 备份的文件名
  • 示例
    恢复上步备份的study库为study_temp库(需要不加-B备份)

    mysql -uroot -p123456 stduy_temp </root/study_bak.sql

    查看数据

    mysql -uroot -p123456 -e "select * from stduy_temp.t_user;"

常用备份汇总
  • 导出test库中study表的结构和数据,并刷新binlog
    mysqldump test -ubackup -p123456 -f --tables study |gzip  > /home/backup/study.sql.gz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: