mysql 5.1跟mysql 5.0有很多配置参数已经更改了,甚至最新的mysql 5.1.57和早一些的mysql 5.1,比如mysql 5.1.1x之类的,都有不少配置参数的更改,真是搞不懂为什么?其实实现的功能基本是一致的。

贴上最近做的一个Mysql 5.1.57主备的安装和配置在这里,备忘:

我这两台机器的内存都很大,每台48G。不过目前的数据量还很小。

安装:

# yum install gcc gcc-c++
# groupadd mysql
# useradd --shell /sbin/nologin -g mysql mysql
# tar zxvf mysql-5.1.57.tar.gz
# cd mysql-5.1.57

# ./configure --prefix=/data1/app/services/mysql51
            --localstatedir=/data1/app/services/mysql51/data
            --with-charset=utf8
            --with-collation=utf8_general_ci
            --with-extra-charsets=gb2312,gbk,utf8
            --with-plugins=max-no-ndb
            --with-unix-socket-path=/data1/app/tmp/mysql.sock
            --with-mysqld-user=mysql
            --enable-local-infile
            --enable-assembler
            --with-client-ldflags=-all-static
            --with-mysqld-ldflags=-all-static
            --enable-thread-safe-client

# make

# make install

阅读全文

innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。

innodb_additional_pool_size 这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。

innodb_log_file_size 对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。

innodb_log_buffer_size 默认值对于多数中等写操作和事务短的运用都是可以的。如果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了。小的运用可以设更小一点。

innodb_flush_log_at_trx_commit (这个很管用) 抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。

阅读全文

mysql over ssh 访问

先来假设一个场景,在机房有几台服务器,分别是:

mysql:192.168.1.10 web:192.168.1.20 test:192.168.1.30

有如下限制:

  1. test可以ssh到web,不能ssh到mysql
  2. web不能ssh到mysql
  3. web可以访问mysql
  4. test不能访问mysql
  5. mysql用户没有show databses权限,也就是用不了phpmyadmin
  6. 在公司只能ssh到test

而现在你在公司,除了先ssh到test,再从test ssh到web,用命令行访问mysql,还有什么办法? 答案可能只有mysql over ssh tunnel了。

阅读全文

MySQL查询缓存变量解释

MySQL查询缓存变量解释:

Qcache_free_blocks:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。

Qcache_free_memory:缓存中的空闲内存。

Qcache_hits:每次查询在缓存中命中时就增大

Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。

阅读全文

虚拟机,2cpu,1.5G内存

mysql 测试:

mysql MySQL 5.0.77 X86_64:

[root@mysqltest sql-bench]# ./run-all-tests –user=’root’ –password=’xxxxxx’        
Benchmark DBD suite: 2.15
Date of test:        2010-01-07 14:09:15
Running tests on:    Linux 2.6.18-164.9.1.el5 x86_64
Arguments:          
Comments:           
Limits from:        
Server version:      MySQL 5.0.77/
Optimization:        None
Hardware:           

alter-table: Total time: 29 wallclock secs ( 0.04 usr  0.03 sys +  0.00 cusr  0.00 csys =  0.07 CPU)
ATIS: Total time:  8 wallclock secs ( 2.55 usr  0.24 sys +  0.00 cusr  0.00 csys =  2.79 CPU)
big-tables: Total time:  8 wallclock secs ( 1.30 usr  0.23 sys +  0.00 cusr  0.00 csys =  1.53 CPU)
connect: Total time: 80 wallclock secs (16.38 usr 13.74 sys +  0.00 cusr  0.00 csys = 30.12 CPU)
create: Total time: 606 wallclock secs ( 2.26 usr  1.55 sys +  0.00 cusr  0.00 csys =  3.81 CPU)
insert: Total time: 1047 wallclock secs (165.57 usr 52.63 sys +  0.00 cusr  0.00 csys = 218.20 CPU)
select: Total time: 65 wallclock secs (15.76 usr  3.41 sys +  0.00 cusr  0.00 csys = 19.17 CPU)
transactions: Test skipped because the database doesn’t support transactions
wisconsin: Total time: 19 wallclock secs ( 1.54 usr  0.24 sys +  0.00 cusr  0.00 csys =  1.78 CPU)

All 9 test executed successfully

阅读全文

作者的图片

阿辉

容器技术及容器集群等分布式系统研究

容器平台负责人

上海