MySQL热备工具xtrabackup笔记

http://www.percona.com/doc/percona-xtrabackup/

安装方式中,yum 安装相对比较方便。

对于mysqld_multi方式的,单个my.cnf中多个mysql实例配置的方式,需要参数–defaults-group=”mysqld3307″

例如:

innobackupex –user=root –sock=/data/dbs/testinnodb/mysql.sock –slave-info –defaults-file=”/etc/my.cnf” –defaults-group=”mysqld3307″ /data/tmp/test/

将在 /data/tmp/test 目录下生成一个以时间为名的备份文件夹。

恢复:
innobackupex –apply-log –user=root –defaults-file=/etc/my.cnf –defaults-group=”mysqld3307″ –no-lock /data/tmp/test/2012-08-02_09-23-14

innobackupex –copy-back –user=root –defaults-file=/etc/my.cnf –defaults-group=”mysqld3307″ –no-lock /data/tmp/test/2012-08-02_09-23-14

对于innodb,一定要先apply-log,否则会报告log sequence错误,导致“unknown engine innodb”之类的错误。

如果是单mysql实例配置,无需–defaults-group参数。

继续阅读“MySQL热备工具xtrabackup笔记”

sysbench小工具使用笔记

sysbench是一个系统测试工具,可以测试数据库oltp性能,cpu, io, mutex等系统性能。
安装:
从http://sourceforge.net/projects/sysbench/下载。
解压缩。安装的时候,如果它报告找不到mysql的库,比如mysql.h等, 需要加上参数:
./configure –with-mysql-includes=/data/software/mysql/include/ –with-mysql-libs=/data/software/mysql/lib/
在make的时候如果不停的报告:X–tag=CC: command not found错误,那么需要执行:

libtoolize --force --copy
./autogen.sh

make install

使用:
必要参数是systench –test=<> <command>。
其中test的值可选:fileio, cpu, memory, threads, mutex, oltp
不论test选什么,通用的参数有:
继续阅读“sysbench小工具使用笔记”

mysql innodb引擎中的死锁

本文缩写的情况,均指的是innodb存储引擎。 myisam不支持事务,且其锁的级别是表级锁,几乎不会产生死锁。
根据官方文档中的描述,死锁并不可怕,也并不是那么dangerous的。只要发生的不是特别频繁。减少死锁产生的几种手段:
可以使用 SHOW ENGINE INNODB STATUS 命令。其中包含有最近一次检测到的死锁的信相关息。用以诊断程序中潜在的发生死锁的原因。
使事务尽可能小。尽早提交或回滚事务。
当操作多张表或同一张表中的多条数据的时候,尽可能以相同的顺序操纵。(比如多个事务要修改a和b两张表的数据,那么总是先修改a后修改b,避免并发执行时事务1锁定了a,等待b,事务2锁定了b等待a,发生死锁情况)。
合理的索引,使数据扫描更快,减少死锁产生的可能性。

需要注意的是,即时只是insert或delete一条记录的时候,也是有可能产生死锁的。因为这些操作本身并不是原子性的。因为这些操作需要对索引中的记录加lock(有可能是多个索引)。

关于死锁的官方文档的描述在这里:http://dev.mysql.com/doc/refman/5.5/en/innodb-deadlocks.html

(全文完)

使用jdbc,如何正确的在mysql中使用utf8mb4编码

utf8编码时不支持emoji表情的。要使用emoji表情,就需要用utf8mb4编码。 在客户端使用jdbc的情况下,如何正确的使用utf8mb4?

应该在服务端配置character-set-server=utf8mb4, 在Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

需要使用emoji的字段设置类型为:
`user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

参考: http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-charsets.html

(全文完)

MySQL操作笔记

由于平时碰数据库不是很多,所以很多命令经常会忘记。每次都去google或去翻看文档,也是一件比较耗时的事情。不如把平时遇到的操作,都记录下来,以后可以查询。

嗯,今天要做的事情是把一个名字叫quad的数据库中的一张quad_ignore_user表的结构导出出来,但不需要包括数据:

mysqldump -h10.11.21.57 -uquad -p quad quad_ignore_user –no-data > ignore_user.sql

如果是导出数据,但不要包含表结构,那么需要把–no-data参数换成-t或–no-create-info

继续阅读“MySQL操作笔记”

MySQL 5.5 安装笔记

个人比较喜欢下载源代码编译安装的方式。
5.5开始用cmake,和以前不太一样了。

如果还没有cmake和c++编译,先执行: yum install gcc gcc-c++ yum install cmake

tar zxvf mysql-5.5.21.tar.gz
cd mysql-5.5.21

groupadd mysql
useradd -g mysql mysql

cmake -DCMAKE_INSTALL_PREFIX=/data/software/mysql
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/data/software/mysqldata

继续阅读“MySQL 5.5 安装笔记”