博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用mysqldump工具对mysql数据库实现完全备份和还原
阅读量:7143 次
发布时间:2019-06-29

本文共 3147 字,大约阅读时间需要 10 分钟。

1>启动数据库二进制日志

查看sql_log_bin是否启用

MariaDB [(none)]> show variables like 'sql_log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| sql_log_bin   | ON    |+---------------+-------+1 row in set (0.00 sec)

在会话时使用set sql_log_bin=ON;开启二进制日志

修改配置文件

指定二进制日志的路径(二进制日志文件不应该与数据文件放在同一磁盘)

[root@CentOS7 ~]#vim /etc/my.cnf[mysqld]log_bin=/data/mysql/bin/mysql-bin

重启数据库服务

[root@CentOS7 ~]#systemctl restart mariadb

2>完全备份

创建备份数据存放路径(最好存放在远程主机多份)

[root@CentOS7 ~]#mkdir /data/backup

使用备份工具mysqldump

[root@CentOS7 ~]#mysqldump -A --single-transaction --master-data=2 | xz > /data/backup/all_`date +%F`.sql.xz[root@CentOS7 ~]#ls -l /data/backup/total 104-rw-r--r-- 1 root root 105844 May  6 19:40 all_2019-05-06.sql.xz

3>修改数据库

Teachers表插入两条数据

MariaDB [hellodb]> insert teachers (name,age,gender)value('zhangshan',42,'M');Query OK, 1 row affected (0.01 sec)MariaDB [hellodb]> insert teachers (name,age,gender)value('lisi',33,'F');Query OK, 1 row affected (0.00 sec)

删除students表

MariaDB [hellodb]> drop table students;Query OK, 0 rows affected (0.01 sec)

Teachers表插入一条数据

MariaDB [hellodb]> insert teachers (name,age,gender)value('wangwu',33,'F');Query OK, 1 row affected (0.01 sec)

4>破换数据库

[root@CentOS7 ~]#rm -rf /var/lib/mysql/*

5>还原

查看二进制文件列表

[root@CentOS7 ~]#ll /data/mysql/bin/total 1072-rw-rw---- 1 mysql mysql     288 May  6 18:51 mysql-bin.000002-rw-rw---- 1 mysql mysql     288 May  6 18:52 mysql-bin.000003-rw-rw---- 1 mysql mysql     264 May  6 19:10 mysql-bin.000004-rw-rw---- 1 mysql mysql    1119 May  6 20:59 mysql-bin.000005-rw-rw---- 1 mysql mysql   30373 May  6 20:59 mysql-bin.000006-rw-rw---- 1 mysql mysql 1038814 May  6 20:59 mysql-bin.000007-rw-rw---- 1 mysql mysql     245 May  6 20:59 mysql-bin.000008-rw-rw---- 1 mysql mysql     231 May  6 20:59 mysql-bin.index

重启数据库

[root@CentOS7 ~]#systemctl restart mariadb

临时关闭二进制日志记录

MariaDB [(none)]> show variables like 'sql_log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| sql_log_bin   | ON    |+---------------+-------+1 row in set (0.00 sec)MariaDB [(none)]> set sql_log_bin=OFF;Query OK, 0 rows affected (0.00 sec)

使用备份文件还原数据库

解压

[root@CentOS7 ~]#ls /data/backup/all_2019-05-06.sql.xz /data/backup/all_2019-05-06.sql.xz[root@CentOS7 ~]#xz -d /data/backup/all_2019-05-06.sql.xz[root@CentOS7 ~]#ll /data/backup/total 512-rw-r--r-- 1 root root 521990 May  6 19:40 all_2019-05-06.sql

还原

MariaDB [test]> source /data/backup/all_2019-05-06.sql

查看备份时二进制日志的记录点,从此位置后的日志导出到inc.sql

[root@CentOS7 ~]#vim /data/backup/all_2019-05-06.sql-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=245; //此条语句记录了数据库完全备份时二进制日志的记录点

将二进制日志mysql-bin.000005的245之后的日志导出到inc.sql文件里

[root@CentOS7 ~]#mysqlbinlog --start-position=245 /data/mysql/bin/mysql-bin.000005 > inc.sql

由于之前误删除了students表,所以要删除或注释inc.sql里面的删除students表操作的语句

[root@CentOS7 ~]#vim  inc.sql#DROP TABLE `students` /* generated by server */

使用二进制日志恢复完全备份后的数据更新

MariaDB [hellodb]> source inc.sql

开启二进制日志

MariaDB [hellodb]> set sql_log_bin=ON;

最后测试是否还原了数据库

MariaDB [hellodb]> show tables;MariaDB [hellodb]> select * from teachers;

转载于:https://blog.51cto.com/14233815/2390073

你可能感兴趣的文章
java service wrapper日志参数设置及优化
查看>>
android build.prop详解
查看>>
Spring aop 切面编程
查看>>
C3P0连接池使用教程
查看>>
数据结构——红黑树
查看>>
高通平台MSM8916LCM模块移植(一)-bootloader部分【转】
查看>>
oracle表空间不足相关问题解决办法
查看>>
CentOS-7 在windows server 2012下的虚拟机安装教程
查看>>
函数调用过程栈帧变化详解
查看>>
Android项目实战(三十二):圆角对话框Dialog
查看>>
Word或Excel里画柱状图和折线图组合体
查看>>
C# CRC16 查表法
查看>>
js中获取键盘事件
查看>>
面试(4)-spring-Spring面试题和答案
查看>>
请教 JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态...
查看>>
jQuery 各类判断函数汇总
查看>>
Android studio 分32位64位版本吗?
查看>>
UIcollectionView的使用(首页的搭建1)
查看>>
[原创]AM3352 + TPS65910 调试方法+调试记录
查看>>
.net基本数据类型操作
查看>>