mysql系列之5.mysql备份恢复
备份数据: mysqldump
#mysqldump -uroot -p123456 test > /test_bak.sql
#egrep -v "#|\*|--|^$" /test_bak.sql
指定对应字符集
#mysqldump -uroot -p123456 --default-character-set=utf8 test > /test_bak.sql
加 -B 参数: 备份多个库 (增加创建数据库和连接数据库的命令)
#mysqldump -uroot -p123456 -B test > /test_bak.sql
#mysqldump -uroot -p123456 -B test test2 > /test_bak.sql
加 --compact 参数: 减少备份文件的输出 (忽略drop table, 忽略set names, 忽略add locks, 忽略disable keys), 所以这个参数生产环境不用它
#mysqldump -uroot -p123456 --compact -B test > /test_bak.sql
备份单个表: 不能加 -B 参数
#mysqldump -uroot -p123456 test tb2 > /test_bak.sql
备份所有表: -A 参数
#mysqldump -uroot -p123456 -A -B test > /test_bak.sql
只备份数据: -t 参数
#mysqldump -uroot -p123456 -t -B test tb2 > /test_bak.sql
只备份结构: -d 参数
#mysqldump -uroot -p123456 -d -B test > /test_bak.sql
锁表: -x 锁定所有表, -l 只读锁表
innodb事务数据库备份: --single-transaction
#mysqldump -uroot -p123456 -A -B --master-data=2 --events --single-transaction|gzip > /all.sql.gz
myisam数据库库备份:
#mysqldump -uroot -p123456 -A -B --master-data=2 -x --events|gzip > /all.sql.gz
增量备份: 刷新binlog, -F 参数
#mysqldump -uroot -p123456 -F -B test > /test_bak.sql
增量备份: 不刷新binlog
#mysqldump -uroot -p123456 --master-data=1 test > /test_bak.sql
--master-data参数详解
mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。默认情况下这个值是1
当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。
分库备份: .sh脚本
#!/bin/sh
MYUSER=root
MYPASS
MYLOGIN="mysql -u$MYUSER -p$MYPASS"
MYDUMP="mysqldump -u$MYUSER -p$MYPASS -B"
MYDUMP2="mysqldump -u$MYUSER -p$MYPASS"
DATABASE="$($MYLOGIN -e "show databases;"|egrep -vi "database|infor|perfor")"
for dbname in $DATABASE
do
MYDIR=/mysqlbak/$dbname
[ ! -d $MYDIR ] && mkdir -p $MYDIR
$MYDUMP $dbname|gzip > $MYDIR/${dbname}_$(date +%F).sql.gz
for tbname in `$MYLOGIN -e "show tables from $dbname;"|sed '1d'`
do
$MYDUMP2 $dbname $tbname|gzip >$MYDIR/${dbname}_${tbname}_$(date +%F).sql.gz
done
done
恢复数据
#mysql -uroot -p123456 -e "use test;drop table te;"
#mysql -uroot -p123456 test < /test_bak.sql
查看mysql连接
两次show之后, 发现还有语句在呆着, 说明有慢查询, 可以用 show full processlist 来查看完整的sql语句, 注意查看 sleep / lock 是否过多
#mysql -uroot -p123456 -e "show processlist;"
查看mysql状态: 加上global表示整个数据库, 否则表示当前会话
#mysql -uroot -p123456 -e "show global status;"
不重启修改mysql参数
mysql> set global key_buffer_size=1024*1024*32;
mysql> show variables like 'key_buffer%';
mysql批量插入测试数据
一、建表语句
use test; create table student( Sno ) NOT NULL COMMENT '学号', Sname ) NOT NULL COMMENT '姓名', Ssex ) NOT NULL COMMENT '性别', Sage ) ' COMMENT '学生年龄', Sdept ) default NULL COMMENT '学生所在系别', PRIMARY KEY (Sno) ) ENGINE DEFAULT CHARSET=utf8;
二、批量插入数据脚本
#!/bin/bash
MysqlLogin="mysql -uroot -p123456"
i=
while true
do
${MysqlLogin} -e "insert into test.student values ("$i",'oldboy"$i"','m','21','computer"$i"');"
((i++))
;
done
mysqlbinlog(增量恢复)
# vi /etc/my.cnf
log-bin=binlog_file //去掉注释
# /etc/init.d/mysqld restart
mysql> insert into ****** #插入测试数据
cd /usr/local/mysql/data/
mysqlbinlog binlog_file.000001 #查看文件内容
cp binlog_file* /bak/mysql/
mysqlbinlog /bak/mysql/binlog_file.000004 --start-date="2010-09-29 18:00:00" --stop-date="2010-09-29 23:00:00" -r time.sql
mysqlbinlog /bak/mysql/binlog_file.000004 --start-position=370 --stop-position=440 -r pos.sql
mysqlbinlog /bak/mysql/binlog_file.000004 -d test -r test.sql
mysqlbinlog /bak/mysql/binlog_file.000004 -h 192.1681.102 -r 102.sql
mysqlbinlog /bak/mysql/binlog_file.000004 -p 3306 -r 3306.sql
mysqlbinlog /bak/mysql/binlog_file.000004 --server-id=1 -r s1.sql
以上6个条件可以排列组合, 作为恢复数据的条件
binlog的文件内容, 示例:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#160712 20:00:27 server id 1 end_log_pos 107 Start: binlog v 4, server v 5.5.32-log created 160712 20:00:27 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
y66FVw8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADLroVXEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#160712 20:02:51 server id 1 end_log_pos 351 Query thread_id=1 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1468378971/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
CREATE TABLE `te` (
`id` int(4) NOT NULL AUTO_INCREMENT ,
`a` char(5) NOT NULL,
`b` char(5) NOT NULL,
`c` char(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `index_a_b_c` (`a`(3),`b`,`c`)
)
/*!*/;
# at 351
#160712 20:03:43 server id 1 end_log_pos 419 Query thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1468379023/*!*/;
BEGIN
/*!*/;
# at 419
#160712 20:03:43 server id 1 end_log_pos 524 Query thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1468379023/*!*/;
insert into te values(1,'aaa','bbb','ccc')
/*!*/;
# at 524
#160712 20:03:43 server id 1 end_log_pos 551 Xid = 14
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
;
mysql系列之5.mysql备份恢复的更多相关文章
- mysql用户授权及数据备份恢复
用户授权与权限撤销 修改数据库管理员从本机登陆的密码测试: mysqladmin -hlocalhost -uroot -p password "新密码" Enter passwo ...
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
- MySQL for OPS 06:备份恢复
写在前面的话 人在河边走,湿鞋是早晚是事情,操作服务器,数据库也一样.谁也不知道自己哪一天控制不住自己就手贱.这时候有两个东西能救我们,一是备份,二是 bin log,bin log 前面讲了,但是 ...
- mysql系列之6.mysql主从同步
普通文件的数据同步 nfs: 网络文件共享 samba: 共享数据 定时任务或守护进程结合 rsync.scp inotify(sersync)+rsync 触发式实时数据同步 ftp数据同步 ssh ...
- mysql系列之2.mysql多实例
使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install n ...
- mysql系列之4.mysql字符集
针对mysql语句的临时办法: 先查看下mysql的各种编码设置情况, 如果结果显示有几项的编码不一致, 请先调整linux的系统编码 mysql> show variables like 'c ...
- mysql系列六、mysql创建用户、授权、备份及恢复命令
一.创建用户和授权 下面的操作中,其中someusername为用户名,somepassword为密码,somedbname为数据库名 1.创建用户 create user 'someusername ...
- MySQL基于mysqldump及lvmsnapshot备份恢复
一.备份对象 数据 配置文件 代码:存储过程,存储函数,触发器 跟复制相关的配置 二进制日志文件 二.备份工具 mysqldump:逻辑备份工具 InnoDB热备.MyISAM温备.Aria温备 备份 ...
- 关于MySQL 事务,视图,索引,数据库备份,恢复
/*创建数据库*/ CREATE DATABASE `mybank`;/*创建表*/USE mybank;CREATE TABLE `bank`( `customerName` CHAR(1 ...
随机推荐
- 2016集训测试赛(二十六)Problem A: bar
Solution 首先审清题意, 这里要求的是子串而不是子序列... 我们考虑用1表示p, -1表示j. 用sum[i]表示字符串前\(i\)的前缀和. 则我们考虑一个字符串\([L, R]\)有什么 ...
- 转:GEF 英文全称Graphical Editor Framework
http://blog.csdn.net/chancein007/article/category/2713827
- Linux下设置开机启动
新配置了vsftpd 需要设置ftp开机启动,linux新手,还不是很熟悉linux下的操作! 查询后发现命令是: chkconfig vsftpd on chkconfig命令用于设置运行级别 ...
- Arc Object开发,概述2
简介 Esri公司推出的ArcGIS产品是一个非常强大的体系,里面包含ArcGIS Desktop.ArcGIS Server.ArcGIS Engine.ArcSDE.ArcGIS Online等, ...
- retain和copy还有assign的区别
1. 接触过C,那么假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给 (assign)了b.此时a和b指向同一块内存,请问当a不再需 ...
- Linux 双网卡 不同网段 网络互通
环境如下: 现状:一台linux主机上有两个网卡eth0 和eth1 ,机器能访问192网的服务资源,但不能访问10网段的资源. 要求:linux能通过eth1访问10网段的资源 路由: 网卡: 操作 ...
- 在网页中插入flash播放器,播放flv视频
效果图如下: 所用代码如下: <object id="FLVPlayer" height="480" width="640" code ...
- 【温故知新】——BABYLON.js学习之路·前辈经验(二)
前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...
- 【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之静态页面
一.引言 接着上一篇,京东个人中心的所有功能数据分析完成之后,现在需要把静态页面完成,实现过程中要用到的技术有:Bootstrap.html5表单新特性等.除此之外,还要利用Node.js的Expre ...
- Ubuntu 14.04 使用VirtualBox 4.3.10 虚拟 Windows 7
Ubuntu 14.04 尽管不错,可是有些事仅仅能在Windows下才干完毕,所以在 Ubuntu 下利用虚拟机软件Oracle VirtualBox,虚拟安装个Windows系统是个不错的选择. ...