MySQL高性能详细数据库备份

本文通过使用mysql自带的mysqldump和最有名开源工具Xtrabackup进行对数据库进行备份,保证数据的安全性。

使用Mysqldump 温备份单个数据库:

1.在mysql交互式模式下施加读锁,以免写入数据有差错;
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

2.新建一个存放的文件夹,存放备份文件
[ root@yulong ~]# mkdir -pv /backup/data

3 .备份单个数据库中的表
[root@yulong backup]# mysqldump -uroot -pRedHat --master-data=2 --databases hellodb --lock-all-tables > /backup/`date +%F`
--master-data=2          记录备份的时候二进制文件
--databases hellodb      备份的数据库
--lock-all-tables        锁定所有表
[root@yulong backup]# mysqldump --help 使用--help显示更多mysqldump选项

4.然后查看下这个文件,里面可以看到bak的详细信息

[root@yulong backup]# cat bak.2013-09-06

5.备份完成后释放读锁

mysql> unlock tables;
Query OK, 0 rows affected (0.06 sec)

6.然后删除这个hellodb这个库

mysql> drop database hellodb;
Query OK, 7 rows affected (0.01 sec)

7.让后再用刚才的备份进行恢复;

mysql -uroot -predhat < /backup/bak.2013-09-06

8.查看删除的是否恢复

mysql> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test              |
| yulong            |

使用mysqldump热备InnoDB引擎整个数据库

1.热备份数据库
[root@yulong backup]# mysqldump -uroot -predhat --single-transaction --events --routines  --master-data=2 --all-databases > /backup/full.`date +%F`.sql
--single-transaction    基于此选项能实现热备InnoDB表
--events                备份事件调度器代码;
--routines              备份存储过程和存储函数;

2. 然后在创建一个增量备份的数据库

mysql> create databases yulong;
Query OK, 1 row affected (0.04 sec)
mysql> use yulong;
Database changed
mysql> create table nihao (beijing char(30) primary key, diqu varchar(50) not null);

3.在到刚才完全备份的文件里查看--master-data记录的值

[root@yulong backup]# head -30 full.2013-09-06.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=676;


4. 然后查看二进制文件事件的position值

mysql> show master status;
+------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000019 |    1320 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


5.把他们这段二进制值给保存到一个目录下
[root@yulong backup]# mysqlbinlog  --start-position=676  --stop-position=1320  /mybinlog/mysql-bin.000019 > /backup/zl.sql

6.暂时关闭二进制log文件,恢复的二进制日志我们不需要记录
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

7.然后删除数据库

mysql> drop database yulong;
Query OK, 1 row affected (0.06 sec)
mysql> drop database hellodb;
Query OK, 7 rows affected (0.00 sec)


8.恢复刚才备份的数据
[root@yulong backup]# mysql -uroot -predhat  </backup/full.2013-09-06.sql      恢复全部备份
[root@yulong backup]# mysql -uroot -predhat  </backup/zl.sql 恢复增量备份

9.验证数据,删除的数据库是否恢复,我这里OK没有题
mysql> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| test              |
| yulong            |
+--------------------+

相关阅读:

相关推荐