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数据库有更新的内容记录。

——————————————————————————————————————————
指定时间和位置点恢复

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

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

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






浙公网安备 33010602011771号