awk -F”[[]]”和awk -F”[][]“分割出的串为什么不一样?

0

按理说 -F”[]“,[]表示匹配括号中的任何一个字符,[]中间的字符应该是和顺序无关的,可是我实验的结果却不一样,这是为什么呢?

 

echo “1[2]3[4]” | awk -F”[\\\\[\\\\]]” ‘{print $1,$2,$3,$4}’

 

有时候用6个^做分隔符的时候,就需要采用awk -F”[\\\\^\\\\^\\\\^\\\\^\\\\^\\\\^]” ‘{print $1}’

针对苹果关闭老版本固件验证的刷机解决方案

针对苹果关闭老版本固件验证的刷机解决方案

0

由于苹果前几日放出4.2.9的新版本固件,紧接着关闭4.2.8固件的刷机验证,导致大家不能再刷官方固件和自制固件,某些地区写号需要越狱并且更新prl,所以发布该教程。

特别声明几点:

  1. 新教程中所有固件均为官方固件,大家不需要再去刷之前我做的自制固件(自制固件有手写问题)!
  2. 如果想保留号码,按照本教程操作即可.
  3. 如果不想保留号码,想抹除号码,请在刷完固件后越狱之前,进入 设置-> 还原 –> 抹掉所有内容和设置
  4. 据说ifaith1.3修复了无限DFU的bug,大家可以测试一下!

本教程针对以下几种用户:

  1. 买到的机器是4.2.6/4.2.7/4.2.8版本,未备份过SHSH的用户
  2. 备份过4.2.6/4.2.7/4.2.8版本SHSH的用户

教程公分为3部分:

  1. 越狱
  2. 备份过SHSH的用户刷机+越狱
  3. 未备份过SHSH的用户刷机+越狱

本教程可能使用到的固件以及工具下载地址:

第一部分: 越狱

如果你的机器是刚到手的机器,并且未越狱的(系统版本是4.2.6/4.2.7/4.2.8)或者是通过第二部分和第三部分教程刷过系统的机器,可以直接采用本方法越狱!
通过其他方式越狱的用户,不要再使用本方法越狱,请参照第二部分和第三部分刷机后在按照本教程操作!

适用版本: 4.2.6/4.2.7/4.2.8

  1. 打开手机里面的Safari
    image
  2. 在网址栏输入ctc.appvv.com
    image
  3. 等待网页加载完成,点击免费按钮。
    image
  4. 之后点击安装按钮
    image
  5. 此时手机会回到桌面,可以看到正在安装Cydia
    image
  6. 等待Cydia安装完成,桌面会出现世纪苹果和用户必读的图标,说明越狱成功
    image

 

如果当地OTA需要电信版本的PRL的话,那么请继续操作下面的步骤:

  1. 打开Cydia等待加载完成
  2. 进入管理-软件源-维维网中文源
    image
  3. 选择电信PRL212更新,点击右上角的安装按钮
    image
  4. 确认安装
    image
  5. 安装成功后到拨号界面输入如图数字后按呼叫
    image
  6. 确认PRL是否为212(如果显示是0,请稍后重新按呼叫确认版本。如果不是0也不是212,请重新安装prl更新补丁)
    image

备注: 越狱完成后,左上角的运营商名称为英文名,重启会变回中文!

 

第二部分: 备份过SHSH的用户刷机+越狱

注意: 恢复固件为官方固件, 恢复后不会丢失写号数据!
本部分操作仅适用于备份过SHSH的用户(通过Cydia或者其他方式)!

TSS Server

条件:如果苹果已经关闭了对应版本的SHSH服务器,你有备份过该版本的SHSH,就可以使用tinyumbrella来运行TSS Server搭建自己的SHSH验证服务器。
打开Cydia看上方,就是你有的SHSH。

image
如上图所示: Cydia已经帮这台IPhone备份过4.2.8的SHSH!那么我们就可以重新刷官方的4.2.8固件。

 

  1. 打开tinyumbrella。(需要JAVA虚拟机,到 www.java.com下载)
    image
    在左上角的Connect Devices里选上你的设备。如果你的SHSH在Cydia服务上,先点击Save SHSH,完成后会出现界面。中间会有SHSH显示。之后点击Start TSS Server。如果在本地,直接点击Start TSS Server。
  2. 此时模拟Apple的验证完成,最小化tinyumbrella。不要关闭!

 

恢复固件

 

  1. 点击桌面上的 image图标,打开itunes。
  2. 键盘按住shift鼠标点击恢复按钮。
    image
  3. 选择苹果官方4.2.8的固件,然后点打开。
    image
  4. 点击恢复。
    image
  5. 等待itunes恢复固件。
    image
  6. 过程中会出现1013错误的话点击确定,之后可以不管itunes。
    image
  7. 打开fixrecovery后,使手机进去DFU。
    进去DFU的方法:同时按住power和home按钮,直到手机黑屏,手机黑屏约5秒钟后松开power,继续按住home,直到fixrecovery开始工作。
    image
  8. 等待fixrecovery完成工作,此时手机是黑底白字的界面。
    image
  9. Fixrecovery完成工作后手机会自动开机,并进入提示连接itunes界面。
  10. 电脑上打开iTunes,激活手机。如果出现更新运营商信息,点否。恢复固件的工作到此为止。

完成上述步骤后,可以参照第一部分进行越狱!

第三部分: 未备份过SHSH的用户刷机+越狱

注意: 恢复固件为自制签名固件,已经去除基带,不会丢失号码信息。
本部分操作仅适用于想恢复固件且没有备份SHSH的用户. 要确保你当前系统是4.2.6/4.2.7/4.2.8中的一个才可以用本方法操作。

建议大家先把签名固件做好, 防止将来出问题的时候做不了!
通过本方法制作的签名固件仅适用于自己的机器,也就是说每个人做出来的固件别人刷不了!

 

恢复固件

 

  1. 打开iFaith-v1.1
  2. 点击OK
    image
  3. 选择 Dump SHSH Blobs
    image
  4. 点击Proceed
    image
  5. 点击Let’s go
    image
  6. 点击否
    image
  7. 按提示引导进入DFU
    image
  8. 等待iFaith-v1.1完成工作,大约需要5分钟
    image
    image
  9. 选择blobs.ifaith的地址。随便选,自己知道在哪里就可以
    image
  10. iFaith-v1.1完成提取签名的工作。点确定
    image
  11. 开始自制带签名的固件。进入第一个按钮
    image
  12. 点击Browse,选择自己刚备份出的的blobs.ifaith
    image
  13. 选择Browse,选择固件位置
    image
  14. 开始自制固件,此过程5分钟左右
    image
  15. 等待固件制作完成。在会桌面上生成一个自制固件
    image
  16. 完成后点击Proceed
    image
  17. 按提示按键进入DFU
    image
    image
    image
  18. 成功后点击确定
    image
    image
  19. 打开iTunes会提示检测需要恢复的设备
    image
  20. 按住shift后,鼠标点击回复,选择桌面上生成的自制固件。等待iTunes完成恢复
    image
    image

 

完成上述步骤后,可以参照第一部分进行越狱!

select into outfile 语法

0

select email into outfile “test.txt” from email;

select substring(boss,0,2),addr from guest;

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE “/opt/abc.txt” INTO TABLE table_name FIELDS TERMINATED BY ‘,’ (column1, column2,colum3);

mysql> SELECT * FROM table1 INTO OUTFILE ‘data.txt’
FIELDS TERMINATED BY ‘,’
FROM …

为了将由逗号分隔的文件读回来,正确的语句将是:

mysql> LOAD DATA INFILE ‘data.txt’ INTO TABLE table2
FIELDS TERMINATED BY ‘,’;

相反,如果你试图用下面显示的语句读取文件,它不会工作,因为它命令LOAD DATA INFILE在字段之间寻找定位符:

mysql> LOAD DATA INFILE ‘data.txt’ INTO TABLE table2
FIELDS TERMINATED BY ‘\t’;

可能的结果是每个输入行将被解释为单个的字段。

LOAD DATA INFILE能被用来读取从外部来源获得的文件。例如,以dBASE格式的文件将有由逗号分隔并用双引号包围的字段。如果文件中的行由换行符终止,下面显示的命令说明你将用来装载文件的字段和行处理选项:

mysql> LOAD DATA INFILE ‘data.txt’ INTO TABLE tbl_name
FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘\n’;

任何字段或行处理选项可以指定一个空字符串(”)。如果不是空,FIELDS [OPTIONALLY] ENCLOSED BY和 FIELDS ESCAPED BY值必须是一个单个字符。FIELDS TERMINATED BY和LINES TERMINATED BY值可以是超过一个字符。例如,写入由回车换行符对(CR+LF)终止的行,或读取包含这样行的一个文件,指定一个LINES TERMINATED BY ‘\r \n’子句。

FIELDS [OPTIONALLY] ENCLOSED BY控制字段的包围字符。对于输出 (SELECT … INTO OUTFILE),如果你省略OPTIONALLY,所有的字段由ENCLOSED BY字符包围。对于这样的输出的一个例子(使用一个逗号作为字段分隔符)显示在下面:

“1″,”a string”,”100.20″
“2″,”a string containing a , comma”,”102.20″
“3″,”a string containing a \” quote”,”102.20″
“4″,”a string containing a \”, quote and comma”,”102.20″

=================

insert into tabl(id,email) select id, email from guest;

用mysqlbinlog查看row格式的事件 zt

0

MySQL 5.1开始,binlog支持row-based的格式,默认情况下只能看到一些经过base-64编码的信息,如

DELIMITER /*!*/;
# at 7493962
#090827 5:25:03 server id 1 end_log_pos 0 Start: binlog v 4, server v 5.1.26-rc-community-log created 090827 5:25:03
BINLOG ‘
L6iVSg8BAAAAZgAAAAAAAAAAAAQANS4xLjI2LXJjLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
‘/*!*/;
# at 7493962
# at 7494009
#090827 13:20:40 server id 1 end_log_pos 7494009 Table_map: `test`.`test1` mapped to number 96991
#090827 13:20:40 server id 1 end_log_pos 7494045 Write_rows: table id 96991 flags: STMT_END_F

BINLOG ‘
qBeWShMBAAAALwAAAHlZcgAAAN96AQAAAAAABHRlc3QABXRlc3QxAAIDDwI8AAM=
qBeWShcBAAAAJAAAAJ1ZcgAQAN96AQAAAAEAAv/8AwAAAAEz
‘/*!*/;
# at 7494045
#090827 13:20:40 server id 1 end_log_pos 7494072 Xid = 2525562
COMMIT/*!*/;
DELIMITER ;
# End of log file

这里只能看到`test`.`test1`表做了改动,但具体改了什么,就不知道了,那么怎样才能看到到底改了什么呢?从MySQL 5.1.28开始,mysqlbinlog多了个参数–verbose(或-v),将改动生成带注释的语句,如果使用两次这个参数(如-v -v),会生成字段的类型、长度、是否为null等属性信息。如下:

 

mysqlbinlog -v -v mysql-bin.001912

DELIMITER /*!*/;
# at 7493962
#090827 5:25:03 server id 1 end_log_pos 0 Start: binlog v 4, server v 5.1.26-rc-community-log created 090827 5:25:03
BINLOG ‘
L6iVSg8BAAAAZgAAAAAAAAAAAAQANS4xLjI2LXJjLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
‘/*!*/;
# at 7493962
# at 7494009
#090827 13:20:40 server id 1 end_log_pos 7494009 Table_map: `test`.`test1` mapped to number 96991
#090827 13:20:40 server id 1 end_log_pos 7494045 Write_rows: table id 96991 flags: STMT_END_F

BINLOG ‘
qBeWShMBAAAALwAAAHlZcgAAAN96AQAAAAAABHRlc3QABXRlc3QxAAIDDwI8AAM=
qBeWShcBAAAAJAAAAJ1ZcgAQAN96AQAAAAEAAv/8AwAAAAEz
‘/*!*/;
### INSERT INTO test.test1
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2=’3′ /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
# at 7494045
#090827 13:20:40 server id 1 end_log_pos 7494072 Xid = 2525562
COMMIT/*!*/;
DELIMITER ;
# End of log file

这时能看懂了吧?但还有个问题,BINLOG开头的那些信息还是会显示出来,很难看,能不能去掉呢?答案是肯定的,加–base64-output=DECODE-ROWS参数。如下

mysqlbinlog -v -v –base64-output=DECODE-ROWS mysql-bin.001912

DELIMITER /*!*/;
# at 7493962
#090827 5:25:03 server id 1 end_log_pos 0 Start: binlog v 4, server v 5.1.26-rc-community-log created 090827 5:25:03
# at 7493962
# at 7494009
#090827 13:20:40 server id 1 end_log_pos 7494009 Table_map: `test`.`test1` mapped to number 96991
#090827 13:20:40 server id 1 end_log_pos 7494045 Write_rows: table id 96991 flags: STMT_END_F
### INSERT INTO test.test1
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2=’3′ /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
# at 7494045
#090827 13:20:40 server id 1 end_log_pos 7494072 Xid = 2525562
COMMIT/*!*/;
DELIMITER ;
# End of log file

这样看起来清晰多了吧?

while循环中碰到ssh的话,如何避免退出 zt

0

先看一个例子:

#!/bin/sh
. /root/.bash_profile

cat /home/yejr/alldb|while read LINE
do
   #取得IP和组号
   IP=`echo $LINE | awk '{print $1}'`
   NU=`echo $LINE | awk '{print $2}' | awk -F '-' '{print $1}'`

   cnt=`ssh root@$IP "mysql -e 'select count(*) from yejr.tbl1'|tail -n 1"`

   echo "$IP $NU $cnt"
done

看起来没有问题吧,实际上,执行的时候只循环了一次,就退出while循环了,为什么呢?

这是因为ssh需要从输入终端来读取数据,在第一次循环时ssh就把 read 读到的数据也给读取了,相当于是被他”吃”了.
解决办法是,指定 ssh 的输入终端,有3种方法:

ssh -f
-f Requests ssh to go to background just before command execution.  This is useful if ssh is going to ask for
   passwords or passphrases, but the user wants it in the background.  This implies -n.  The recommended way to
   start X11 programs at a remote site is with something like ssh -f host xterm.

或者:

ssh -n
-n Redirects stdin from /dev/null (actually, prevents reading from stdin).  This must be used when ssh is run in
   the background.  A common trick is to use this to run X11 programs on a remote machine.  For example, ssh -n
   shadows.cs.hut.fi emacs & will start an emacs on shadows.cs.hut.fi, and the X11 connection will be automati-
   cally forwarded over an encrypted channel.  The ssh program will be put in the background.  (This does not
   work if ssh needs to ask for a password or passphrase; see also the -f option.)

或者,将ssh放到后台中执行. 以下是几种写法的综合:

#!/bin/sh
. /root/.bash_profile

cat /home/yejr/alldb|while read LINE
do
   #取得IP和组号
   IP=`echo $LINE | awk '{print $1}'`
   NU=`echo $LINE | awk '{print $2}' | awk -F '-' '{print $1}'`

   #-f
   #cnt=`ssh -f root@$IP "mysql -e 'select count(*) from yejr.tbl1'|tail -n 1"`

   #-n
   #cnt=`ssh -n root@$IP "mysql -e 'select count(*) from yejr.tbl1'|tail -n 1"`

   #放后台
   #cnt=`ssh root@$IP "mysql -e 'select count(*) from yejr.tbl1'|tail -n 1" &`

   #指定输入设备
   cnt=`ssh root@$IP "mysql -e 'select count(*) from yejr.tbl1'|tail -n 1"

不知道是否还有其他方法呢?

MYSQL数值类型INT,SMALLINT,BIGINT,MEDIUMINT,FLOAT的相关说明,存储大小等! zt

0

MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。

显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。

所有整数类型可以有一个可选(非标准)属性UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。

浮点和定点类型也可以为UNSIGNED。同数类型,该属性防止负值保存到列中。然而,与整数类型不同的是,列值的上范围保持不变。

如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。

对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节。

FLOAT类型用于表示近似数值数据类型。SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围)。MySQL还支持可选的只用于确定存储大小的精度规定。0到23的精度对应FLOAT列的4字节单精度。24到53的精度对应DOUBLE列的8字节双精度。

MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

MySQL将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词。MySQL还将REAL视为DOUBLE PRECISION(非标准扩展)的同义词,除非SQL服务器模式包括REAL_AS_FLOAT选项。

为了保证最大可能的可移植性,需要使用近似数值数据值存储的代码应使用FLOAT或DOUBLE PRECISION,不规定精度或位数。

DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:

salary DECIMAL(5,2)

在该例子中,5是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

在MySQL 5.1中以二进制格式保存DECIMAL和NUMERIC值。

标准SQL要求salary列能够用5位整数位和两位小数保存任何值。因此,在这种情况下可以保存在salary列的值的范围是从-999.99到999.99。

在标准SQL中,语法DECIMAL(M)等价于DECIMAL(M,0)。同样,语法DECIMAL等价于DECIMAL(M,0),可以通过计算确定M的值。在MySQL 5.1中支持DECIMAL和NUMERIC数据类型的变量形式。M默认值是10。

DECIMAL或NUMERIC的最大位数是65,但具体的DECIMAL或NUMERIC列的实际范围受具体列的精度或标度约束。如果此类列分配的值小数点后面的位数超过指定的标度允许的范围,值被转换为该标度。(具体操作与操作系统有关,但一般结果均被截取到允许的位数)。

BIT数据类型可用来保存位字段值。BIT(M)类型允许存储M位值。M范围为1到64。

要指定位值,可以使用b’value‘符。value是一个用0和1编写的二进制值。例如,b’111′和b’100000000′分别表示7和128。参见9.1.5节,“位字段值”。

如果为BIT(M)列分配的值的长度小于M位,在值的左边用0填充。例如,为BIT(6)列分配一个值b’101′,其效果与分配b’000101′相同。

当要在一个数值列内保存一个超出该列允许范围的值时,MySQL的操作取决于此时有效的SQL模式。如果模式未设置,MySQL将值裁剪到范围的相应端点,并保存裁减好的值。但是,如果模式设置为traditional(“严格模式”),超出范围的值将被拒绝并提示错误,并且根据SQL标准插入会失败。参见5.3.2节,“SQL服务器模式”

如果INT列是UNSIGNED,列范围的大小相同,但其端点会变为到0和4294967295。如果你试图保存-9999999999和9999999999,以非严格模式保存到列中的值是0和4294967296。

如果在浮点或定点列中分配的值超过指定(或默认)精度和标度规定的范围,MySQL以非严格模式保存表示范围相应端点的值。

当MySQL没有工作在严格模式时,对于ALTER TABLE、LOAD DATA INFILE、UPDATE和多行INSERT语句,由于裁剪发生的转换将报告为警告。当MySQL工作在严格模式时,这些语句将失败,并且部分或全部值不会插入或更改,取决于是否表为事务表和其它因素。详情参见5.3.2节,“SQL服务器模式”。

通过 chrome://sync-internals/ 了解 Chrome 同步细节 zt

通过 chrome://sync-internals/ 了解 Chrome 同步细节 zt

0

 

 

Chrome的同步功能可能是最让大家兴奋的功能,依托于Google强大的云端技术支持,你可以在各个电脑安装的Chrome浏览器之间同步网页应用、扩展、主题、自动填充、设置、密码、书签等等数据。但有时候你可能发现同步很慢,或是出错,此时你可以在地址栏输入 chrome://sync-internals/ 来查看同步细节(如上图)。

如果Summary是READY,就是同步正常。如果是OFFLINE_UNUSABLE你就得找找问题了,可能是没登录,也可能是网络出了问题。话说每次Chrome自动升级之后,都要重新登录帐号来进行同步这一点太不方便了,有时候同步不成功就是因为Chrome自己默默又升级了,你需要重新登录帐号。

MySQL 执行load data infile时同步原理及注意事项

0
   Master上执行
      mysql> load data INFILE ‘/tmp/del_proid.txt’ INTO table del_proid;
   在Binlog中记录的SQL是这样的
      load data LOCAL INFILE ‘/tmp/SQL_LOAD_MB-1-0′ INTO table del_proid
   并且在/tmp目录中也确实出现了这个文件,内容和del_proid.txt一模一样
   同步时,Master的Binlog Dump进程会读取SQL_LOAD_MB-1-0文件的数据传,送给Slave的IO进程写入Relaylog,当Slave同步到该语句时,SQL进 程从Relaylog中解出数据,仍以文件名SQL_LOAD_MB-1-0写入slave-load-tmpdir参数打定的目录下,然后执行
   load data LOCAL INFILE ‘/tmp/SQL_LOAD_MB-1-0′ INTO table del_proid
   完成后,删除该文件
   slave-load-tmpdir参数,在默认或未设置的情况下,使用tmpdir参数值文档:

It appears that the file you load with LOAD DATA INFILE on the master are automatically transferred via the replication log from the master to the slave. The slave loads these files when it gets to the LOAD DATA INFILE in the statement-based replication queue.

I’m inferring this from a couple of statements in the docs:

16.1: Backing Up Replication Slaves

If your MySQL server is a slave replication server, then regardless of the backup method you choose, you should also back up the master.info and relay-log.info files when you back up your slave’s data. These files are always needed to resume replication after you restore the slave’s data. If your slave is subject to replicating LOAD DATA INFILE commands, you should also back up any SQL_LOAD-* files that may exist in the directory specified by the –slave-load-tmpdir option.

16.1.2.3: Replication Slave Options and Variables

When the slave SQL thread replicates a LOAD DATA INFILE statement, it extracts the file to be loaded from the relay log into temporary files, and then loads these into the table. If the file loaded on the master is huge, the temporary files on the slave are huge, too. Therefore, it might be advisable to use this option to tell the slave to put temporary files in a directory located in some filesystem that has a lot of available space. In that case, the relay logs are huge as well, so you might also want to use the –relay-log option to place the relay logs in that filesystem.

按格式批量修改文件名

0

按固定格式批量修改文件名,如:

XXX-001.txt

XXX-002.txt

XXX-003.txt

 

首先进入文件目录,然后利用语句;如果不是在文件目录下,就得改下命令,在mv时,新旧文件都能有对应的绝对路径。

 

for $file (`ls x*`){chomp $file;$new=sprintf “XXX-%03d.txt”,++$i;system “mv”,”$file”,”$new”}

加速 MySQL 导入导出的方法

0

MySQL导出的SQL语句在导入时有可能会非常非常慢,在处理百万级数据的时候,可能导入要花几小时。在导出时合理使用几个参数,可以大大加快导 入的速度。

-e 使用包括几个VALUES列表的多行INSERT语法;
–max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
–net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。

注意:max_allowed_packet 和 net_buffer_length 不能比目标数据库的设定数值 大,否则可能出错。

首先确定目标数据库的参数值

mysql> show variables like ‘max_allowed_packet’;
mysql> show variables like ‘net_buffer_length’;
根据参数值书写 mysqldump 命令,如:

# mysqldump -uroot -p123 21andy -e –max_allowed_packet=16777216 –net_buffer_length=16384 > 21andy.sql
OK,现在速度就很快了,主要注意的是导入和导出端的 max_allowed_packet 和 net_buffer_length 这2个参数值设定,弄大点就OK了

其实,最快的方法,是直接COPY数据库目录,不过记得先停止 MySQL 服务。

Go to Top