首页 / MYSQL / Mysql备份与恢复
Mysql备份与恢复
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql备份与恢复,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4276字,纯文字阅读大概需要7分钟。
内容图文
![Mysql备份与恢复](/upload/InfoBanner/zyjiaocheng/546/d2481eb5369a44428ca86020d8912e04.jpg)
为了保障数据的安全,需要定期对数据进行备份。备份的方式有很多种,效果也不一样。一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复。从而将
2.3、过程实现
(1)Mysqldump全备
由于Mysql数据库默认的为MyISAM存储引擎所以只有使用温备(备份同时仅支持读请求)进行,所以我们要为所有数据库添加读锁
[root@stu18 ~]#mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql解析:--lock-all-tables表示为所有表施加读锁;--master-data=2表示在备份文件中记录当前二进制日志的位置;--events表示备份数据的同时备份时间调度器代码;--routines表示备份数据的同时备份存储过程和存储函数;--all-databases表示备份所有库。
[root@stu18 zhao]# less database_2013-08-13.sql -- #表示注释项 -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14203; #这里表示当前处于mysql-bin.000001这个二进制日志中,事件为14203这是通过--master-data=2产生的 -- -- Current Database: `hellodb` -- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */;(2)二进制全备
方法一: 导出二进制日志文件内容
[root@stu18 data]# mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql 方法二:滚动日志复制文件
(3)二进制增备
首先添加数据信息
mysql> use hellodb; mysql> INSERT INTO students(Name,Age,Gender,ClassID,TeacherID) values ('Yang kang',22,'M',3,3);然后二进制增备
[root@stu18 data]# mysqlbinlog --start-position=14203 --stop-position=14527 mysql-bin.000001 > /zhao/binlog_`date +%F_%H`.sql解析:--start-position=14203是上次全备之后的二进制事件位置;--stop-position=14527最近一天的二进制事件位置。
2.4、模拟数据库损坏,实现恢复工作
mysql> DROP DATABASE hellodb; #删除数据库 ############下面这些过程要在离线状态下执行############ mysql> SET sql_log_bin=0; #先关闭二进制日志 mysql> flush logs; #滚动日志 [root@stu18 ~]# mysql -uroot -pmypass < /zhao/database_2013-08-13.sql #导入数据库备份文件 [root@stu18 ~]# mysql -uroot -pmypass < /zhao/binlog_2013-08-13_19.sql #导入增量备份文件 [root@stu18 ~]# mysql -uroot –pmypass #登录查看,恢复完成 mysql> SET sql_log_bin=1; #开启二进制日志(1)创建逻辑卷及挂载逻辑卷,此过程在此就不做演示了可参考博文
(2)初始化mysql将其数据目录指向/mydata/data
[root@stu18 ~]# cd /usr/local/mysql/ [root@stu18 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data(3)编辑查看配置文件,重启服务
[root@stu18 mysql]# vim /etc/my.cnf datadir = /mydata/data #查看此项是否定义数据目录位置 sync_binlog=1 #添加此项,每个事务提交时候,把事务日志从缓存区写到日志文件中,并且刷新日志文件的数据到磁盘上; [root@stu18 mysql]# service mysqld start
3.4、过程展示
(1)确保事务日志和数据文件必须在同一卷上
[root@stu18 ~]# ls /mydata/data/ hellodb myclass mysql-bin.000003 stu18.magedu.com.err ibdata1 mysql mysql-bin.000004 stu18.magedu.com.pid ib_logfile0 mysql-bin.000001 mysql-bin.index student ib_logfile1 mysql-bin.000002 performance_schema test 解析:其中ib_logfile0与ib_logfile1是日志文件
(2)施加全局锁并滚动日志
mysql> FLUSH TABLES WITH READ LOCK; mysql> FLUSH LOGS;(3)查看并保存当前正在使用的二进制日志及当前执行二进制日志位置(非常重要)
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 187 | | | +------------------+----------+--------------+------------------+ [root@stu18 zhao]# mysql -uroot -pmypass -e 'SHOW MASTER STATUS;' >/zhao/lvmback-2013-08-14/binlog.txt(4)创建快照卷
[root@stu18 zhao]# lvcreate -L 100M -s -p r -n mydata-lvm /dev/vg1/mydata(5)立即切换终端释放锁
mysql> UNLOCK TABLES;(6)备份数据
[root@stu18 data]# cp -a * /zhao/lvmback-2013-08-14/(7)二进制实现增量备份
mysql> use hellodb; #指定默认数据库 Database changed mysql> CREATE TABLE testtb (id int,name CHAR(10)); #创建表 Query OK, 0 rows affected (0.35 sec) mysql> INSERT INTO testtb VALUES (1,'tom'); #添加数据 Query OK, 1 row affected (0.09 sec) [root@stu18 data]# mysqlbinlog --start-position=187 mysql-bin.000004 > /zhao/lvmlogbin_2013-08-14/binlog.sql #日志实现增量备份(8)模拟数据库崩溃
[root@stu18 ~]# service mysqld stop [root@stu18 ~]# cd /mydata/data/ [root@stu18 data]# rm -rf *内容总结
以上是互联网集市为您收集整理的Mysql备份与恢复全部内容,希望文章能够帮你解决Mysql备份与恢复所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。