备份 安全 高可用 监控 优化

逻辑备份 物理备份

mysql 有两种数据库引擎:一种是 MyISAM[my-z[ei]m] ,一种是 InnoDB [ in-no-db]
           

MySQL服务性能监控分析与优化是永恒的主题,

用sysbench进行数据准备、测试 5.1 性能状态关键指标 性能分析与优化 三分配置七分优化

一、基本操作

1)查看当前mysql状态

   mysql> show status;

2)查看mysql的参数

   show variables;

   修改mysql的参数

   show variables like 'max_connect%';

   set global max_connections = 1000;

3)查看当前mysql服务器的队列

   mysql> show processlist;

4)创建一个普通用户并授权

   grant all on db1.* to 'user3'@'%' identified by '231222';



MYSQL数据库服务CPU高问题分析与优化

MySQL性能优化的最佳20+条经验


主从复制原理


主从一致性


查看锁

MySQL 中有两个存储引擎 MyISAM 和 InnoDB

MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都 无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。


#/bin/sh 

#检测mysql server是否正常提供服务 
mysqladmin -u sky -ppwd -h localhost ping 
#获取mysql当前的几个状态值 
mysqladmin -u sky -ppwd -h localhost status 
#获取数据库当前的连接信息 
mysqladmin -u sky -ppwd -h localhost processlist 
#获取当前数据库的连接数 
mysql -u root -p123456 -BNe "select host,count(host) from processlist group by host;" information_schema 
#显示mysql的uptime 
mysql -e"SHOW STATUS LIKE '%uptime%'"|awk '/ptime/{ calc = $NF / 3600;print $(NF-1), calc"Hour" }' 
#查看数据库的大小 
mysql -u root -p123456-e 'select table_schema,round(sum(data_length+index_length)/1024/1024,4) from information_schema.tables group by table_schema;' 
#查看某个表的列信息 
mysql -u <user> --password=<password> -e "SHOW COLUMNS FROM <table>" <database> | awk '{print $1}' | tr "\n" "," | sed 's/,$//g' 
#执行mysql脚本 
mysql -u user-name -p password < script.sql 
#mysql dump数据导出 
mysqldump -uroot -T/tmp/mysqldump test test_outfile --fields-enclosed-by=\" --fields-terminated-by=, 
#mysql数据导入 
mysqlimport --user=name --password=pwd test --fields-enclosed-by=\" --fields-terminated-by=, /tmp/test_outfile.txt 
LOAD DATA INFILE '/tmp/test_outfile.txt' INTO TABLE test_outfile FIELDS TERMINATED BY '"' ENCLOSED BY ','; 
#mysql进程监控 
ps -ef | grep "mysqld_safe" | grep -v "grep" 
ps -ef | grep "mysqld" | grep -v "mysqld_safe"| grep -v "grep" 
#查看当前数据库的状态 
mysql -u root -p123456 -e 'show status' 
#mysqlcheck 工具程序可以检查(check),修 复( repair),分 析( analyze)和优化(optimize)MySQL Server 中的表 
mysqlcheck -u root -p123456 --all-databases 
#mysql qps查询  QPS = Questions(or Queries) / Seconds 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Questions"' 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Queries"' 
#mysql Key Buffer 命中率  key_buffer_read_hits = (1 - Key_reads / Key_read_requests) * 100%  key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100% 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Key%"' 
#mysql Innodb Buffer 命中率  innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100% 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Innodb_buffer_pool_read%"' 
#mysql Query Cache 命中率 Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100% 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Qcache%"' 
#mysql Table Cache 状态量 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Open%"' 
#mysql Thread Cache 命中率  Thread_cache_hits = (1 - Threads_created / Connections) * 100%  正常来说,Thread Cache 命中率要在 90% 以上才算比较合理。 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Thread%"' 
#mysql 锁定状态:锁定状态包括表锁和行锁两种,我们可以通过系统状态变量获得锁定总次数,锁定造成其他线程等待的次数,以及锁定等待时间信息 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "%lock%"' 
#mysql 复制延时量 在slave节点执行 
mysql -u root -p123456 -e 'SHOW SLAVE STATUS' 
#mysql Tmp table 状况 Tmp Table 的状况主要是用于监控 MySQL 使用临时表的量是否过多,是否有临时表过大而不得不从内存中换出到磁盘文件上 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Created_tmp%"' 
#mysql Binlog Cache 使用状况:Binlog Cache 用于存放还未写入磁盘的 Binlog 信 息 。 
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Binlog_cache%"' 
#mysql nnodb_log_waits 量:Innodb_log_waits 状态变量直接反应出 Innodb Log Buffer 空间不足造成等待的次数
mysql -u root -p123456 -e 'SHOW /*!50000 GLOBAL */ STATUS LIKE "Innodb_log_waits'