mysql 备份数据库_mysql数据库备份

前一段时间因为误操作删除了一张表的几条数据,弄得很尴尬,正好这周有空就折腾了下数据备份的知识,现把mysql的数据备份相关实践和心得总结如下:

一.使用mysqldump命令备份数据库:

备份整个数据库(包括表结构和数据),用法如下

mysqldump -h10.38.14.143 -uroot -prootroot  weixin > weixin.sql

其中 weixin 是数据库名,可以一次备份多个数据库 (用空格隔开),默认保存在当前目录下

这个wexin.sql文件里面主要由四部分组成:数据库及操作系统的信息、表结构、具体的数据(实际上是insert语句)、锁表以及释放表的命令语句

54b28a77322c23db2bbfa5e5fe128622.png

a6f4da5209b1b16a4fd9a752b5212a23.png

a70f8f6a00f19dd1c5ac6a178e724ed9.png

699489e630e913be78241a45724582d7.png

补充:

1.读锁定:本人和其他人只能读取数据库

写锁定:只有本人能进行增删改查,其他人不能进行任何操作

2.有时用mysqldump命令会提示没权限去操作数据库相关的提示语 如 mysqldump: Got error: 1044: Access denied for user 'php'@'10.38.%' to database 'cms_fgw' when using LOCK TABLES

这是因为mysql数据库限制了远程服务器对他的相关操作,请和DBA沟通开放权限(主要是执行下面类似的命令去授权)

grant all privileges  on *.*  to  'root'@'%'  identified by '123456' with grant  option;

flush privileges;

3.如若忘记mysql命令的一些用法可以多多使用?操作,相当于man帮助,这个很有用,如下

880a67e2f1ae6322a99848b221616527.png

4.用mysqldump也可以只备份表结构,用法如下

mysqldump -h10.38.14.143 -uroot -prootroot --no-data --databases weixin cjdaily > /tmp/table_structure.sql

table_structure.sql中的部内容如下

a86e392abe32cba6db7e1861a74b6324.png

5.可以根据mysqldump命令进行一些扩展写一个备份数据库的shell脚本,如下是根据我们自己的需求写的一个脚本(shell脚本的具体语法就不讲了)

#!/bin/bash

#backup database

if [ $# -ge 1 ] ; then

databaselist=$@

else

databaselist="cjdaily cms_rmrb guangzhou pladaily"

fi

for database in $databaselist

do

if [ ! -e /home/pengyudi/backup_databases/$database ]

then

mkdir -p /home/pengyudi/backup_databases/$database

fi

mysqldump --opt -h10.38.10.5 -uchen -pab#@c-123 $database |gzip > /home/pengyudi/backup_databases/$database/$database$(date +"%Y-%m-%d %H:%M:%S").sql.gz

if [ $? -eq 0 ]

then

echo "$(date +"%Y-%m-%d %H:%M:%S") Database ---$database---  Backup Successfully \r\n"

find /home/pengyudi/backup_databases/$database/ -name $database\* -ctime +1 -exec rm -rf {} \;

else

echo "$(date +"%Y-%m-%d %H:%M:%S") Database  ---$database---  Backup unsuccessfully,please check out the reason\r\n"

fi

done

6.备份某台主机上的所有数据库 mysqldump --opt -h10.38.10.5 -uchenliangliagasd  -pabcdeqasdadfa -1238  --all-databases> test.dump

二.数据的恢复

1.切换到mysql的工作环境

use test;

source /tmp/table_structure.sql ;

2.不切换到mysql环境

/usr/bin/mysql -h192.168.4.47 -um_bbs_test_admin -P3309 -p89603d5a test

三.使用load导入数据 和select **** from tabelName into outfile 'file_name'的方式导出数据

3d285f3eca28784280645403c9b30e23.png

eb06496669e1ee45b649c461757396e5.png

73390d2fc5efca134a145e0f766f3b5f.png

补充

1.注意保存数据的文件要打引号以及保存数据的文件路径,要特别留意一些细节,如上,确实很容易出错

select * from weixin_data_rmrb into outfile 'weixin_outfile.sql';

2.使用技巧:

当用load命令导入数据时可以通过适当数据提高导入速度,对于MyISAM储存引擎的表

(1)可以通过以下方式快速导入大量数据(disable keys 和enable keys 可以用来打开或关闭非唯一索引的更新,提高导入速度,但是对InnoDB表无效)

alter table weixin_data_rmrb  disable keys

load data infile 'weixin_outfile.sql' into table weixin_data_rmrb

alter table weixin_data_rmrb enable keys

(2)关闭唯一性校验可以提高导入速度

在导入数据前后分别执行 set unique_checks=0(关闭唯一性校验) 和 set unique_checks=1来提高导入速度

对于Innodb表可以使用一下方式提高导入速度:

(1)将导入的数据按照主键的顺序排列,可以提高导入速度,因为Innodb表是按照主键顺序保存的

(2)在导入之前执行set autocommit=0关闭自动提交事物,导入结束后执行set autocommit=1回复自动提交事物

四.使用二进制日志恢复数据

1.开启binlog日志

修改/etc/my.cnf配置文件

vim /etc/my.cnf

在[mysqld]下面添加如下两行用于开启及设置binlog日志的保存路径

log-bin=/home/logs/mysql/mysql-bin #记得要修改权限,不然mysql无法启动;  mysql-bin为日志文件的名称的组成部分(mysql-bin.000001)

binlog_format=mixed

log=/home/logs/mysql/mysql.log

保存退出

chown mysql.mysql /home/logs/mysql -R #修改目录权限

609c235c10601293d1d5ea9ba200e244.png

其中mysql-bin.index记录了生成了哪些二进制日志文件

0788e7d6199a9a66689667134deb76cb.png

另外跟日志相关的参数:

expire_logs_days = 7 #保留七天的日志

slow-query-log = on #开启慢查询

slow_query_log_file = /home/logs/mysql/slow.log #慢查询日志保存路径

long_query_time = 1 #慢查询的时间,超过一秒的记录下来

log-queries-not-using-indexes = on #记录没用使用到索引的SQL语句

修改配置后重启mysql:service mysqld restart

进入到mysql命令界面查看二进制日志相关信息:

show variables like "%bin%"

0518c41a1a8488b527ed45569555a32f.png

2.与binlog日志有关的命令

flush logs: 执行完之后在存放binlog日志的目录下多一个最新的binlog日志文件

show master status 查看最后一个bin日志

reset master 清空所有的binlog日志

通过binlog日志恢复到某一个日志文件的操作命令:

/usr/bin/mysqlbinlog --no-defaults -f  /home/logs/mysql/mysql-bin.000008| mysql -h10.38.14.143 -uroot -prootroot

查看某个binlog日志命令: /usr/bin/mysqlbinlog --no-defaults -f  /home/logs/mysql/mysql-bin.000008

说明:可以根据需要恢复到某一个点的数据,mysqlbinlog后面的主要参数有:

--stop-position="120"

--start-positon="20"

--stop-date="2016-11-19 18:50:42"

--start-date="2016-11-19 18:30:21"

友情链接:

binlog详细的操作例子请参考如下博客:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript:Browser 对象

ylbtech-JavaScript&#xff1a;Browser 对象1. Window 对象返回顶部 1、Window 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架&#xff08;<frame> 或 <iframe> 标签&#xff09;&#xff0c;浏览器会为 HTML 文档创建一个 window 对象…

使用Apache KeyedObjectPool的ssh连接池

我发现org.apache.commons.pool非常有用且健壮&#xff0c;但没有充分记录。 因此&#xff0c;我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool &#xff1f; 它是一个映射&#xff0c;其中包含多种类型的实例池。 可以使用任意键访问每种类型。…

c语言怎么输入有空格的字符串

c语言怎么输入有空格的字符串 https://blog.csdn.net/qq_44752641/article/details/106118698 采用fgets输入可以识别空格,如输入hello world&#xff0c;输出hello world char str[50]; printf("输入一段字符串&#xff1a;"); fgets(str,50,stdin);若采用scanf&…

深入理解line-height与vertical-align——前端布局常用属性

line-height、font-size、vertical-align是设置行内元素布局的关键属性。这三个属性是相互依赖的关系&#xff0c;改变行间距离、设置垂直对齐等都需要它们的通力合作。下面将主要介绍line-height与vertical-align&#xff1a; 行高 【定义】 line-height行高是指文本行基线之…

UWP开发入门(四)——自定义CommandBar

UWP开发入门&#xff08;四&#xff09;——自定义CommandBar 原文:UWP开发入门&#xff08;四&#xff09;——自定义CommandBar各位好&#xff0c;再次回到UWP开发入门系列&#xff0c;刚回归可能有些不适应&#xff0c;所以今天我们讲个简单的&#xff0c;自定义CommandBar&…

(转)Cobbler无人值守批量安装Linux系统

本文目录&#xff1a; 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光盘安装系统 1.4.1 生成distro 1.4.2 提供kickstart文件 1.4.3 提供profile 1.4.4 开始安装 1.5 比pxekickstart好的地方 1.6 让新…

mysql 数据库 应用_MySQL数据库的应用

1、创建一个以你名字为名的数据库&#xff0c;并创建一张表student&#xff0c;该表包含三个字段(id&#xff0c;name&#xff0c;age)&#xff0c;表结构如下&#xff1a;mysql>desc student;---------------------------------------------------------| Field | Type | N…

Spring集成–从头开始应用程序,第1部分

开始之前 在本教程中&#xff0c;您将学习什么是Spring Integration &#xff0c;如何使用它以及有助于解决哪些问题。 我们将从头开始构建一个示例应用程序&#xff0c;并演示Spring Integration的一些核心组件。 如果您不熟悉Spring&#xff0c;请查看我编写的另一本有关Spri…

初学者Web介绍一些前端开发中的基本概念用到的技术

Web开发是比较费神的&#xff0c;需要掌握很多很多的东西&#xff0c;特别是从事前端开发的朋友&#xff0c;需要通十行才行。今天&#xff0c;本文向初学者介绍一些Web开发中的基本概念和用到的技术&#xff0c;从A到Z总共26项&#xff0c;每项对应一个概念或者技术。 初学者W…

幻方问题

把1~16的数字填入4x4的方格中&#xff0c;使得行、列以及两个对角线的和都相等&#xff0c;满足这样的特征时称为&#xff1a;四阶幻方。 四阶幻方可能有很多方案。如果固定左上角为1&#xff0c;请计算一共有多少种方案。 比如&#xff1a; 1 2 15 16 12 14 3 5 13 7 10 4 8 …

Xcode 快捷键及代码格式化

按住apple键点击类名就可以定位到这个类中查看相关定义&#xff08;在日后的开发中我们会经常这么来做&#xff0c;毕竟要记住iOS开发中所有的API是不现实的&#xff0c;有些API我们可以通过这种方法来查找&#xff09; PS&#xff1a;下面都是网上百度后经过我自己整理&#x…

mysql 4字节utf8_MySQL 4字节utf8字符更新失败一例

MySQL 4字节utf8字符更新失败一例业务的小伙伴反映了下面的问题问题有一个4字节的utf8字符????插入到MySQL数据库中时报错java.sql.SQLException: Incorrect string value: \xF0\xA0\x99\xB6 for column c_utf8mb4 at row 1数据库中存放该字符的列已经定义为utf8mb4编码了&…

主席树学习小结(POJ 2104)

在高中的时候就听到过主席树了&#xff0c;感觉非常高端&#xff0c;在寒假的时候 winter homework中有一题是查找区间第K大的树&#xff0c;当时就开始百度这种网上的博客&#xff0c;发现主席树看不懂&#xff0c;因为那个root[i]&#xff0c;还有tx[x].l与tx[x].r是什么意思…

通过Spring Social推特StackExchange –第1部分

本文将介绍一个快速的附带项目-一个自动从各种Q&#xff06;A StackExchange网站上发布热门问题的机器人&#xff0c;例如StackOverflow &#xff0c; ServerFault &#xff0c; SuperUser等。我们将为StackExchange API构建一个简单的客户端&#xff0c;然后进行设置使用Sprin…

下拉菜单

<!Doctype html> <html> <head> <meta charset"utf-8"> <title>下拉菜单</title> <style> *{ margin:0; padding:0; } ul{ list-style:none; overflow:hidden; background-color:#333; } li{ float:left; } li a,.drop…

51Nod 1753 相似子串

题目大意: 两个字符串相似定义为&#xff1a; 1.两个字符串长度相等 2.两个字符串对应位置上有且仅有至多一个位置所对应的字符不相同 给定一个字符串&#xff0c;每次询问两个子串在给定的规则下是否相似。给定的规则指每次给出一些等价关系&#xff0c;如‘a’b&#xff0c;‘…

deepin下Clion连接mysql_CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库...

目前我把下载的mysql/Connector 下载后放在了project内 但是报错信息如下报错信息如下In file included from /Users/wsgdrfz/study/c/Libary_System/librarySystem/sqlConnection.h:/Users/wsgdrfz/study/c/Libary_System/librarySystem/sqlFiles/include/mysql_connection.h7…

[开源JVM] yvm - 自制Java虚拟机

中文 | English | | | YVM是用C写的一个Java虚拟机&#xff0c;现在支持Java大部分功能&#xff0c;以及一个基于标记清除算法的并发垃圾回收器. 不过还有很多bug等待修复。 感兴趣的朋友pull request/fork/star吧。 Github repo https://github.com/racaljk/yvm 已支持语言…

MacOSX环境上的多个Java JDK

同样&#xff0c;这是在Mac&#xff08;OSX 10.8.x &#xff09;上配置Java开发环境的一个小技巧。 如果您现在真的开始&#xff0c;我建议您阅读我以前的文章之一 &#xff0c;这是一种快速&#xff0c;干净的方法&#xff08;我想&#xff09;来设置环境变量并开始Java编码。…

浏览器的标准模式和怪异模式

面试题之浏览器的标准模式和怪异模式 1.浏览器的标准模式和怪异模式到底是什么&#xff1f; 标准模式&#xff1a; 是浏览器按照W3C标准解析执行代码&#xff0c;这样用规定的语法去渲染&#xff0c;就可以兼容各个浏览器&#xff0c;保证以正确的形式展示网页。 怪异模式&…