日常运维
DBA运维工作
日常
其它
日常运维工作:
导数据及注意事项
数据修改及注意事项
表结构变更注意事项
percona维护了mysql dba 必看的博客
加权限及注意事项
问题处理(数据库慢?)
小结
不求最快,但求最稳;
例子
1.修改t1表中id<5的数据
1)备份
select * from t1 where id<5 into outfile '/tmp/t1id5.txt';
2)执行修改
begin;
update t1 set b=100,c=100 where id<5;
select * from t1 where id<5;
rollback;/commit;
2.表结构变更
1)5.5版本:
alter table t55 add c1 int;
delete from t55 where id<100;(卡住一会后才执行)
2)5.6版本:
use db1;
alter table t55 add c1 int;
delete from t55 where id<100;(执行顺畅)
alter table t1 modify c1 varchar(90);
delete from t55 where id<100;(卡住一会后才执行)
3)pt-online-schema-change工具
./pt-online-schema-change --user=root --password=123456 --host=localhost --socket=/mysqldata/node4/mysqld.sock D=db55,t=t55 --alter "add c2 int" --print --dry-run
3.加权限
grant select,insert,delete on *.* to netease@'localhost' identified by '163';
#mysql -unetease -p163 --socet=/mysqldata/node3/mysqld.sock --port=4001(登陆成功)
grant select,insert,delete on *.* to netease@'localhost' identified by '123';
#mysql -unetease -p163 --socet=/mysqldata/node3/mysqld.sock --port=4001(登陆失败)
4.导数据
use db1;
select count(*) from t1;(先看一下数据量)
1)mysqldump导出
#mysqldump -uroot -p123456 --single-transaction --socket=/mysqldata/node3/mysqld.sock db1 t1 > /tmp/t1.sql
grant select on *.* to netease@'localhost' identified by '163';
#mysqldump -unetease -p163 --socket=/mysqldata/node3/mysqld.sock db1 t1 > /tmp/t2.sql(报错,没有锁表权限)
#mysqldump -unetease -p163 --single-transaction --socket=/mysqldata/node3/mysqld.sock db1 t1 > /tmp/t2.sql(成功)
#mysqldump -uroot -p123456 --single-transaction --socket=/mysqldata/node3/mysqld.sock db1 t1 -T /tmp
use db1;
2)以file权限into outfile导出数据
select * from t1 into outfile '/tmp/t1_2.txt';
select t1.c,t3,b from t1.id=t3.id into outfile '/tmp/t13.txt';
5.数据库慢问题
../tcpstat --port 4001 -t 1 -n 0(tcpstat,查看每一个tcp连接的响应时间,percona公司出品)
参数调优
为什么要调整参数
优化之前我们需要知道什么
服务器相关的配置
磁盘调度策略--write back
磁盘调度策略--write through
write back 性能高于 write through
而write through 的安全性更高。
RAID
RAID --廉价的存储阵列
RAID0
RAID1
RAID5
RAID10
RAID如何保证数据安全
注意事项
mysql有哪些注意事项
部署mysql的要求
系统调优的依据:监控
网易内部监控的参数:
通常关注哪些mysql status
为什么要调整mysql的参数:
读优化
innodb_buffer_pool_size:
缓存池大小,innodb自己维护一块内存区域完成新老数据的替换
innodb_thread_concurrency:
innodb内部并发控制参数,设置为0代表不做控制
如果并发请求较多,餐宿设置较小,后进来的请求将会排队
写优化
哪些参数有助于提高写入性能
innodb_flush_log_at_trx_commit:0,1,2
n = 0(高效,但不安全--无论服务器宕机或者mysql宕机都会丢数据)
每隔一秒,把事务日志缓存区的数据写到日志文件中,以及把日志文件的数据刷新到磁盘上
n = 1 (低效,非常安全--都不会丢数据)
每个事务提交时候,把事务日志从缓存区写到日志文件中,并且,刷新日志文件的数据到磁盘上,优化使用此模式保证数据安全性
n = 2(高效,但不安全--服务器宕机会丢数据)
每个事务提交的时候,把事务日志数据从缓存区写到日志文件中,每隔一秒,刷新一次日志文件,但不一定刷新到磁盘上,而是取决于操作系统的调度;
sync_binlog
如何保证事务安全
事务提交过程
串行有哪些问题
社区和官方的改进
redo log 的作用
在数据库 崩溃后的数据恢复;
redo log的问题
innodb_io_capacity
insert buffer
将尽可能多的随机请求合并为顺序请求才是提高数据库性能的关键
insert buffer 对二级索引,的增删改,的操作缓存到 insert buffer中,然后将这些随机请求合并成顺序请求;
小结:
总结
本文出处:https://www.cnblogs.com/Aiapple/p/5698157.html