L011-oldboy-mysql-dba-lesson11

 

 

L011-oldboy-mysql-dba-lesson11

 

 

 

[root@ab01 ~]# mysqladmin -i 1 -r status     #mysqladmin监控的命令

Uptime: 674695  Threads: 47  Questions: 1417844  Slow queries: 118  Opens: 102457  Flush tables: 1393  Open tables: 4  Queries per second avg: 2.101

Uptime: 674696  Threads: 47  Questions: 1417844  Slow queries: 118  Opens: 102457  Flush tables: 1393  Open tables: 4  Queries per second avg: 2.101

 

[root@ab01 ~]# mpstat -P ALL 1 1000

Linux 2.6.32-431.el6.x86_64 (ab01.com)  06/16/2016      _x86_64_        (1 CPU)

03:55:19 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

03:55:20 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

03:55:20 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

 

 

 

 

 

特别重点

给出表的数据类型的优化建议,具体百度:PROCEDURE ANALYSE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 MySQL 5.6 基于GTID及多线程的复制详解:

http://freeloda.blog.51cto.com/2033581/1282879

 

 

 

 

 

 

 

 

 

 1.分库分表策略

 

 

出现性能瓶颈的解决思路:

1scale-up:先考虑硬件能否解决。

2scale-out:sharding

 

Scale-up->scale-out->scale-up

 

 

sharding分两种:

1.垂直拆分(功能拆分)

2.水平拆分

 

先做1,在做2

 

水平拆分:

1.hash(uid/mod 4,port: mod 128;总共4*128张表)

2.range(1-1000万,1001-2000万,....)

3.lookup table

>=1000 1port

<1000>=2000 2port

>2000<=3000 4port

4.几种策略混合使用

hash + db(时间维度)

 

UID:

 

port3306

db(tb_1410,tb_1411,tb_1412)

port3307

db(tb_1410,tb_1411,tb_1412)

port3308

db(tb_1410,tb_1411,tb_1412)

port3309

db(tb_1410,tb_1411,tb_1412)

 

 

hash+hash

port3306

db(tb_1,tb_2,tb_3....tb_128)

port3307

db(tb_1,tb_2,tb_3....tb_128)

port3308

db(tb_1,tb_2,tb_3....tb_128)

port3309

db(tb_1,tb_2,tb_3....tb_128)

 

partition key

 

 

 

 

 

mysql监控:

 

1.应用日志(>10s的语句记录下来)

2.mysql监控

3.OS监控

 

 

MySQL监控:

1.是否存活

2.sql_thread, io_thread(yes)

3.second_behied_master(insert heatbeat)

4.使用业务账号进行insert test判断是否可写。

5.pool buffer, select/update/delete/create每秒查询量。

6.连接数.......show global status\G

 

OS监控

1.ping

2.io,swap,disk, cpu, load, net_in/out

 

监控的视角:业务视角,管理员视角

监控数据以API的方式提供,业务可以自己的维度展示。

 

 

 

 

 

MySQL的安全管理

1.服务器端

2.系统级来说。

 

服务器端:

1.使用内网(bind-address=internal ip)

2.username@ip password,权限给最小权限,包括复制账号。

3.要注意备份安全。

4.root一定要设置密码,并且不能在程序里面使用root.

5.数据的导入导出流程。

6.SQL注入方面要建议开发做prepare statement,同时对一些输入框做比较多的判断。

7.用户登录权限限制。

8.重要的数据要加密存储。

 

系统级:

1.账号管理,最好堡垒机。

2.关闭没有的服务。

3.建议iptables开启。

4.时长关注或者订阅安全漏洞报告。

5.密码要复杂,有时可以22换了。

 

 

 

 

 

MySQL升级注意什么?

版本选择:

用最新版本,或使用最多版本。

mysql5.0->mysql5.1->mysql5.5.xx

先把slave升级为高版本,保持和主库replication

然后做切换。

 

如果有问题,需要用逻辑备份导出数据,然后再新版本上恢复。

mysqldump > XXX.sql

mysql> source XXX.sql

 

 

升级步骤:

 

1.利用线上数据测试有没有问题。

2.最好也做一次alter table xxx engine=innodb;

3.mysql55/mysql56目录。

4.mysql_upgrade

5.启动时观察error log

6.如果出现问题,使用老版本启动。

7.集群方面的,先升级slave,再升级主。

8.测试周边工具是否可用。

 

 

 

 

 

09

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 





posted @ 2016-07-07 17:07  柏林之花  阅读(181)  评论(0编辑  收藏  举报