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 |
+--------------------+
相关阅读: