首页 >

Mysql备份与恢复

数据库|mysql教程Mysql备份与恢复
Mysqldump,Xtrabackup,mysql备份恢复
数据库-mysql教程
代挂网总控制端api源码,Ubuntu切换核显,tomcat的默认页面在哪,调剂信息爬虫,武汉php软件开发,云阳seo营销lzw
为了保障数据的安全,需要定期对数据进行备份。备份的方式有很多种,效果也不一样。一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复。从而将
商城源码 下载,ubuntu var空间分配,tomcat7找不到服务,发票爬虫查询,php 重新生成doc,青岛seo报价lzw
24直播源码,vscode运行安卓模拟器,pxe Ubuntu 硬盘,修改tomcat服务端口,爬虫软件文献,php获取表单提交数据,在淘宝上学seo有用吗lzw
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

方法二:滚动日志复制文件

mysql> flush logs;
#滚动日志
[root@stu18 data]# cp mysql-bin.000001 /zhao/mysql-bin.000001 #复制导出二进制文件

(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 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备份与恢复
  • 使用mysqldump导出数据库
  • 使用mysqldump导出数据库 | 使用mysqldump导出数据库 ...

    Mysql备份与恢复
  • 不停机Xtrabackup创建slave节点
  • 不停机Xtrabackup创建slave节点 | 不停机Xtrabackup创建slave节点 ...

    Mysql备份与恢复
  • MySQL关于timestamp和mysqldump的一个“bug”
  • MySQL关于timestamp和mysqldump的一个“bug” | MySQL关于timestamp和mysqldump的一个“bug” ...