使用mysqldump工具对mysql数据库实现完全备份和还原

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;开启二进制日志

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

[[email protected] ~]#vim /etc/my.cnf
[mysqld]
log_bin=/data/mysql/bin/mysql-bin

重启数据库服务

[[email protected] ~]#systemctl restart mariadb

2>完全备份

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

[[email protected] ~]#mkdir /data/backup

使用备份工具mysqldump

[[email protected] ~]#mysqldump -A --single-transaction --master-data=2 | xz > /data/backup/all_`date +%F`.sql.xz
[[email protected] ~]#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>破换数据库

[[email protected] ~]#rm -rf /var/lib/mysql/*

5>还原

查看二进制文件列表

[[email protected] ~]#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

重启数据库

[[email protected] ~]#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)

使用备份文件还原数据库
解压

[[email protected] ~]#ls /data/backup/all_2019-05-06.sql.xz
/data/backup/all_2019-05-06.sql.xz
[[email protected] ~]#xz -d /data/backup/all_2019-05-06.sql.xz
[[email protected] ~]#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

[[email protected] ~]#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文件里

[[email protected] ~]#mysqlbinlog --start-position=245 /data/mysql/bin/mysql-bin.000005 > inc.sql

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

[[email protected] ~]#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

时间: 2024-10-06 00:10:49

使用mysqldump工具对mysql数据库实现完全备份和还原的相关文章

Navicat工具进行Oracle数据库复制 or 备份、还原功能(由评教需要所谈)

GXPT是一个分布式系统,此系统暂时包含权限系统.基础系统.评教系统.考试系统,各个系统建有自己的oracle数据库.我们小组负责的是评教系统,而评教系统的正常需要借助于权限系统和基础系统,具体的业务这里就不多解释了.近期要进行评教活动了,基础系统在往基础库中录入真实数据,而评教系统还想进行一下功能及压力测试,当然就不同直接操作基础真实数据库的数据了,于是我们准备了一台装有oracle的备用服务器,作为测试使用. Oracle数据库不能像SqlServer那样直接进行备份还原.我首先建好了基础系

mysql数据库数据的 备份以及还原

数据库备份的3种方式: 例如:mysqldump -uzx_root -p test>/root/test1.sql

mysqldump导入导出mysql数据库

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

使用mysqldump导入导出MySQL数据库

数据库的基本导入\导出的命令 是 mysqldump 和 source 在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是用命令行 另一个是用phpmyadmin 先 来说说phpmyadmin 这个工具导出和导入很简单 而且导入时无需建库 直接还原成原来的数据库 用source 也可以还原 但他导入文件时有大小限制不能超过2M 再来说说 mysqldump 和 source 用命令操作很快 但是想把导出的文件再导入时必须先建立一个数据库(这个库可以随便起名)

mysqldump常用于MySQL数据库逻辑备份

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

MySQL 拷贝数据库表方式备份,还原后提示 table xxx '' doesn`t exist

MySQL很强大,支持直接拷贝数据库文件快速备份,那数据库文件在哪里呢? 打开MySQL的配置文件 my.ini,找到 datadir 节点,如 datadir="D:/Program Files/MySQL/MySQL Server 5.1/data" 进入上述文件夹,就可以看到MySQL中新建的数据库文件夹了,每个文件夹以数据库名命名的,你想备份哪个数据库,把这个文件夹拷贝走即可.到时还原数据库,把它拷贝到data目录下即可,就这么简单! 但是,今天在一台MySQL服务器上拷贝备份

MySQL数据库的自动备份与数据库被破坏后的恢复(2)

测试自动备份正常运转与否(备份恢复的方法) 这里,以通过实际操作的过程来介绍问题出现后的恢复方法. [1] 当数据库被删除后的恢复方法 首先建立一个测试用的数据库. [[email protected] ~]# mysql -u root -p ← 用root登录到MySQL服务器 Enter password: ← 输入MySQL的root用户密码 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL conne

MySQL数据库的自动备份与数据库被破坏后的恢复(3)

[2] 当数据库被修改后的恢复方法 数据库被修改,可能存在着多方面的原因,被入侵.以及相应程序存在Bug等等,这里不作详细介绍.这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法. 具体和上面所述的“数据库被删除后的恢复方法”相类似.这里,测试用数据库接着使用刚刚在前面用过的test.这里为了使刚刚接触数据库的朋友不至于理解混乱,我们再次登录到MySQL服务器上确认一下刚刚建立的测试用的数据库test的相关信息. [[email protected] ~]# mysql -u root

mysql数据库自动化完整备份和增量备份

mysql数据库自动化完整备份和增量备份     增量备份,为了增强mysql数据库的安全性和完整性,需要对数据进行备份.这里我们采用的策略是每周五下午5:30进行一次完整备份:每天的6:00.12:10.17:00进行增量备份. 1.完整备份脚本如下:(备份之后并打包存储) 2.增量备份脚本如下:(将生成的二进制文件内容读取出来并导入一个新的sql文件中) 增量备份的前提时,要在mysql的配置文件里打开二进制功能: log-bin=mysql 3.将这两个加进计划任务里 4.执行结果: 数据