- 博客(132)
- 资源 (1)
- 收藏
- 关注
转载 在Linux 下 用HAProxy给MySQL做负载均衡
写在前面:由于mysql master 主机上的xinet传给Haproxy的状态不稳定,haproxy会不停的切换mysql主机,造成网站应用反应慢,建议做mysql主从服务器者谨用(用mysql-proxy读写分离代替),mysql cluster方案可以用。1. 添加监控MySQL状态的端口在db服务器上(每台都一样)安装xinetd # yum instal
2015-05-15 16:53:56
551
转载 阅读xtrabackup代码的一点笔记
xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(),这里做一些阅读代码时的笔记。 xtrabackup backup的线程模型:1. 一个log拷贝线程;2. n个ibd文件拷贝线程;3. 一个io监控线程;
2015-05-04 19:44:47
844
转载 mysql主备库数据不一致的原因和解决方案
主备数据不一致常见原因1 备库写数据 2 执行non-deterministic query 3 回滚掺杂事务表和非事务表的事务4 binlog或者relay log数据损坏应对措施1 禁止修改备库数据2 采用row-based replication3 避免同一个事务中同时引用innodb和myisam表4 开启binlog checksum其
2015-05-04 10:49:36
2913
转载 MySQL 复制延迟
MySQL复制被普遍认为是十分有效的,主服务器进行更改后,从服务器可在几秒内做出相应的改动。但如果发生两者之间同步缓慢的问题, 那么主要有以下两个原因:从结点磁盘问题: 复制操作对每个数据库都是由一个线程来完成,通常执行变更时的滞后是由磁盘延迟引起的。在这种情况下,您应该考虑使用SSD加速这个过程。 带宽低/网络延迟高: 如果两个服务器位于远程位置(高延迟的情况下)或服务器之间的存
2015-04-30 11:58:17
477
原创 利用pt-table-checksum做主从一致性校验
主从数据的一致性校验是个头疼的问题,偶尔被业务投诉主从数据不一致,或者几个从库之间的数据不一致,这会令人沮丧。通常我们仅有一种办法,热备主库,然后替换掉所有的从库。这不仅代价非常大,而且类似治标不治本的方案,让人十分不安。因此我们需要合适的工具,至少帮我们回答下面三个问题:是从库延迟导致了用户看到的数据不一致,还是真的主从数据就不一致?如果不一致,这个比例究竟多大?下次还会出现吗?
2015-04-29 13:44:37
1524
原创 MySQL搭配XFS文件系统优势最大
来自国外问答SNS网站Quora的一个问题:XFS、ZFS和ext3这3个文件系统哪个能够与MySQL产生最佳的性能?对此,来自Facebook的资深数据库专家Domas Mituzas给出了自己的解答,他认为MySQL最适合XFS文件系统。 在XFS文件系统的Linux版本发布之前,选择适合的Linux文件系统很简单,追求原始性能通常倾向于使用ReiserFS,而重视数据完整性则首 选
2015-04-29 10:07:36
1752
原创 ERROR 2006 (HY000) at line xx: MySQL server has gone away
1.执行批量的MYSQL语句,例如备份恢复的时候,时间过长。 对应:修改my.cnf中的wait_timeout和interactive_timeout变量 在一些不便修改的情形下,如租用的空间,可以采取sql语句修改,如何做呢? 解决办法找到my.ini文件添加一句max_allowed_packet=16M,如果不行将16M再加大加大wait_timeo
2015-04-29 09:48:39
658
原创 查看MYSQL数据库中所有用户及拥有权限
查看MYSQL数据库中所有用户mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;+---------------------------------------+| query |+-
2015-04-28 15:55:36
522
原创 pt-table-checksum工具使用报错
今天同事在用 percona toolkit 工具中的 pt-table-checksum 对主从数据库进行校验,提交命令后,一直提示下面的信息:Pausing because Threads_running=0看字面意思是在提示当前活跃线程数为0,但为什么不继续执行呢。这个提示信息有点含糊其辞,该工具是用Perl写的,因此直接打开看脚本跟踪一下,大概就明白怎么回事
2015-04-28 14:32:24
927
转载 MySQL 温故而知新--Innodb存储引擎中的锁
最近碰到很多锁问题,所以解决了后,仔细再去阅读了关于锁的书籍,整理如下:1,锁的种类Innodb存储引擎实现了如下2种标准的行级锁:? 共享锁(S lock),允许事务读取一行数据。? 排它锁(X lock),允许事务删除或者更新一行数据。 当一个事务获取了行r的共享锁,那么另外一个事务也可以立即获取行r的共享锁,因为读取并未改变行r的数据,这种
2015-04-28 14:01:24
314
转载 MySQL 数据库设计初步规范V1.0
数据库设计规范:1,表设计规范1.1关于表设计a) 表名、列名必须有注释。b) 命名应使用富有意义的英文词汇或者缩写,多个单词组成的,全部大写,以"_"分隔开来,只能使用英文字母,数字和下划线,不留空格。比如USER_DETALL,不允许使用关键字TYPE或者STATUS等来作为字段名。c) 命名长度不
2015-04-28 14:00:21
368
转载 MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
前言: 关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,mysql没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题,下面通过存储过程来实现。1,建立测试表和数据:DROP TABLE IF EXISTS csdn.channel; CREATE TABLE csdn.channel (
2015-04-28 13:59:45
548
转载 一个比较复杂的多次拆分字符串的存储过程
自己写的特殊拆分函数如下: create or replace function FN_SPLIT_STR_2(var_str in varchar2)return varchar2/* 有一张表 t1,里面有个字段叫c3,存的是所有店铺的点位信息。现在需要一个存储过程,将所有的记录的c3字段的坐标值都缩小3倍,写入c字段内容举例为 220.25 257,2
2015-04-28 13:57:55
557
转载 MySQL5.6.12造成CPU的使用率 2000%的原因
Top得出CPU使用率超高: top - 16:41:04 up 184 days, 21:31, 2 users, load average: 19.97, 18.38, 18.36Tasks: 584 total, 1 running, 583 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.0%sy, 41.2%n
2015-04-28 13:56:46
430
转载 MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL
-- MySQL分组排序取前N条记录的最简洁的单条sql。USE test;DROP TABLE IF EXISTS test;CREATE TABLE test ( id INT PRIMARY KEY, cid INT, author VARCHAR(30)) ENGINE=MYISAM;INSERT INTO test V
2015-04-28 13:56:16
376
转载 MySQL存储过程-->通过游标遍历和异常处理迁移数据到历史表
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表。DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx`$$ CREATE PROCEDURE `pro_xx`()BEGIN DECLARE p_oalid INT DE
2015-04-28 13:55:57
392
转载 关于MySQL Query Cache的一些交流心得
今天线上MySQL 出现内存使用率报警,就去查了下mysql内存使用的参数,重点是缓存,关于innodb_buffer_pool_size以及query cache的使用。query_cache_type 默认是打开的,而且缓存区query_cache_size默认大小是32M,通常建议不超过256M大小,可以用过查询cache参数来看具体值:mysql> s
2015-04-28 13:54:31
354
转载 MySQL存储过程-->长字符串扯分
DELIMITER $$ -- 分隔符USE`test`−−DROPPROCEDUREIFEXISTS‘prosplit‘ -- 如果已经存在则删除procCREATE PROCEDURE `test`.`pro_split` (varchar rids)BEGIN DECLAREpo INT DEFAULT 0; -- 定义一个位置点
2015-04-28 13:53:43
433
转载 Kill掉MySQL中所有sleep的client线程
写了一个脚本,run这个脚本,就可以kill掉MySQL中所有sleep的client线程vim killsleep.sh#It is used to kill processlist of mysql sleep#!/bin/shwhile :do n=`mysqladmin processlist -uadmin -pxxxxx|grep -i sleep
2015-04-28 13:52:57
398
转载 自增字段 auto_commit的研究分析
MySQL自增字段,自增字段计数器在主存储里面,不在硬盘上(This counter is stored only in main memory, not on disk)。1,添加表,设立自增主键字段create table t(id int primary key auto_increment, name varchar(3000)) engine=innodb;2,可以让
2015-04-28 13:52:23
309
转载 MySQL 存储过程带in和out参数以及PHP,PB如何调用的小例子
最简单的例子:mysql> DELIMITER $$ mysql> USE test $$ Database changed mysql> DROP PROCEDURE IF EXISTS `sp_add`$$ Query OK, 0 rows affected (0.00 sec) mysql> CREATE PROCEDURE sp_add
2015-04-28 13:50:00
360
转载 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。
清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。环境介绍 线上磁盘空间不足,truncate了许多能动的表,磁盘空间还是占据了87%,我们的nagios报警阀值是80%。所以不断的还会收到email以及短信报警。需要根据时间字段date_created清理,但是在设计之初由于
2015-04-28 13:49:39
316
转载 修改MySQL的时区,涉及参数time_zone
首先需要查看mysql的当前时区,用time_zone参数mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_
2015-04-28 13:48:21
2342
转载 手机在线更新系统MySQL数据库服务器参数优化mycnf,16G内存8核CPU,
务场景: 后台支持手机在线更新系统,db服务器内存16G,8核,dell的pc服务器。qps: 200个左右 tps: 1个左右 一分钟50几个sort_buffer_size = 32M 大了, 8M即可read_buffer_size = 32M 大了,8M即可read_rnd_buffer_size = 16M 大了,8M即可table_open
2015-04-28 13:48:13
382
转载 MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (1)
公司线上在用partition,有一个表的分区字段错了,需要重建,结果发现没有办法像修改主键字段或者修改索引字段那样直接一条sql搞定。而是需要建临时表,有down time,所以去仔细看了文档,研究下partition的细节问题。自己公司线上采取的时候,凌晨1点业务低峰期,执行:建立临时表CREATE TABLE tbname_TMP ( SHARD_ID IN
2015-04-28 13:46:59
868
转载 MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (2) --> 子分区以及对录入Null值的处理情况.
-- MySQL分区, 子分区以及对录入Null值的处理情况. 看完官方文档做的笔记.-- KEY PartitioningPartitioning by key is similar to partitioning by hash, except that where hash partitioning employs a user-defined expression, the h
2015-04-28 13:46:33
860
转载 MySQL 用数字辅助表实现复杂的列变行
某天,QQ上一个圈子内的网友发来一个求助信息 :PropID name Amount3 元宝 22 乐豆 3能否用一条sql 写成输出,就是复制对应Amount 的条数 :PropID name3 元宝3 元宝2 乐豆2 乐豆2 乐豆 [注释]:
2015-04-28 13:44:41
340
转载 MySQL EXPLAIN 命令详解学习
MySQL EXPLAIN 命令详解MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的。这条命令并没有提供任何调整建议,但它能够提供重要的信息帮助你做出调优决策。1 语法MySQL 的EXPLAIN 语法可以运行在SELECT 语句或者特定表上。如果作用在表上,那么此命令等同于DE
2015-04-28 13:43:24
212
转载 load data 方式导入的数据不可以用binlog日志进行恢复,因为binlog里面不产生insert sql语句。
QQ群里面有人问起这个问题: 用load data 导入数据的时候,在binlog文件中记录的不是insert 语句,这样的话,如果用load data 导入数据,当需要恢复数据库的时候 binlog恢复就不行了 load data local infile '/root/table.txt' into table test.table ;生成binlog 日志
2015-04-28 13:43:11
678
转载 Effective MySQL之SQL语句最优化--索引
1 两个索引取并集组合ALTER TABLE album ADD INDEX name_release (name,first_released); EXPLAIN SELECT a.name, ar.name, a.first_released FROM album a INNER JOIN artist ar USING (artist_id)
2015-04-28 13:42:37
282
转载 mysqlslap 性能测试工具
-- ===================-- mysqlslap 性能测试工具-- ===================常用参数--concurrency #代表并发数量,多个可以用逗号隔开。例如:--concurrency=50,200,500--engines #代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innod
2015-04-28 13:40:42
426
转载 MySQL DB Server 上面安装 sysbench 作压力测试
2015-02-14记录:附带最新的安装记录(centos6.4):一:bazaar安装方式(扩展后的多表测试)1、安装bazaar工具yum install bzr2、获取源码bzr branch lp:sysbench3、编译安装cd sysbench/; ./configure --prefix=/usr/local/sysbench --with-mys
2015-04-28 13:40:28
744
转载 MySQL服务器性能(通过Sysbench测试cpu、io、内存以及mysql服务等)
-- Sysbench测试Sysbench的安装请参考:http://blog.youkuaiyun.com/mchdba/article/details/89512891 CPU测试 sysbench采用寻找最大素数的方式来测试CPU的性能[root@xx sysbench-0.4.12]# sysbench --test=cpu --cpu-max-prime=2000 r
2015-04-28 13:38:48
593
转载 如何远程清理Production上48组MySQL DB Server上面的过期失效的备份!
如何远程清理48组MySQL DB Server上面的过期实效的备份! 刚开始想到一个个从control控制机器ssh进去,rm 掉,然后exit,再通过control机器ssh进去,再rm再exit,这样的话岂不是要操作48次ssh以及exit,48台还能接受,如果是480台,4800台呢,any way ? OK,我想到了,写一个shell脚本,在control机器上面远程
2015-04-28 13:37:07
642
转载 SQL优化,百万级2张表关联,从40分钟到3秒的历程
表结构如下: CREATE TABLE `deviceback` ( `id` int(11) NOT NULL AUTO_INCREMENT, `imei` varchar(100) NOT NULL COMMENT '手机唯一标识', `mid` varchar(50) DEFAULT NULL, `mac` varchar(100
2015-04-28 13:36:40
27921
1
转载 MySQL中3种清除binlog的方法!
-- mysql delete log online 1 mysql命令purgemysql> purge master logs to "mysql-bin.000410";Query OK, 0 rows affected (3.71 sec) 2 手动rm清理 rm -rf mysql-bin.00040*;vim mysql-bin.
2015-04-28 13:33:59
482
翻译 想从事DBA工作,该挑选哪一款数据库产品
知乎问这原题:现在主流数据库有很多,作为一个学生以后想从事dba的工作,应该学哪一种呢? 标题修改为:想从事DBA工作,该如何挑选一款数据库产品 mysqlops回答: 不管你想选择哪种数据库产品,有些基础理论知识必须打扎实,尤其是:数据库系统概论、Linux操作系统、SQL标准语言、数据结构(重点排序算法)、开发语言(至少懂几款脚本语言,S
2015-04-28 13:33:08
561
转载 innobackupex-1.5.1: Too many command line arguments
[root@xxxxxxopt]# /usr/bin/innobackupex-1.5.1 –-apply-log /opt/back_data/ --defaults-file=/opt/mysql/product/mysql/etc/my.cnfinnobackupex-1.5.1: Too many command line arguments 还没有找到问题所在
2015-04-28 13:31:57
1608
转载 计算MySQL的内存峰值公式
-- 计算MySQL的内存峰值公式,计算所有的连接满了的情况下:select (@@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_si
2015-04-28 13:29:39
569
转载 MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法
某个初级dba误删index,mysql漫山遍野全是10S以上的慢sql,mysql服务被hang住了,而且慢sql不断在增加中,如果手动在mysql界面kill的话,根本来不及,这个时候,shell就必须要出手了,如下的shell脚本,大家可以参考: #It is used to kill processlist of mysql sleep #!/bin
2015-04-28 13:28:59
383
calico-3.1.yaml
2018-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人