MySQL备份-增量备与恢复命令实战-第七

备份单个数据库多种参数使用

mysql 数据库自带了一个很好用的备份命令,mysqldump 它基本使用如下:

语法:

mysqldump -u 用户名 -p  数据库名 > 备份文件名

范例1:备份名字为oldboy库

a、查看备份前数据

b、执行备份

 [root@puppet ~]# mysqldump -uroot -p'12345' oldboy > /tmp/mysql_oldboy.sql

 

 c、检查备份结果 

[root@puppet ~]# egrep -v "#|\*|--|^$" /tmp/mysql_bak.sql 

 

 

  

当导出备份出现乱码时,需要在备份时指定字符集导出

使用--default-character-set=latin1

导出避免出现 乱码情况

mysqldump -uroot -p'oldboy123' --default-character-set=latin1 oldboy > /tmp/mysql_bak.sql

 

添加 了 -B参数后,在恢复时,不用创建库,直接恢复,还原。

 ————————————————————————————————————————————————————————————

 

备份输出进行 gzip 压缩

 

 

 

 

逻辑备份

mysqdump 命令备份过程实际上就是把数据从mysql库以逻辑的sql 语句形式直接输出或者生成 备份文件过程。

恢复就是把备份sql语句重新执行一遍过程。

物理备份

直接对磁盘打包备份

——————————————————————————————————————————————————————

备份多个数据库

[root@puppet ~]# mysqldump -uroot -p'12345' -B oldboy oldboy_back | gzip >/tmp/mysql_bakc.sql.gz

 

-B 参数说明

提示:-B参数是关键,表示 接多个库,并且增加use db,和create database db 的信息

 

——————————————————————————————————————————

如何做分库备份

  分库备份实际 上就是执行一个备份语句备份一个库,如果数据库有多个库,就执行多条相同

备份单个库的备份语句就可以备份多个库了,注意每个库都 可以用对应备份库作为库名,结尾加

.sql 。备份多个库的命令如下

 

 

 

 [root@puppet ~]# mysql -uroot -p'12345' -e "show databases;"| grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -p'12345' -B \1|gzip > /tmp/\1.sql.gz #g'| bash

 

 

 备份脚本

 

 ————————————————————————————————————

备份单个表

语法:msyqldump -u 用户名 -p 数据库名 表名 > 备份文件名

mysqldump -u root -p oldboy student >/opt/table.sql

 

 

备份多个表

语法:mysqldump -u 用户名 -p 数据库名  表名1 表名2 >备份文件名

mysqldump -uroot -p'oldboy123' oldboy course > /tmp/tow_table.sql

企业需求:一个库里有大表有小表,有时可能需要只恢复某个小表,上述多表备份文件很难拆开,

就会像没有分库那样导致 恢复某个小表很麻烦。

那么又如何进行分表备份,如下,和分库思想一样,每执行一条语句备份一个表,生成 不同数据文件

————————————————————————————————————————————

备份数据库表结构,不包含数据,参数添加 -d 就可以备份时实现 只包含表结构 不备份数据内容。

mysqldump -uroot -p'12345' -d oldboy > /tmp/old_bak.sql

 

 

刷新binlog参数 ,

-F 切割 binlog

-A

-master-data

 

 

mysqldump -uroot -p'12345'  -A -B  -F --events | gzip > /tmp/a.sql.gz

 

 备份时参数--master-data = 1 自动找到binlog位置

 

 做增量恢复时,从该分割日志以后进行增量恢复。

 

 

mysqldump关键参数说明

1、 -B 指定多个库,增加建 库和 use 语句

2、--compact 去掉注释,适合高度输出 ,生产不用。

3、-A 备份所有库

4、-F 刷新binlog日志

  --master-data 增加binlog日志名及对应位置点

5、-x ,--lock-all-tables

6、-l , --lock-tables Lock all tables for read

7、-d 只备份表结构

8、-t 只备份数据

10、--single-transaction 适合innodb事务数据库备份。

myisam 备份   以下针对一般数据备份

msyqldump -uroot -p'old123' -A -B --master-data =1  -x --events | gzip >/opt/all.sql.gz

 

innodb 备份:推荐使用,因为5.5后使用该引擎

msyqldump -uroot -p'old123' -A -B --master-data =1  --events --single-transaction | gzip >/opt/all.sql.gz

 

如果两个引擎都 有,就以myisam 为主备份

 

 

 

参考:

 http://imysql.cn/2008_10_24_deep_into_mysqldump_options

 ___________________________________________________

恢复数据库

sourse命令

在数据库内操作

 

 

 

分库分表备份数据 后恢复,

要通过 脚本读指定的库和表,调用mysql命令恢复

——————————————————————————————————————————

-e 在mysql 外面进行执行mysql 命令

 

 show full processlist 查看msyql 执行语句情况, 

 

检查 慢查询 等情况问题

 

————————————————————————————————————————

 

 show variables

 

 查看当前会话状态

 

 全局状态

 

 

 ——————————————————————————————

 修改全局变量参数,先在mysql内修改,然后在配置文件中进行修改。这样

不重启也生效。

 

 

 

 

 

 

 

 

 ——————————————————————————————————————————————————————

mysqlbinlog ->解释mysql 的 binlog 日志

 

mysql 的 binlog 日志 是

 

作用是用来记录mysql 内部增删改查等对mysql数据库有更新的内容记录。

 

 

——————————————————————————————————————————

指定时间和位置点恢复

 

 日志中有位置和时间点,在恢复时要使用这个功能恢复。

 

可以指定时间恢复,但时间不准确,因为数据库每时间有很多语句执行。

 

 

 

 以下命令就是通过 位置和时间进行恢复

 

 

 

 

 

 

 

 

posted @ 2017-02-03 16:56  杨坚  阅读(49)  评论(0)    收藏  举报