主页 |  MySQL 消息 |  常见问题 |  Feeds |  发布 |  回复 |  归档 |  Aggregate feed RSS 2.0 中文 English Deutsch Español Français Italiano 日本語 Русский Português
表示 进入内容 130510 下一步 30 较早的记录
RDS最佳实践(二)—如何快速平稳的迁入RDS
+0 Vote Up -0Vote Down

在上一篇中大致介绍RDS的一些基本参数,包括数据库类型,版本,存储空间,规格:内存,连接数,io,地域等基本含义,本篇中将介绍如何快速平稳的迁入RDS。

用户在购买完RDS后,接下来就可以开始往RDS迁入数据了。在RDS刚刚对外提供服务的时候,用户只能通过将自己的数据库dump成为sql文件,然后再将sql文件source到RDS中去:数据迁移至RDS-MySQL之使用MySQLdump工具数据迁移至RDS-SQLserver之利用SQL Server客户端工具,这两种方法是最简单的方法,但是局限性也非常的多:

  [获取更多。。]
RDS 高可用保障之 – 隐式主键
+0 Vote Up -0Vote Down

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/database/aliyun_rds_implicit_primary_key.html

原文发在:阿里云产品博客

 

在构建稳定可靠的应用架构时, 数据库是最底层、最稳定的组件之一;而在云环境中,RDS 提供一个7*24小时不间接访问的云服务,可用性达到99.95%.

RDS 采用主备复制架构,用户购买一个实例,RDS都会提供一个性能对等的备库用于保证高可用。 高可用性组件(AURORA)会每3秒检查主库(Master)状态,当发现 Master

  [获取更多。。]
mysql 5.7.3 对union all 的优化
+0 Vote Up -0Vote Down

mysql 5.7 对union all 的优化

一年的时间过得真快,去年这个时候,哥还在上海看mysql 5.6的feature, 今年就在北京看mysql 5.7的feature了。
mysql的union语句一直是被人广为诟病的,因为它不分青红皂白,总是会创建temporary table, 然后把全部数据写入此临时表,再从中读取数据返回给用户。

其实有些情况下,比如UNION ALL且没有最外层排序条件( top level ORDER BY)的时候,完全可以直接从第一张表里面读取数据返回给用户,再从第二张表里读取数据返回给用户…….没有必要使用临时表。

如果能够做到这一点,可以省去创建,写入,读取临时表的过程,可以节省内存或磁盘空间,同时第一张表的数据可以立刻返回给用户。


  [获取更多。。]
Heartbleed安全與MySQL
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/04/heartbleed-secure-mysql.html

以及很多關注,是理所當然的,已取得有關heartbleed最近的bug。

我不認為我應該嘗試添加比那些我認為專家已經提到過得多。 如果你還沒有審查以下職位你應該。





  [获取更多。。]
RDS最佳实践(一)—如何选择你的RDS
+0 Vote Up -0Vote Down

在去年双11之前,为了帮助商家准备天猫双11的大促,让用户更好的使用RDS,把RDS的性能发挥到最佳,保障双11当天面对爆发性增加的压力,不会由于RDS的瓶颈导致系统出现问题,编写了RDS的最佳实践。该文档的内容全部出自于生产实践,但由于篇幅的限制,我只是把其中的概要罗列到了ppt中,并没有展开详细的介绍,后续计划写一个系列,把ppt中的内容进一步展开来讲一讲,也算是对RDS用户的一个交代。

  [获取更多。。]
WebScaleSQL安裝解決了...第2部分
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/04/webscalesql-installation-solved-part-2.html

這是一個後續行動: WebScaleSQL安裝嘗試...第1部分

所以,作為一個典型的怪胎,開發商,白痴或什麼..我沒能RTFM或在這種情況下,



  [获取更多。。]
MySQL的解釋和SQL_NO_CACHE
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/04/mysql-explain-sqlnocache.html

所以今天我幫助的人與他們的數據庫的性能和過一些寫得不好的查詢就跑。 現在,肯定每個人都會犯錯,我們的目標是盡你所能,以避免它們。

因此,只是一對夫婦的有用的提示做你讓一個鬆散的查詢到您的環境之前。

通過首先解釋總是執行查詢。 這樣簡單的事情做的第一個解釋將確認沒有錯別字(因為它不會運行),並允許您優化查詢。
幾個環節已經存在有關如何使用說明:








  [获取更多。。]
Webscalesql代码浏览记录
+0 Vote Up -0Vote Down

浏览了下webscalesql 的代码。目前包含的62个commit分类如下。

 

目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。

本文先简要说明一下当前分支中一些有趣的代码。

 

关于代码洁癖

Steaphan Greene (@fb)同学的代码洁癖从多达二十几个关于testcase和编译参数调整的commit里面可见一斑。这注定webscalesql分支会是一个够干净的分支。从照片上如此粗旷的汉子真是看不出来。 

其中如

  [获取更多。。]
Webscalesql代码浏览记录
+0 Vote Up -0Vote Down

浏览了下webscalesql 的代码。目前包含的62个commit分类如下。

 

目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。

本文先简要说明一下当前分支中一些有趣的代码。

 

关于代码洁癖

Steaphan Greene (@fb)同学的代码洁癖从多达二十几个关于testcase和编译参数调整的commit里面可见一斑。这注定webscalesql分支会是一个够干净的分支。从照片上如此粗旷的汉子真是看不出来。 

其中如 “去掉cmake中的-DWITH_DEBUG参数”这样的commit确实大块人心,原来那些重复的又可能自相矛盾的编译参数真是令人捉急。 

  [获取更多。。]
Webscalesql代码浏览记录
+0 Vote Up -0Vote Down

浏览了下webscalesql 的代码。目前包含的62个commit分类如下。

 

目前还没有能够体现”webscale”特征的代码,不过从roadmap上看,fb回头会继续把一些大动作加进来,可以期待。

本文先简要说明一下当前分支中一些有趣的代码。

 

关于代码洁癖

Steaphan Greene (@fb)同学的代码洁癖从多达二十几个关于testcase和编译参数调整的commit里面可见一斑。这注定webscalesql分支会是一个够干净的分支。从照片上如此粗旷的汉子真是看不出来。 

其中如 “去掉cmake中的-DWITH_DEBUG参数”这样的commit确实大块人心,原来那些重复的又可能自相矛盾的编译参数真是令人捉急。 

  [获取更多。。]
MySQLUserclone或只是複製的MySQL用戶
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/04/mysqluserclone-or-just-copy-mysql-users.html

我最近跨越跑了MySQL的論壇發帖說一直在尋找如何將用戶遷移到新的系統。

雖然這可能是做了許多方法,我想這給了我一個機會發揮和演示的



  [获取更多。。]
MySQL Q&A 解析binlog的两个问题
+0 Vote Up -0Vote Down

连续碰到两个同学问类似的问题,必须要记录一下。

 

问题:

    一个作解析binlog应用的同学发现不论用utf8还是gbk来解析binlog都可能会碰到无法解析的语句,因为有些用户会用utf8,有些用gbk。尤其在处理Query类型的SQL语句中的中文字符,比如建表语句中的中文注释。

     于是他想到用mysqlbinlog来看看binlog里面的内容。

     Mysqlbinlog这个工具的结果带来了新的疑问。

       开一个客户端,执行序列如下:

      set names utf8;

      create table a(c int);

      create table b(c int);

      set names gbk;

      drop table a;

      create table a(c int)comment='测试字符集';

 

  [获取更多。。]
WebScaleSQL安裝嘗試...第1部分
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/03/webscalesql-installation-attempted-part.html

好吧,如果你還沒有看到這個消息還沒有,然後通過各種手段請點擊此鏈接,並閱讀有關WebScaleSQL 。 非常感謝工程師來自Facebook,Twitter和谷歌為他們在這個努力工作的團隊。 我很好奇,想看看這是如何發展多日後,一旦我得到它的工作。



  [获取更多。。]
Percona的雲工具
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/03/percona-cloud-tools.html

所以,我真的很喜歡這個事實,Percona的是深入,並提供解決方案,以幫助分析MySQL的關注或問題的cloud.percona.com

這是很容易安裝。 最快的方法就是安裝了Percona的yum軟件庫,我有



  [获取更多。。]
MySQL和OS X的安裝和刪除
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/03/mysql-and-os-x-install-and-remove.html

因此,這是在參考這個錯誤:
我碰巧在它運行,所以我想通什麼赫克測試它與5.7為好。
我還能夠重現此錯誤與最新的巨幕版。 (在本次測試的mysql-5.7.3-M13的時間)我用的是DMG提供和tar.gz文件。

dyld: Symbol not found: _strnlen
Referenced from:






  [获取更多。。]
ssh连接到ubuntu不能输入中文的问题
+0 Vote Up -0Vote Down

最近装了台ubuntu server做虚拟机,与字符集有关的各种配置都选用了utf8.

ssh连接上去之后,在shell中无法输入中文,复制粘贴也不行,SecureCRT和Bitvise Xterm都是如此。putty没有试过。

在vim中却可以输入中文,写代码虽然不受影响,但是要在shell中grep/ack的时候就有点郁闷 。

一次偶然的机会,为了解决perl 对于locale的报错, 竟然搞定了这个问题。

 

modify@ubuntu:~/apps/6$ ack "template_c" -w
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
 LANGUAGE = "zh_CN:zh",
 LC_ALL = (unset),
 LC_PAPER = "zh_CN",
 LC_ADDRESS = "zh_CN",
 LC_MONETARY = "zh_CN",
 LC_NUMERIC = "zh_CN",
 LC_TELEPHONE = "zh_CN",
 LC_IDENTIFICATION = "zh_CN",
 LC_MEASUREMENT = "zh_CN",
 LC_TIME = "zh_CN",
 LC_NAME = "zh_CN",
 LANG =
  [获取更多。。]
高性能mysql第三版第12-16章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第12-16章读书笔记

12.3.1提升平均失效时间(MTBF)

尽责地做好一些应做的事情:(在precona网站上有两份白皮书,更详细)
测试恢复工具和流程,包括从备份中恢复数据
遵从最小权限原则
保持系统干净,整洁
使用好的命名和组织约定来避免产生混乱
谨慎安排升级数据库服务器
在升级前,使用pt-upgrade之类的工具检查系统
确认基本的服务器配置是正确的
skip_name_resovle
除非能证明有效,否则禁用查询缓存
避免使用复杂的特性,比如复制过滤和触发器,事件。
监控重要的组件和功能,比如磁盘空间和RAID
尽量记录服务器的状态和性能指数,如果有可能尽量久地保存。
定期检查复制完整性














  [获取更多。。]
高性能mysql第三版第11章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第11章读书笔记

11.2.3 向上扩展

即垂直扩展,使用性能更强的硬件。
mysql使用硬件的收益递减点大概是256G内存,32核CPU以及一个PCIe flash硬盘。
在更强大的服务器上,可以运行多个mysql实例(记得绑定到特定的CPU核心上, howto)。

 

11.2.4 向外扩展

即水平扩展:复制,(按功能)拆分,数据分片(sharding).

分片的二种方法:
固定分配 :
比如哈希或者取模。
动态分配 :
建立数据单元和分片的映射关系,比如向user表中增加一个shard_id列用于存储分片号,可以对数据存储位置做细粒度的控制。
也可以把shard_id放在user_id(big int)的高8位。








  [获取更多。。]
高性能mysql第三版第10章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第10章读书笔记

10.1.2复制如何工作

1) 主库把数据更改记录到binary log中,这些记录被称为二进制日志事件
2) 备库的IO线程将主库上的日志复制到自己的中继日志中,主库会启动binlog dump线程与之配合。
如果有多个备库,dump线程会成为主库的负担。
3) 备库的SQL线程读取中继日志中的事件,将其重放到备库数据之上。
这些线程都可以在show processlist时看到。

mysql会按照事务提交的顺序来记录二进制日志,而非每条语句的执行顺序。在记录二进制日志后,主库会告诉存储引擎,可以提交事务了。

10.2.1 创建复制帐号

在每台服务器上都创建复制帐号,便于交换主备库的角色。
grant replication slave, replication client on *.* to …..





  [获取更多。。]
MySQL的計劃停機時間和其他狀態變量進行審查
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/03/planning-mysql-downtime-and-other.html

我們都知道,而MySQL是穩定的,並可以運行了很長一段時間沒有重新啟動。 幾乎每隔一段時間,我們需要重新啟動它調整一些變量或升級雖然。 有些人可能會認為是在一夜之間做到這一點的最好時機,因為他們的用戶都睡著了。 然而,經常通宵還包括備份,並且可以做不同的數據挖掘等其他相關的crontab腳本

所以你怎麼能得到時,你有服務器上的活動最少的指引? 現在,每個應用程序和數據庫是不同的,所以你需要考慮哪些相關的活動正在運行時,不同的時間框架內。



  [获取更多。。]
高性能mysql第三版第9章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第9章读书笔记

9.4.7 什么时候应该使用闪存

固态存储最适合使用在任何有着大量随机IO工作负载的场景下。随机IO通常是由于数据大于服务器的内存导致的。用标准的硬盘驱动器,受限于转速和寻道延迟,无法提供很高的IOPS.

单线程工作负载是另一个闪存的潜在应用场景,因为单线程对延迟相当敏感。

在标准硬盘上存放日志文件通常是一个更好的主意,闪存连续写不比标准硬盘快多少。

9.4.9优化固态存储上的mysql

增加Innodb的IO容量:
增加读写线程数到10或15,也可以在2000~20000范围内调整innodb_io_capacity。

让innodb日志更大:


  [获取更多。。]
高性能mysql第三版第8章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第8章读书笔记

8.1 mysql配置的工作原理

查看mysqld默认会加载哪些配置文件:
/path/to/mysqld –verbose –help | grep -A 1 “Default options”

set一个变量为DEFAULT值:
把这个值赋给会话级变量可以把变量改为使用全局值; 把这个值赋给全局变量会比较糟糕,可以设置这个变量为编译内置的默认值(不一定是在配置文件中指定的值)。
sort_buffer_size 控制排序操作的内存大小,会一次性分配全部大小的内存,应该在配置文件里把它设置的不太大,如果某些查询确实需要更大的排序缓存,那么
可以在执行前增大sort_buffer_size的值,执行完之后恢复DEFAULT。
read_buffer_size与tmp_table_size也同上。

把配置文件加入 svn。

8.2




  [获取更多。。]

高性能mysql第三版第7章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第7章读书笔记

7.1.4 什么情况下会出现问题

NULL值会使分区过滤无效。比如partition by range year(col)或者to_days(col)的时候,如果col值为null或者非法的时候,记录都会存放到第一个分区。
而在col上进行查询的时候,mysql都会检查两个分区。
所以可以创建一个无用的第一分区:partition p_nulls values less than(0).

7.1.5 查询优化

explain partitions select xxxx 可以查看优化器是否执行了分区过滤。
查询的时候,如果在col上使用了函数,那么将无法过滤分区。

分区的最理想情况是只有一个分区及其索引是热点,并且这个分区及索引都能在内存中。

7.4.4 在存储过程中保留注释

mysql的命令行客户端会自动过滤掉注释。




  [获取更多。。]
高性能mysql第三版第6章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第6章读书笔记

6.2.1 是否向数据库请求了不需要的数据

例如:在用户评论的时候需要查询用户头像的URL,那么某用户多次评论的时候,可能就会反复查询这个数据。缓存起来,或者在查询之前对uid去重。

6.3.2 切分查询

如果要删除大量数据,可以分批删除,这个参见 common_schema。

6.4.1 mysql客户端、服务端通讯协议

$r = mysql_query(“select * from HUGE_TABLE”, $ilnk);
while( ($row = mysql_fetch_array($r)) !== FALSE) {
//do sth
}

在mysql_query()之后,PHP已经将整个结果集缓存到内存中了。所以即使下面的while循环比较慢,也和mysql没什么关系了。
所以这样做PHP会占用大量内存? 不会的。

6.4.2 查询缓存

列表in()的比较:





  [获取更多。。]
2014中华数据库与运维安全大会介绍
+0 Vote Up -0Vote Down

【导读】
自2009年于上海举办技术会议以来,一直坚持公益性且技术干货为主的特点,在2009年至2011年底之间的三年期间一直是IT168坚持真诚奉献,后因公司被收购等因素不得不放弃华东地区的免费技术活动,自接手技术会议以来,得到很多朋友和企业的支持,使我们华东地区的技术会议得以继续举办,并且一届比一届更好。随着会议规模的扩大,其他地区的(尤其是华南地区和华北地区)会议参与者逐年增加,在2013年11月16日,正式更名会议为中华架构师大会,以及中华数据库与运维安全大会。2014年5月24日,我们将在上海举办2014中华数据库与运维安全大会,精彩内容请勿错过。

【会议介绍】


  [获取更多。。]
高性能mysql第三版第5章读书笔记
+0 Vote Up -0Vote Down

高性能mysql第三版第5章读书笔记

5.1.1) 索引的类型

B-Tree索引
如果查询中有某个列的范围查询(比如like x%),则其右边的所有列都无法使用索引,感觉不是很给力。

哈希索引
单点查询极快,无法范围查询,无法排序,无法部分列匹配。
应用场景:

1) 数据仓库的星型schema, 求详情。
2) 伪哈希索引: 存储url时, 如果直接在url字段做B-Tree,索引会非常大。可以再多增加一个字段,保存url的crc32,然后在crc32上面做B-Tree索引。
如果有冲突的话,只按照crc32查询,会返回多行记录。
但是用md5或者sha1又太长了,可以自己实现一个hash函数,返回整数,而不是字符串。
提到了FNV64,求详情。

3) memory








  [获取更多。。]
高性能mysql第三版第1~4章读书笔记
+0 Vote Up -0Vote Down
说明:
 读书笔记只记录我不太熟悉的内容,熟悉的就不记录了,所以对各位读者来说,没有太大意义。 感谢新公司提供这本书,虽然有点老了。

第一章读书笔记 mysql架构与历史

1.1 mysql 逻辑架构

去掉了查询缓存的简单架构:

客户端 -> [连接/线程处理->解析器->优化器] -> 存储引擎

1.3 事务

ACID

  • 原子性 Atomicity 一个事务必须被视为不可分割的最小工作单元。 事务中的操作要么全部提交,要么全部回滚。
  • 一致性 Consistency 数据库总是从一个一致性的状态,进入另外一个一致性的状态。
  • 隔离性 Isolation 一个事务所做的修改在最终提交以前,对其他事务是不可见的。
  • 持久性 Durability
  [获取更多。。]
评: PHP foreach 是如何遍历数组的
+0 Vote Up -0Vote Down

评: PHP foreach 是如何遍历数组的

在qq群中看到下面的文章:

http://www.blogkun.com/php/2014/02/08/how-foreach-work/

作者在文中介绍了array在PHP中的结构(zval):HashTable.
然后罗列了若干test case,从不同角度去理解foreach的机制:

reset();
while (get_current_data(&data) == SUCCESS) {
	move_forward();
	code();
}

结论是:

1) 数组的refcount__gc为1,is_ref__gc为0,那么foreach并不会复制zval;
2) 数组的refcount__gc>1,is_ref__gc为0,那么foreach将会复制zval;
3) 数组的is_ref__gc为1,那么foreach并不会复制zval;

看完文章之后,我对结论 2) 提出了更深层次的疑问,也就是作者文中的[附加的一个问题]:


  [获取更多。。]
用你的指標,即使一個varchar | |字符
+0 Vote Up -0Vote Down
Original post: http://anothermysqldba.blogspot.com/2014/01/use-your-index-even-with-varchar-char.html

最近,我看到的一個帖子forums.mysql.com網站: 如何快速的搜索結果在300萬記錄?

  [获取更多。。]
mymysql与go-mysql-driver的一个区别
+0 Vote Up -0Vote Down

今天要写个工具就想顺便学下go。网上翻了下发现用比较多的是mymysql和go-mysql-driver。

  这两个驱动网上比较的文章也有些了,不过都没有提到一个点,个人觉得是很重要的,记录一下。

  

       先看使用go-mysql-driver的例子。

   db,_:=sql.Open("mysql",connect_string)

   db.Query("set binlog_format=row")

 

   rows,_:=db.Query("select @@binlog_format")

   forrows.Next(){

     varvstring

     rows.Scan(&v)

     fmt.Println(v)  // 输出是MIXED (global值)

   }  

   rows.Close()

   db.Close()

 

 从上面的输出可以看到,set语句无效。

  [获取更多。。]
表示 进入内容 130510 下一步 30 较早的记录

Planet MySQL © 1995, 2014, Oracle Corporation and/or its affiliates   Legal Policies | Your Privacy Rights | Terms of Use

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.