码迷,mamicode.com
首页 > 数据库 > 详细

mysqldump 和 基于快照的备份

时间:2015-09-15 16:22:10      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

mysqldump 和 基于快照的备份

mysqldump 和 基于快照的备份

mysqldump: 仅适用于数据集较小

mysqldump DB_NAME [tbname1] [tbname2]

# mysqldump -uroot -pYOUR_PASSWORD DB_NAME > test.sql
mysql> create database test2;
mysqldump -uroot -pYOUR_PASSWORD test2 < test.sql

备份所有的库

mysqldump --all-databases > test.sql

备份指定的多个库

--databases tb1 tb2 .....

恢复

mysql < test.mysql
mysql database_name < test.sql

备份前要加锁

mysqldump --lock-all-tables: 请求锁定所有表之后在备份, 对 MyISAM, InnoDB, Aria 做温备
mysqldump --lock-tables tables_name [table1] [table2]

如果是 innodb

mysqldump --single-transaction: 能够对 InnoDB 存储引擎实现热备, 这时候就不用 lock-all-tables

备份代码

--events: 备份事件调度器代码
--routines: 备份存储过程和存储函数
--triggers: 备份触发器

备份时滚动日志:

--flush-logs: 备份前, 请求到锁之后滚动日志

复制时的同步位置标记

--master-data={0|1|2}
0 表示不记录 (默认)
1 表示记录为 change master 语句
2 表示记录为注释的 change master 语句

dump a master replication server to produce a dump file that
can be used to set up another server as a slave of the master.
It causes the dump output to include a CHANGE MASTER TO
statement that indicates the binary log coordinates
(file name and position) of the dumped server. These are the
master server coordinates from which the slave should start
replicating after you load the dump file into the slave

使用 mysqldump 备份
请求锁: –lock-all-tables 或使用–single-transaction 进行 innodb 热备
滚动日志: –flush-logs
选定要备份的库 –databases
记录二进制文件及位置 –master-data

手动请求全局锁

> flush tables with read lock
> flush logs; (shell 下: mysqladmin flush-logs)
> unlock tables

恢复:
建议: 关闭二进制日志, 关闭其他用户的写操作 set sql_bin_log = 0;
应该用 source test.sql

备份策略: 基于 mysqldump
备份:
mysqldump+二进制日志文件
周日做一次完全备份, 备份的同时滚动日志
周一至周六: 备份二进制日志

恢复: 完全备份+各二进制文件至此刻的事件
对于 MySQL 配置文件, 以及与 MySQL 相关的 OS 配置文件在每次修改后都应该直接进行备份

lvm-snapshot: 基于 LVM 快照的备份

  1. 事务日志跟数据文件必须在同一个卷上 (还要注意没 commit 的事务)
  2. 创建快照卷之前, 要请求 mysql 的全局锁
  3. 在请求全局锁完成之后, 做一次日志滚动;做二进制日志文件及位置标记 (手动进行)
  4. 释放锁

步骤:

  1. 请求全局锁, 并滚动日志
    flush tables with read lock;
    flush logs;
  2. 做二进制日志文件及位置标记 (手动进行)
    mysql -e ‘show master status‘ > /path/to/somefile (之后在 slave 机器上执行对应的相应的操作)
  3. 创建快照卷
    lvcreate -L SIZE -s -n data_back -p r /dev/data/mysqldata
  4. 释放全局锁
    unlock tables
  5. 挂载快照并备份
    cp
  6. 备份完成之后, 删除快照卷
    lvremove

相关阅读

mysqldump 和 基于快照的备份

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4810559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!