七、linux-mysql下mysql增量备份与恢复

1.备份的意义

     运维工作:保护公司的数据     、  网站7*24小时服务

     但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要。 

2.备份的几个参数

   mysqldump是mysql自带的一个备份呢命令。

   命令:mysqldump -u 用户名  -p  数据库名>备份的文件

  1)导出oldboy库里面的所有表结构和数据: mysqldump -uroot -p'oldboy124' oldboy >/dangjingwei/mysql_bak.sql

  2)导入oldboy库里面的所有表结构和数据:mysql -uroot -poldboy124  oldboy</dangjingwei/mysql_bak.sql

  查看导出的mysql_bak.sql文件:egrep -v "#|\*|--|^$" /dangjingwei/mysql_bak.sql如下,这里有3个点需要说明:

   1. 可以看出,在导出中有drop,那么在导入的时候,如果库中有相应的表,就会删除此表

   2.会有锁表机制,lock,在导入的时候,是禁止别的人写入的

   3.这里可以看到,导入的时候,是一条语句,减少IO输出

  

  3)导出加入B:mysqldump -uroot -p'oldboy124' -B  oldboy >/dangjingwei/mysql_bak_B.sql 最大的特点是加入了库,在导入的时候,直接导入,无需创建库

  4)导入加入B:mysqldump -uroot -p'oldboy124' </dangjingwei/mysql_bak_B.sql

  5)导出加压缩:mysqldump -uroot -p'oldboy124' -B  oldboy|gzip >/dangjingwei/mysql_bak_B.sql.gz

3.mysqldump的原理

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

    物理备份:就是直接对文件进行打包

4.备份多个库:

     命令:mysqldump -u 用户名  -p  数据库名  库名>备份的文件

5.备份单个表:

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

6. 备份数据库/表的表结构

     mysqldump -u 用户名  -p  数据库名 -d   库名  (表名)>备份的文件

7.备份数据库/表的数据

    mysqldump -u 用户名  -p  数据库名 -t   库名  (表名)>备份的文件

8.备份数据库所有库表等为-A,需要bin-log日志切割为-F

   mysqldump -u 用户名  -p  数据库名  -A -B  -F 库名  (表名)>备份的文件

9.备份数据库所有库表日志刷新的位置--master-data增加binlog日志文件名及对应位置点

   mysqldump -u 用户名  -p --master-data=1或者 2   数据库名    >备份的文件

10.关于参数 --single-transaction,适合innodb事务数据库备份

   InnoDB表在备份时,通常启用选项--single-transaction来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:repeatable read,保证在备份期间看不到新的提交的数据

11.恢复/导入:  

       1)source  (库名)sql文件---如果导出的时候有-B则完全可以不用指定库名

       2)mysql -uroot -p'oldboy124'  库名   < sql文件

12.非交互式参数:-e用法

      mysql -uroot -poldboy124 -e "use oldboy;select *from test;"

 

 

 13.数据库的连接情况,在某种情况下,如果慢查询,哪里这里是没有变化的,运维需要抓住,交由开发优化,添加索引。show processlist 查看正在执行的sql语句

[root@djw1 ~]# mysql -uroot -poldboy124 -e "show processlist;"           
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 39 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |

[root@djw1 ~]# mysql -uroot -poldboy124 -e "show full processlist;"
+----+------+-----------+------+---------+------+-------+-----------------------+
| Id | User | Host      | db   | Command | Time | State | Info                  |
+----+------+-----------+------+---------+------+-------+-----------------------+
| 40 | root | localhost | NULL | Query   |    0 | NULL  | show full processlist |
+----+------+-----------+------+---------+------+-------+------------------

 14.查进程的参数show variables,它是mysql的变量,my.cnf里面参数的生效情况。

mysql -uroot -poldboy124 -e "show variables;"---例如my.cnf里面参数的生效情况

  如何不重启数据库让参数生效

   mysql> show variables like 'key_buffer%';

 

mysql> set global key_buffer_size=1024*32;

 

 15.查看mysql的状态status,show status是当前会话的数据库状态信息,常用的是global全局状态,表示查看整个数据库运行状态信息,show golbal status ; 这里有一些计数器和性能参数

mysql -uroot -poldboy124 -e "show global status;"|grep select(等)

 16.mysqlbinlog--》解析mysql的binlog日志

 就是数据目录下的如下文件就是mysql的binlog日志

   mysql-bin.000001

  mysql的binlog日志作用用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录。查询是不记录的。binlog记录的是mysql数据库中的所有的库,如果只是想要恢复其中的一个库,用如下语句:mysqlbinlog  -d oldboy mysql-bin.000020 >oldboy.sql

按照位置截取: 

 mysqlbinlog  mysq-lbin.000020 --start-position=365  --stop-position=456 -r pos.sql

按照时间截取:

 mysqlbinlog  mysq-lbin.000020 --start-datetime='2014-10-16 17:00:11'  --stop-datetime='2014-10-16 17:10:11' -r time.sql

17. master-data参数是非常重要的一个参数,如果恢复主库,可以选择master-data=2,如果是从库,那么需要master-data=1

 

 

 

 

 

     

转载于:https://www.cnblogs.com/dangjingwei/p/11440111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值