好大的风

2010年03月19日

使用xtrabackup在线备份数据库并增加辅库-快速参考

Filed under: 你要去哪里 — 好大的风 @ 5:48 下午

xtrabackup quickstart

使用xtrabackup在线备份数据库。
使用上面的备份文件增加一个Slave数据库。
现有环境:

现有一个数据库环境,信息如下:

Master:代号A
IP地址:192.168.115.149
端口:3340

Slave:代号B
IP地址:192.168.115.150
端口:3340
配置文件:/apps/mysql_3340/my.cnf
socket路径:/tmp/mysql_3340.sock
通过本地socket访问用户名:root
通过本地socket访问密码:无

新搭建数据库:代号C

以下实践都在B数据库所在的机器上操作。

xtrabackup相关程序下载地址:

http://www.percona.com/percona-builds/XtraBackup/XtraBackup-1.0/binary/xtrabackup-1.0.tar.gz

下载后解压,将三个可执行文件放到/usr/local/sbin/即可。

当前目录:/apps/backup/

使用innobackupex脚本对数据库进行备份,相关参数可以通过–help参数了解。
以下程序输出经过筛选,略去不必要信息:
[root@slave150 backup]# innobackupex-1.5.1 –defaults-file=/apps/mysql_3340/my.cnf –slave-info –socket=/tmp/mysql_3340.sock 3340

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy.
All Rights Reserved.
…版权信息…

innobackupex-1.5.1: Using mysql  Ver 14.14 Distrib 5.1.43, for unknown-linux-gnu (x86_64) using readline 5.1
innobackupex-1.5.1: Using mysql server version Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.

innobackupex-1.5.1: Created backup directory /apps/backup/3340/2010-03-19_16-51-33
100319 16:51:33  innobackupex-1.5.1: Starting mysql with options: –unbuffered –socket=/tmp/mysql_3340.sock –
100319 16:51:33  innobackupex-1.5.1: Connected to database with mysql child process (pid=25246)
100319 16:51:37  innobackupex-1.5.1: Connection to database server closed

100319 16:51:37  innobackupex-1.5.1: Starting ibbackup with command: xtrabackup  –defaults-file=”/apps/mysql_3340/my.cnf” –backup –suspend-at-end –target-dir=/apps/backup/3340/2010-03-19_16-51-33
innobackupex-1.5.1: Waiting for ibbackup (pid=25252) to suspend
innobackupex-1.5.1: Suspend file ‘/apps/backup/3340/2010-03-19_16-51-33/xtrabackup_suspended’

xtrabackup  Ver 1.0 Rev 113 for 5.0.84 unknown-linux-gnu (x86_64)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /apps/mysql_3340
xtrabackup: Target instance is assumed as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 5242880
xtrabackup: use O_DIRECT
>> log scanned up to (23 3600029795)
Copying ./ibdata1
     to /apps/backup/3340/2010-03-19_16-51-33/ibdata1
>> log scanned up to (23 3600060713)
>> log scanned up to (23 3600087337)
>> log scanned up to (23 3600121153)
        …done
Copying ./xjqy2/configs.ibd
     to /apps/backup/3340/2010-03-19_16-51-33/xjqy2/configs.ibd
Copying ./game/answer_count.ibd
     to /apps/backup/3340/2010-03-19_16-51-33/game/answer_count.ibd
        …done

100319 16:56:03  innobackupex-1.5.1: Continuing after ibbackup has suspended
100319 16:56:03  innobackupex-1.5.1: Starting mysql with options: –unbuffered –socket=/tmp/mysql_3340.sock –
100319 16:56:03  innobackupex-1.5.1: Connected to database with mysql child process (pid=25269)
>> log scanned up to (23 3602333556)
100319 16:56:07  innobackupex-1.5.1: Starting to lock all tables…
>> log scanned up to (23 3602373264)
>> log scanned up to (23 3602458529)
>> log scanned up to (23 3602458529)
100319 16:56:19  innobackupex-1.5.1: All tables locked and flushed to disk

100319 16:56:19  innobackupex-1.5.1: Starting to backup .frm, .MRG, .MYD, .MYI,
innobackupex-1.5.1: .TRG, .TRN, .ARM, .ARZ and .opt files in
innobackupex-1.5.1: subdirectories of ‘/apps/mysql_3340′
innobackupex-1.5.1: Backing up files ‘/apps/mysql_3340/mysql/*.{frm,MYD,MYI,MRG,TRG,TRN,ARM,ARZ,opt,par}’ (65 files)
innobackupex-1.5.1: Backing up files ‘/apps/mysql_3340/xjqy2/*.{frm,MYD,MYI,MRG,TRG,TRN,ARM,ARZ,opt,par}’ (29 files)
innobackupex-1.5.1: Backing up files ‘/apps/mysql_3340/game/*.{frm,MYD,MYI,MRG,TRG,TRN,ARM,ARZ,opt,par}’ (23 files)
100319 16:56:19  innobackupex-1.5.1: Finished backing up .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ and .opt files

innobackupex-1.5.1: Resuming ibbackup

xtrabackup: The latest check point (for incremental): ’23:3602295070′
>> log scanned up to (23 3602458752)
xtrabackup: Stopping log copying thread.
xtrabackup: Transaction log of lsn (23 3599800027) to (23 3602458752) was copied.
100319 16:56:22  innobackupex-1.5.1: All tables unlocked
100319 16:56:22  innobackupex-1.5.1: Connection to database server closed

innobackupex-1.5.1: Backup created in directory ‘/apps/backup/3340/2010-03-19_16-51-33′
innobackupex-1.5.1: MySQL binlog position: filename ‘mysql-bin.000005′, position 989572152
innobackupex-1.5.1: MySQL slave binlog position: master host ’192.168.115.149′, filename ‘mysql-bin.000006′, position 690623257
100319 16:56:22  innobackupex-1.5.1: completed OK!

此时在备份的目录下会有一个xtrabackup_slave_info文件,是设置Slave的命令:

[root@slave150 2010-03-19_16-51-33]# cat xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000006′, MASTER_LOG_POS=690623257

恢复备份文件:
[root@slave150 2010-03-19_16-51-33]# innobackupex-1.5.1 –apply-log –defaults-file=/apps/backup/3340/2010-03-19_16-51-33/backup-my.cnf /apps/backup/3340/2010-03-19_16-51-33/

100319 16:57:48  innobackupex-1.5.1: Starting ibbackup with command: xtrabackup  –defaults-file=”/apps/backup/3340/2010-03-19_16-51-33/backup-my.cnf” –prepare –target-dir=/apps/backup/3340/2010-03-19_16-51-33

xtrabackup  Ver 1.0 Rev 113 for 5.0.84 unknown-linux-gnu (x86_64)
xtrabackup: cd to /apps/backup/3340/2010-03-19_16-51-33
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2998272, start_lsn=(23 3599800027)
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2998272
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by –use-memory parameter)
InnoDB: Log scan progressed past the checkpoint lsn 23 3599800027
100319 16:57:48  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files…
InnoDB: Doing recovery: scanned up to log sequence number 23 3602458752 (99 %)
100319 16:57:49  InnoDB: Starting an apply batch of log records to the database…
InnoDB: Progress in percents: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
下面两行是说,B数据库作为Slave时,所同步的A库日志的位置。
如果新的C库作为A的Slave,那么应该配置这个日志位置。
这个位置也是和上面的xtrabackup_slave_info是一致的。
InnoDB: In a MySQL replication slave the last master binlog file
InnoDB: position 0 690623257, file name mysql-bin.000006

下面两行是说,B数据库自己的binlog位置。如果新的C库作为B的Slave,那么应该配置这个日志位置。
InnoDB: Last MySQL binlog file position 0 989572152, file name ./mysql-bin.000005
100319 16:57:52  InnoDB: Started; log sequence number 23 3602458752

[notice (again)]
  If you use binary log and don’t use any hack of group commit,
  the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 989572152, file name ./mysql-bin.000005

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
100319 16:57:52  InnoDB: Starting shutdown…
100319 16:57:54  InnoDB: Shutdown completed; log sequence number 23 3602458752

100319 16:57:54  innobackupex-1.5.1: Restarting xtrabackup with command: xtrabackup  –defaults-file=”/apps/backup/3340/2010-03-19_16-51-33/backup-my.cnf” –prepare –target-dir=/apps/backup/3340/2010-03-19_16-51-33
for creating ib_logfile*

xtrabackup  Ver 1.0 Rev 113 for 5.0.84 unknown-linux-gnu (x86_64)
xtrabackup: cd to /apps/backup/3340/2010-03-19_16-51-33
xtrabackup: This target seems to be already prepared.
xtrabackup: notice: xtrabackup_logfile was already used to ‘–prepare’.
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 5242880
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by –use-memory parameter)
100319 16:57:54  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait…
100319 16:57:54  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait…
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
100319 16:57:54  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files…
InnoDB: In a MySQL replication slave the last master binlog file
InnoDB: position 0 690623257, file name mysql-bin.000006
InnoDB: Last MySQL binlog file position 0 989572152, file name ./mysql-bin.000005
100319 16:57:54  InnoDB: Started; log sequence number 23 3602459148

[notice (again)]
  If you use binary log and don’t use any hack of group commit,
  the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 989572152, file name ./mysql-bin.000005

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
100319 16:57:54  InnoDB: Starting shutdown…
100319 16:57:55  InnoDB: Shutdown completed; log sequence number 23 3602459148
100319 16:57:55  innobackupex-1.5.1: completed OK!

至此,数据文件已经可用。
将准备好的数据移动到合适的位置,做好新的配置文件,即可启动数据库。
新的配置文件与原有Slave配置文件基本一致,需要注意修改几个参数:
server-id必须修改,否则会与原有主库产生冲突。
如果在同一台机器上进行测试,端口和socket文件必须修改。

启动后,通过mysql客户端连接新的数据库,执行xtrabackup_slave_info中的命令,执行时应该加上master_host等参数,然后执行start slave即可。

2010年03月16日

我非常喜欢的几个欧美MV

Filed under: 你要去哪里 — 好大的风 @ 1:47 下午

第一个是超级创新、让人无比震惊、具有改革开放敢做敢闯大无畏精神的Lady GaGa的《Bad Romance》:
(这个自己去看吧,不在这里放了)

第二个是89年出生的准90后小美女的Taylor Swift的《You Belong to Me》:

稍后我还会专门介绍更加精彩的 李贞贤 的MV,敬请期待。

2010年03月15日

MySQL数据库的查询日志设置

Filed under: 你要去哪里 — 好大的风 @ 1:56 下午

前些时候,曾经记录过一个号称是“绝世秘籍”的抓取MySQL查询语句的方法,原理是实用tcpdump来捕获客户端与服务器之间的通讯,然后经过一些整理得到结果。
今天翻看MySQL 官方文档的时候,发现了更好的办法:

自从MySQL 5.1.6版本开始,有几个日志相关参数可以动态控制:
1,general_log ,是否打开一般日志,这个日志几乎包括所有的增删改查语句。
2,log_output,日志的目的地,可以选择文件:FILE,数据表:TABLE,或者两者同时都记录。
3,general_log_file,一般日志文件名。
4,slow_query_log,是否打开比较耗时的查询的语句。
5,slow_query_log_file,耗时查询日志的文件名。

以上几个参数都是可以动态调整的,也就实说,可以随时打开和关闭日志,而不重启MySQL服务。

比如我们现在需要抓取所有的查询,用来分析应用程序,可以打开general_log并保存到数据表中:
set GLOBAL general_log=’ON’;
set GLOBAL log_output=’TABLE’;

然后就可以从mysql.general_log表中看到所有的查询语句。

一句话,很方便很强大。

更多的相关信息参见官方文档:

http://dev.mysql.com/doc/refman/5.1/en/log-tables.html

每次浏览官方文档都能够学习到新鲜的有意思的内容,我决定以后每天都要浏览一个章节。

2010年03月14日

周末图片-中国科技馆

Filed under: 你要去哪里 — 好大的风 @ 1:50 下午

时间:周六
天气:好天气,适宜出游
地点:中国科技馆新馆,森林公园
相机:佳能 A550
处理软件:Apple iPhoto
像册程序:NextGen Gallery

[slideshow id=3 w=640 h=480]

2010年03月10日

互联网产品设想-网络日记本

Filed under: 你要去哪里 — 好大的风 @ 10:18 下午

最近看了几本励志的书,便觉得每天都要有所收获和总结,所以决定写日记。

网络时代,当然不甘心再花钱买纸和笔来写了,况且常年不用笔,字都写的歪歪扭扭的,看着就没心情。

于是决定在电脑上写,现在有很多的记事本软件,使用挺方便,但数据都存储在个人的机器上,万一哪天硬盘坏了或者不小心删掉了,多年的心血都付之东流了。

而且只能在同一台电脑上写,也就是说,没有数据同步的功能。

目前各个大网站比如新浪、网易、搜狐貌似都没有提供专用日记本的功能。

博客到处都是,但博客的初衷是和大家分享,所以博客产品的设计都尽可能的增加朋友之间的互动,一般来说日记是私密的,我现在写的日记就不希望和大家分享。

虽然部分博客提供私密文章的选项,但毕竟不是专用的,用起来没感觉。

找了半天之后放弃博客了,干脆在Gmail里面写邮件得了,每天写一封邮件发给自己,然后打上日记的标签,也凑合用着。

今天忽然觉得这可能是一个比较好的互联网产品,于是分析并记录一下。

一,很多人有写日记的习惯,或者有写日记的潜在期望。

分析我自身的体会,在小学的时候,老师就鼓励同学们写日记,到中学为了提高作文成绩,老师更是不遗余力的宣传写日记的好处,所以我认为80后都会有写日记的经历。

一般认为,写日记是一种积极生活的态度,写日记可以帮助总结每天的得失,为明天做出一些规划。子曰:吾日三省吾身。写日记也是”省吾身“的一种方式。

所以:写日记是一种积极向上的行为,值得提倡,网络日记本这个产品比目前那些博客交友网站更严肃,更积极,更有品位。

二,写日记贵在坚持。

养成写日记的习惯后,每天都会在固定的时间来认真的写日记,如果没有写日记,便会觉得这一天好像还缺点什么。

所以:网络日记本的用户一旦形成,就会是非常忠实的活跃用户。这个产品的用户黏稠度很高。

三,网络日记本产品需要信誉度较高的大型网站来托管。

日记对于用户本身具有很高的价值,可能是很多年积累的心血,所以我不会考虑将我的日记托管在一个不知到哪天就会倒掉或者被屏蔽掉的网站上,即便它的功能很优秀。

所以:大型门户网站做这个产品很有优势。

四,网络日记本与邮箱产品有很多共同之处。

两者本质上是私密的,两者保存的都是个人的重要资料,两者对数据的安全都有很高的要求,两者占用的存储空间都很小。

所以:网络日记本嵌入在邮箱产品中很合适。

五,开发和运维网络日记本的技术难度很低

从技术角度来看,网络日记本可能是最简单的互联网应用了,在存储上容易拆分,由于访问仅限于用户自己,所以访问量也不会大,使用数据库来实现,可能仅需10个人工作日。

所以:这个产品可以迅速开发上线试运行,成本很低。

六,网络日记本的卖点。

最近很热闹的”日记门“会是一个很好的切入点,我们可以提供高强度的加密,防止日记以及私密信息泄露。

我们可以用 短信定时提醒 来帮助用户养成写日记的好习惯。

我们可以提供方便的数据导出,导入以及打印等功能。

所以:网络日记本可以有很多独特的卖点:加密,提醒等。

综合以上所述,我认为网络日记本是一个很有潜力的产品,有很好的品位,有庞大的潜在用户群,用户黏稠度很高,开发成本很低,也比较有卖点。

三月之初

Filed under: 你要去哪里 — 好大的风 @ 6:17 下午

三月之初还下了一场大雪,从傍晚就有沙沙的细雪落下,到了第二天早上便是飞舞的鹅毛了。

三月的雪终究是留不住的,不几天便是春天了,阳光明媚,透过窗户照在身上,让人由暖洋洋到懒洋洋,不禁犯了春困。

最近用先进的Amazon Kindle DX浏览了几本书,随便记录一下:

1,韩寒的《杂的文》

就是把韩寒博客的文章整理了一下,就出了一本书。文章前面都不错,后面多是吵架的,很快就看完。

2,《明朝那些事 三》

去年用纸版书看了一和二,觉得是消磨时间很好的方式,文章比较有意思,后来家里的书实在没地方放了,给了Kindle一个很好的表现机会,它没有让我失望,一个晚上看半本,感觉很好。

3,连岳 《神了》

翻了不到一半,是一个一个的哲理小故事,大多会和圣经扯在一起,大部分故事我觉得很有意义,值得学习和思考。

4,李开复 《世界因你而不同》

李开复先生的自传,很多人认为看这书很俗,但我还是看了,我觉得很好,尤其是他在微软和谷歌的经历,写的很精彩。

5,《激荡三十年》

这个刚翻了不到十页,最近对于中国的经济很感兴趣,好多问题想弄明白,我觉得这本书会给我一些答案。

6,《我爱问连岳》

这个也是连岳的书,很早之前在南方周末上看到过连岳这个名字,印象中文章写的很有意思,所以对他的书也很有好感。翻了一般,都是书信来往,回答很有趣味,但看多了难免觉得千篇一律。

然后是电影,最近终于瞅准了机会,狠心买了1.5T的硬盘,终于可以放心大胆的下载IMDB top 250了。

1,BBC出品的《The Virtual Revolution》

http://www.verycd.com/topics/2803715/

这个四集的片子太好了,IT业界的人士一定要看看,对于Facebook,Twitter,网络审查等等都进行了深入的分析,我认为很专业。里面有中国的例子哦。

2,《The Boondock Saints》

http://www.verycd.com/topics/2730388/

我觉得这部片子的中文名翻译的不知所云,片子很紧凑,不会瞌睡,比较精彩。第二部已经出来了,还没看。

3,《Indiana Jones and Raiders of the Lost Ark》

http://www.verycd.com/topics/237471/

夺宝奇兵其中的一部,比较老的片子,哪个时候哈里森还比较年轻呵呵。纯粹休闲片,不讲大道理,不说教。

—————————————————————————————————

之后就在研究去香港的事情了,现在已经细致到下飞机后怎么乘坐地铁啦,哈哈,期望早日成行。

三月里应该下小雨了吧。。。

三月里的小雨淅沥沥沥沥沥
淅沥沥沥下个不停
山谷里的小溪哗啦啦啦啦啦
哗啦啦啦流不停
小雨为谁飘小溪为谁流
带着满怀的凄清

三月里的小雨淅沥沥沥沥沥
淅沥沥沥下个不停
山谷里的小溪哗啦啦啦啦啦
哗啦啦啦流不停
小雨陪伴我小溪听我诉
可知我满怀的寂寞

2010年03月4日

福尔摩斯和杂七杂八的书

Filed under: 你要去哪里 — 好大的风 @ 5:23 下午

昨天用几张快过期的电影兑换券在大悦城的首都电影院看了新上映的《大侦探福尔摩斯》,觉得不错。

我的童年和少年时代是缺失很多东西的,我没看过变形金刚的动画片,我没看过圣斗士星矢,我没看过武侠小说,我也没看过大名鼎鼎的福尔摩斯探案小说。以至于在和人聊天的时候,经常会觉得很没面子,因为听不懂他们说的某些话,比如”燃烧吧~我的小宇宙”,不知所云。

我打算要把这些逐渐的补上,凭借我多年积累的逻辑思维能力,补充上这些并不需要花费多少脑力,需要的只是时间和兴趣吧。

电影版的福尔摩斯拍的确实不错,虽然中间部分有点昏昏欲睡的感觉,但总体来说还是比较紧凑的,英式英语我也很喜欢,推荐大家都去看看。

最近看南方周末,还有通过谷歌阅读器阅读很多大家推荐的段子,感觉大家都在积极的思考,思考那些曾经被欺骗的经历,思考那些不一定有答案的疑惑。

我非常想明白的是:不久的将来,中国乃至世界的经济会怎样,美国貌似在逼迫人民币升值,但中国不肯干,从我的短浅的目光来看,人民币升值?这不是很好的事情么?我目前那点有限的存款是不是也会升值?IPhone是不是就便宜了?

但凭直觉,我觉得事情不会这么简单,从经济学原理中学到的皮毛,还不足以解释这个问题,看来需要继续努力学习和研究。

最近新收两本书,都是可以比较轻松的读下来的:

1,爱乐

http://www.amazon.cn/gp/product/B001YQGO22/ref=ox_ya_oh_product

主要是附庸风雅,想具体深入的了解一下古典音乐到底是怎么回事,为啥我听了没啥感觉呢?反倒是觉得范晓萱的流行歌曲更好一些。

2,中国远征军

http://www.amazon.cn/gp/product/B002QMKH6W/ref=ox_ya_oh_product

纪实小说类的,读起来很轻松很过瘾,和小的时候读小人书的感觉差不多,还有印象的有《偷袭珍珠港》和《王牌七十四军》,大概是这个名字,反正都是打仗的。

3,1001部电影的字典

http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1267694261&asin=B002YGT0Q8&sr=8-1

这个书有点烧包了,全是彩色印刷的,比一本大字典还厚,翻了翻,里面有很多我看过而且喜欢的电影,就拿它当作我看电影的指南吧,1001部,得看多久呢?

Powered by WordPress