1.备份类型
log: hdd
data :ssd
2.数据库工具
3.逻辑备份和物理备份
,备份和导出都慢,缓冲池有污染。
逻辑备份:把所有的命令转换成sql语句。
修改配置文件:
3.1MySQLDUMP
-A 备份所有
-B 备份哪个数据库
--master-data=1 同步
#备份 数据库表 test 到aaa 保存到文本 backup.sql中
mysqldump --single-transaction -B test aaa >backup.sql
内容:
备份参数:
1.备份成文件,里面就是sql语句
2.routine:
3.trigger 触发器
4.event: 定时任务
5.-B 数据库
1.有-B 表示备份数据库 test 为 数据库 aaa 备份的结果是:backup.sql
tar czf backup20170509.tar.gz backup.sql
lz4_decompress
qpress
2.只备份一张表的话:
没有-B 表示备份的是数据库test 下面的表aaa
3.直接输出为一个备份文件,且是压缩过的。
4.-w 备份条件 -w"C=12"
3.2 备份示例
=1记录所有操作.
3.3xtrabackup
4.导入导出
从表sbtestl 中导出数据到 sbtest.dat,id <1000000;
设置文件: set global secure_file_priv='/tmp/';
打开文件: vim /etc/my.cnf
重启mysql
1.选择数据库sbtest
2.选择数据表,导出数据。
3.导出的目录: /tmp/下
4.1导出
4.2导入
5.性能优化
MYSQL复制
6.Mysql日志
物理复制:数据一致。
逻辑一致: 100万行,但数据不一定一致。
二进制日志:
是否打开二进制日志?
vim /etc/my.cnf
log_bin=bin //二进制日志都是以bin 为开头的
cd /mdata/mysql_test_data/
bin.000099 6位-7位 不会循环
bin.0000100
1.生成日志
1.操作行为:显示日志:show master status;
2.刷新日志:flush binary logs;
3.操作行为:显示日志 show master status
2.查看日志内容:
原始日志:
结束:rotate
表中插入2个数据,
未操作前:
操作以后 事务变成487 产生了333个字节。
查看日志 show binlog events in 'bin.000025';
1.事件类型说明:
query:执行sql语句
table_map:id=284
write_rows:插入记录 不是sql语句
Xid:提交,事务号
2.解析日志:mysqlbinlog bin.000025
这行记录:base64方便传输
看具体内容的命令:
通过帮助查找参数:mysqlbinlog --help | less
--base64-ouput=never 表示不输出。
--base64-ouput=decode-rows -v 表示解析每行的数据。
这不是sql语句,执行不了的。
insert不行
replace一条记录:值已经改了。
查看 :mysqlbinlog --base64-output=decode-rows -v bin.000025
mysqlbinlog --base64-oytput=decode-rows -vv bin.000025
insert into a values(400,400);
mysqlbinlog --base64-output=decode-rows -v bin.000026
delete from a where a<400;
query开始
Write_rows 变成 Delete_rows:
update a set b=500 where b=400;
缺点:大。
优点:一致。
set binlog_format='statement';
update a set b=500 where b=400;
看日志只能看到每行的记录,但是不能看到执行的sql语句。如何知道每行操作的sql语句?
设置参数为1
示例:
用数据库 aaa,
1.插入数据(100,100)
2.插入数据(200,200)
3.更新 a 设置b=400
日志:
在写之前有个rows_query类型