3522vip-澳门新葡亰平台官网-www.3522vip.com

3522vip☞(www.rivieraquest.com)能够为大家带来真正的真钱享受,澳门新葡亰平台官网开创业内先河,注册,开户,登录开始体验不同的娱乐世界,全国第一家以娱乐产品为主体对象的专业平台,菲律宾全资子公司成立,天天免费68周周再送168。

3522vip > 网络数据库 > Mysql 备份与恢复

原标题:Mysql 备份与恢复

浏览次数:200 时间:2019-11-17

一.概述

         由于服务器生成的二进制日志文件以二进制格式保存,所以若是要想检查那个文件的文本格式,就能用到mysqlbinlog日志处理工科具。
    mysqlbinlog的语法如下:
    mysqlbinlog [options] log-files log-files2...

    在那之中options有好些个采摘,常用如下:

选项

说明

-d, --database=name

指定数据库名称,只列出指定的数据库相关操作。

-o, --offset=#

忽略掉日志中的前n行命令

-r, --result-file=name

将输出的文本格式日志输出到指定文件

-s,--short-form

显示简单格式,省略掉一些信息

--set--charset=char-name

在输出为文本格式时,在文件第一行加上set names char-name.

-- start-datetime=name-stop-datetime=name

指定日期间隔内的所有日志

--start-position=# --stop-position=#

指定位置间隔内的所有日志

  1.1 开启binlog日志

    私下认可情形下是未展开binlog日志,可以经过以下三种办法查看:

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging
--或者这样查看
mysql> show variables like '%log_bin%    

    3522vip 1

  开启binlog日志,校正my.cnf文件重启mysql服务,如下所示:
    3522vip 2
   再一次查询binlog日志状态:
    3522vip 3
    3522vip 4

操作命令:

逻辑备份:
1.mysqldump(数据导出工具)
  mysqldump options db_name[table_name]//备份单个数据库
  mysqldump 选项 --database database-name1 [databases-name2]....//备份钦点的数据库贰个要么多少个
  mysqldump 选项 --all-database //备份全体的数据库
  链接选项:
  -u :内定客商名
   -p:钦定密码
   -h:钦定服务器ip只怕域名
   -P(大写):内定端口
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user>/home/wuxiaoxiao/user.txt
出口内容选拔:
--add-drop-database:每一种数据库创设语句早前拉长drop database语句
--add-drop-table:种种表创立语句在此之前拉长drop table语句
-n:不包蕴数据库的开创语句
-t:不含有数据表的创办语句
-d:不带有数据
出口格式选项:
 --compact:使出口结果简洁
 -c --compact-insert:使出口文件中的insert语句包罗字段名
 -T:将数据库表中的数据备份为单纯的多少文本和建表sql俩个公文
   --田野s-terminated-by=name(域分割符)
   --田野(field)s-enclosed-by=name(域引用符)
   --田野(field)s-optionally-enclosed-by=name(域可选引用符)
   --田野s-escaped-by=name(转移字符)
eg:/usr/bin/mysqldump -u root -h 202.194.132.237 -P 3306 -p BBS user -T ./bak
字符集选项:
--default-character-set=name:设置导出的客商端字符集
eg:mysql -u root -p --compact --default-character-set=utf8 BBS user > test.txt
任何选用:
-F:备份前刷新日志
-l:给具有表加读锁(备份时期接收,使备份的多提辖持后生可畏致性)

二. 使用mysqlbinlog查看日志

--先在test表中插入一条数据退出。
mysql> insert into a values('testbinlog');

-- 查看binlog位置
[root@hsr mysql]# cd /var/lib/mysql
[root@hsr mysql]# ls
mysql-bin.000001  mysql-bin.index    

   2.1 使用mysqlbinlog查看日志 不加任何options参数

[root@hsr ~]# cd /usr/local/mysql/bin
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.000001    

    3522vip 5

        上边的日记文件除了创立表和删除表的sql外,操作数据库的言语都加密了。

  2.2 使用参数"--base64-output=decode-row -v"查看具体的sql语句,如下命令

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001

    3522vip 6
    上航海用教室中 at 291是插入语句的始发地方, at 384是插入语句的甘休地方。借使一而再接二连三该表数据错失,能够凭仗那八个地点实践恢复生机。也足以依据开端时间和竣事作时间间来平复,后边再讲日志时具体介绍。

  2.3  加-d选项,将只呈现对test数据库的操作日志

                   [root@hsr bin]# ./mysqlbinlog   /var/lib/mysql/mysql-bin.000001 -d test

  2.4  加-o选项, 忽视掉日志中的前n个操作。演示下

-- 插入三条数据
INSERT INTO a VALUES('testbinlog2')
INSERT INTO a VALUES('testbinlog3')
INSERT INTO a VALUES('testbinlog4')

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -d test  -o 14

    3522vip 7
    上海体育场合展现日志生成后,从at 898行起初体现。 贰拾肆个操作表示:日志彰显跳过十五个at。
  2.5 加-r选项
    将出口的文本格式日志输出到钦点文件,上面将文件结果输出到文件resultfile中。

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -r resultfile
[root@hsr bin]# more resultfile

    3522vip 8
3522vip 9

  2.6 加-s 将内容展开简易展现

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -s

澳门新葡亰平台官网 ,  3522vip 10

    如上海教室所示,轻便展现后,没有了详细的sql语句。
  2.7 加"--start-datetime--stop-datetime"显示9:00 ~12:00时期的日记

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001  
--start-datetime='2018/08/30 09:00:00' --stop-datetime='2018/08/30 12:00:00'

   3522vip 11
    如上海教室所示:最终显示的岁月截是1535600091, 调换后是2018-08-30 11:34:51。 最初和了结日期能够只写多个。
  2.8 加"--start-position=#和--stop-position=#" 和日期范围相符,可是更标准

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001  --start-position=944

    3522vip 12
  最终官方网址文书档案 mysqlbinlog   

复制代码 代码如下:

备份:
备份全数数据库:
mysqldump -u root -p  --all-database  >  test.sql
备份数据库test
mysqldump -u root -p  test  >  test.sql
 备份数据库test下的temp表:
mysqldump -u root -p  test demp >  test.sql
备份数据库下的持有表为逗号分割的公文,备份到/temp
mysqldump -u root -p test -T /temp --fields-terminated-by ','
完全苏醒:
msyql -u root -p < bakfile
留意:将备份苏醒后数据并残破,还索要将备份后施行的日记举办重做
mysqlbinlog binlog-file | mysql -u root -p***
举个大器晚成体化的mysqldump备份和还原的例证:
早上9点备份数据库
mysqldump -u root -p -l -F test > test.dmp
9点半备份得了,然后想数据库中插入数据
10点数据库倏然故障,数据不能访谈,需求还原备份
mysql -u root -p test < test.dmp
平复后的数码并缺损,9点半安插的数额并从未过来
使用mysqlbinlog复苏自mysqldump备份以来的binlog
mysqlbinlog binlogfilename | mysql -u root -p test
基于时间点过来:
若是中午10点产生了误操作.能够用下边语句实行备份和binlog将数据库复苏到故障前:
mysqlbinlog --stop-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test
跳过故障的时间点,继续推行前面包车型大巴binlog,实现复苏
mysqlbinlog --start-date="2005-04-20 9:59:59" binlogfile | mysql -u root -p test
依附地方苏醒:
mysqlbinlog --start-date="2005-04-20 9:55:59" --stop-date="2005-04-20 10:05:00" binlogfile > test.sql
翻看此文件,找寻出错语句前后的职位号,譬如是368312,368315
mysqlbinlog --stop-position="368312" binlogfile | mysql -u root -p test
mysqlbinlog --start-position="368315" binlogfile | mysql -u root -p test

show binlog events in 'mysql-bin.000016' limit 10;

表的导入和导出:
导出:
    mysqldump -u username -p -T target_dir dbname tablename [options]
options:
   --田野同志s-terminated-by=name(域分割符)
   --田野s-enclosed-by=name(域援用符)
3522vip ,   --田野(field)s-optionally-enclosed-by=name(域可选引用符)
   --田野先生s-escaped-by=name(转移字符)
备份数据库下的全部表为逗号分割的文本,备份到/temp
mysqldump -u root -p -T /temp test --fields-terminated-by ',' --fields-optionally-enclosed-by '"'
导入:
   msyqlimport -u root -p [LOCAL] dbname order_tab.txt [options]
OPTIONS:
   --田野s-terminated-by=name(域分割符)
   --田野(field)s-enclosed-by=name(域征引符)
   --田野(field)s-optionally-enclosed-by=name(域可选援引符)
   --田野先生s-escaped-by=name(转移字符)
eg:mysqlimport -u root -p test order.txt --fields-terminated-by=',' --fields-enclosed-by='"'

reset master 删除全部的二进制日志
flush logs  发生五个新的binlog日志文件

本文来源CSDN博客,转发请评释出处:

show master logs; 只怕 show binary logs; 查看二进制文件列表和文件大小

复制代码 代码如下:

./mysqlbinlog --start-datetime="2012-05-21 15:30:00" --stop-datetime="2012-05-21 16:40:00" /binlog/mysql-bin.000005 > a.log

  1. 要想通过日记复苏数据库,在你的 my.cnf 文件里应该犹如下的概念,log-bin=mysql-bin,这么些是必需的
    binlog-do-db=db_test ,这么些是钦赐哪些数据库须求日志,每行八个,假若不点名的话私下认可正是颇有数据库.

复制代码 代码如下:

[mysqld]
 log-bin=mysql-bin
 binlog-do-db=db_test
 binlog-do-db=db_test2 

3.删减二进制日志:

复制代码 代码如下:

mysql> reset master  (清空全数的二进制日志文件)
purge master logs to 'mysql-bin.000006';  (删除mysql-bin.000006早前的二进制日志文件)
purge master logs before '二〇〇七-08-10 04:07:00'  (删除该日期此前的日记)

在my.cnf 配置文件中[mysqld]中添加:

复制代码 代码如下:

expire_logs_day=3  设置日志的晚点天数,过了钦点的运气,会自行删除

4.上面正是苏醒操作了
 极其提示,mysql每便运营都会再度生成二个近似 mysql-bin.000003 的公文,如若你的mysql天天都要再度启航一遍的话,那时候你就要极度注意不要选错日志文件了。

技巧1:
您能够透过–one-database 参数选择性的卷土重来单个数据库,example在底下,爽吧。
mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd –one-database db_test

技巧2:
假设已经使用过
/usr/local/mysql5/bin/mysqlbinlog –start-date="005-04-20 9:55:00" /var/data/mysql5/mysql-bin.0* > /home/db/tt.sql 相似的话语将日志导成了ASCII文本文件,那么您就足以一贯在phpmyadmin里施行那几个文件,因为它自身正是二个正规的sql文件,比如想让文件之中的一些语句不实践,找到它们删除就可以,然后再放进去施行。

技巧3:
mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd –one-database db_test
这是把mysql-bin.000001那么些二进制文件里的内容转变到ASCII文件(也正是sql语句),直接通过管道操作符 | 传输给 mysql那些顺序,然后过滤掉此外数据库的讲话,只在db_test里执行。

要想鲜明当前的二进制日志文件的文件名,输入下边包车型地铁MySQL语句:

复制代码 代码如下:

SHOW BINLOG EVENTS

  1. 钦赐苏醒时间
    对于MySQL 4.1.4,能够在 mysqlbinlog 语句中经过 –start-date 和 –stop-date 选项钦赐DATETIME格式的起止时间。举个例子表明,假如在后天下午10:00(今日是二〇〇六年四月19日),履行SQL语句来删除多个大表。要想恢复生机表和数码,你能够过来前夜间的备份,并输入:

复制代码 代码如下:

mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd

该命令将恢复生机停止到在 –stop-date 选项中以DATETIME格式给出的日期和时间的持有数据。假如您未曾检测到多少个小时后输入的失实的SQL语句,只怕您想要苏醒前边发生的活动。依据这几个,你能够用起使日期和时间重国民党的新生活运动行mysqlbinlog:

复制代码 代码如下:

mysqlbinlog –start-date="2005-04-20 10:01:00" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd

  1. 点名恢重新初始化置
    也得以利用mysqlbinlog的选项 –start-position 和 –stop-position 来钦点日志地点。它们的效果与利益与起止日选项雷同,分歧的是付出了从日记起之处号。使用日志地方是越来越纯粹的借尸还魂措施,极度是当由于破坏性SQL语句相同的时间发生过多事务的时候。要想分明地点号,能够运维mysqlbinlog找寻施行了不指望的作业的时间节制,但应将结果再一次指向文本文件以便实行自己商议。操作方法为:

复制代码 代码如下:

mysqlbinlog –start-date="2005-04-20" –stop-date="2005-04-20" /var/log/mysql/mysql-bin.000001 > /tmp/mysql_restore.sql

该命令将要/tmp目录创制小的文书文件,将体现实践了错误的SQL语句时的SQL语句。你能够用文件编辑器展开该公文,搜索你不要想再次的说话。要是二进制日志中之处号用于结束和继承上涨操作,应进行讲明。用log_pos加二个数字来标识位置。使用地点号苏醒了以前的备份文件后,你应从命令行输入上边内容:

复制代码 代码如下:

mysqlbinlog –stop-position="368312" /var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd
mysqlbinlog –start-position="368315"/var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd

上边的第1行将苏醒到截至任务截至的保有业务。下风流倜傥行将还原从给定的开端地方直到二进制日志甘休的具备事情。因为mysqlbinlog的出口富含每一种SQL语句记录早先的SET TIMESTAMP语句,恢复生机的数码和有关MySQL日志将反馈专业推行的原时间。

您大概感兴趣的篇章:

  • 教你活动复苏MySQL数据库的日记文件(binlog)
  • MySQL 自动清理binlog日志的法子
  • mysql二进制日志文件苏醒数据库
  • MySQL数据库苏醒(使用mysqlbinlog命令)
  • 演讲mysql之binlog日志以致接纳binlog日志苏醒数据的不二秘技

本文由3522vip发布于网络数据库,转载请注明出处:Mysql 备份与恢复

关键词: 3522vip

上一篇:mysql常用命令

下一篇:没有了