用Automysqlbackup来备份你的数据库

为什么选择Automysqlbackup?

备份的重要性这里就不赘述了,为了保证网站长期可靠的运行,数据是摆在第一位的,所以第一个考虑的就是数据库的备份,出了任何问题可以快速的还原。针对网站的定位不同,备份的要求也不同,比如微博时时刻刻都有无尽的人在产生数据,那么备份就是一个可怕的工程,也只有这样大的公司才有人力去做。好在咱只要保证小站的苦心运营的数据能留下来,一天一次的备份就足够了,最好还能有一个可靠的地方长期保留每天的数据。这样就有两个需求,一个是本地备份,除了速度很快外在有问题时恢复也很方便缺点是空间有限,存储的备份版本有限,那么另一个需求就是为了满足无限的备份需求,这个时候gmail就出场了,这哥们太牛了,容量是不停的增长的,咱的数据压缩后每天也就增加几k的容量,目前远低于它的增长速度,所以邮件备份是不二的选择。而满足这些,又能提供丰富配置,并且使用简单而轻量级的莫过于仅仅是脚本的automysqlbackup了。

功能描述 Description AutoMySQLBackup with a basic configuration will create Daily, Weekly and Monthly backups of one or more of your MySQL databases from one or more of your MySQL servers.

Other Features include: - Email notification of backups (会有email通知) - Backup Compression and Encryption (使用压缩和加密) - Configurable backup rotation (保存的备份文件时间) - Incremental database backups (增量型备份)

1.下载AutoMySQLBackup

http://sourceforge.net/projects/automysqlbackup/

2.解压缩

把下载的automysqlbackup-v3.0_rc6.tar.gz文件拷贝到/usr/tmp下面

在/usr/local下面新建一个automysqlbackup文件夹,并进入这个文件夹

cd /usr/local

mkdir automysqlbackup

cd automysqlbackup

然后terminal解压缩一下。

tar -xzvf /usr/tmp/automysqlbackup-v3.0_rc6.tar.gz

3. 安装

安装一下,命令为

./install.sh

中途会有两个询问配置文件安装目录的地方,之间回车就好

安装完以后会有提示信息,告诉你如果不是当前用户下使用这个命令要怎么办

4.修改配置文件

我们要用到的是automysqlbackup.conf文件:

文件里有一些基本的配置信息,比如连接mysql server的用户名、密码、IP地址神马的。

1
2
3
4
5
6
7
8
# Username to access the MySQL server e.g. dbuser
CONFIG_mysql_dump_username='root'

# Password to access the MySQL server e.g. password
CONFIG_mysql_dump_password='1234'

# Host name (or IP address) of MySQL server e.g localhost
CONFIG_mysql_dump_host='localhost'

继续,有个重要的配置,就是backup存放的地方咯!

1
2
# Backup directory location e.g /backups
CONFIG_backup_dir='/var/backup/db'

往下看,还有你要配置的database的名称,当然可以精确到表名,也可以只指定到database的名称。或者干脆直接留空,不过留空的话会默认备份所有的数据库……这样磁盘可能会爆炸吧……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Databases to backup

# List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... )
# set to (), i.e. empty, if you want to backup all databases
CONFIG_db_names=()
# You can use
#declare -a MDBNAMES=( "${DBNAMES[@]}" 'added entry1' 'added entry2' ... )
# INSTEAD to copy the contents of $DBNAMES and add further entries (optional).

# List of databases for Monthly Backups.
# set to (), i.e. empty, if you want to backup all databases
CONFIG_db_month_names=()

# List of DBNAMES to EXLUCDE if DBNAMES is empty, i.e. ().
CONFIG_db_exclude=( 'information_schema' 'wiqun' )

另外,还有配置weekly、monthly、daily之类的时间间隔的设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Rotation Settings

# Which day do you want monthly backups? (01 to 31)
# If the chosen day is greater than the last day of the month, it will be done
# on the last day of the month.
# Set to 0 to disable monthly backups.
CONFIG_do_monthly="22"

# Which day do you want weekly backups? (1 to 7 where 1 is Monday)
# Set to 0 to disable weekly backups.
CONFIG_do_weekly="7"

# Set rotation of daily backups. VALUE*24hours
# If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed.
CONFIG_rotation_daily=7

# Set rotation for weekly backups. VALUE*24hours
CONFIG_rotation_weekly=35

# Set rotation for monthly backups. VALUE*24hours
CONFIG_rotation_monthly=150

前两个都比较好理解,就是每个月或者每一周的什么时候进行自动备份,如果不想使用每周备份或者每月备份的话,相应的地方设置0即可。那么后面的rotation又是什么意思呢?其实就是日志保存的期限啦。

比如说CONFIG_rotation_weekly=35的意思就是说按周存储的备份最多保留35天。

再继续,可以配置发送邮件的一些配置,比如邮件地址啦、还有附件的内容啦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# What would you like to be mailed to you?
# - log : send only log file
# - files : send log file and sql files as attachments (see docs)
# - stdout : will simply output the log to the screen if run manually.
# - quiet : Only send logs if an error occurs to the MAILADDR.
CONFIG_mailcontent='files'

# Set the maximum allowed email size in k. (4000 = approx 5MB email [see docs])
CONFIG_mail_maxattsize=4000

# Allow packing of files with tar and splitting it in pieces of CONFIG_mail_maxattsize.
CONFIG_mail_splitandtar='yes'

# Use uuencode instead of mutt. WARNING: Not all email clients work well with uuencoded attachments.
#CONFIG_mail_use_uuencoded_attachments='no'

# Email Address to send mail to? (user@domain.com)
CONFIG_mail_address='elarwei@gmail.com'

5. 运行Automysqlbackup

要运行automysqlbackup之前呢,不要忘了先新建我们存放备份数据库文件的地方,即在配置文件中设定的“/var/backup/db”,现在我们来新建这个目录。

mkdir /var/backup

mkdir /var/backup/db

好了,现在我们可以run一下automysqlbackup了。命令是:

automysqlbackup /etc/automyslqbackup/automysqlbackup.conf

噔噔,怎么报错了呢?

1
2
3
4
5
6
Parsed config file "/etc/automysqlbackup/automysqlbackup.conf"

# Checking for permissions to write to folders:
base folder /var/backup ... exists ... ok.
backup folder /var/backup/db ... exists ... writable? yes. Proceeding.
/usr/local/bin/automysqlbackup: line 139: mutt: command not found

好吧,有事问Google。

sourceForge上果然也有人遇到过这个问题……,解答是

1
2
3
4
5
Please set CONFIG_mailcontent='stdout' in your config file and try again from your console.
The output should directly be displayed.
It seems some error occured before the check for config variables could determine
whether there is a need for checking if mutt (mail program) is installed and can be used.
Therefore the error handler tried to mail the errors using mutt (your configuration choice), which isn't there.

大 意就是说在配置文件里面使用了发送email来报告error这个东东,但是你的机子上却没安装mutt这个程序,所以在检测配置的时候就发生了错误。解 决的方法是把报错改成“stdout”,不过如果改成“stdout”不就失去了我们发送报告到email 的本意了吗……so,我们安装一下mutt这个程序好了。

(PS:如果不使用发送邮件则不需要这个步骤)

5.1 安装mutt

命令是

apt-get install mutt

安装完了以后我们再重新run一下automysqlbackup。

6. 设定Cron Job

Cron 是一个可以让系统定时运行后台脚本的工具。

6.1 编写可执行脚本

我们在/usr/local/bin目录下编写一个要定时执行的脚本

1
2
#!/bin/sh
/usr/local/bin/automysqlbackup /etc/automysqlbackup/automysqlbackup.conf

保存为backupscript.sh

然后改变其模式为root可以执行、读写的方式

chmod 744 /usr/local/bin/backupscript.sh

6.2 将可执行脚本加入定时任务中

先使用命令

crontab -l

看一下现在cron中的定时程序有哪些。

如果提示“no crontab for root”的话,说明root用户下现在还没有定时任务。我们可以新建一个文件,用来配置root用户下的定时任务。

vi root-conf

然后在vi中输入

0-59/10 * * * * /usr/local/bin/backupscript.sh

意思是每十分钟执行一下备份脚本程序(比较夸张啦,为了能在短时间内看到比较多备份的结果,一般都是设定某一天的一个时刻来执行)然后保存退出。

接着,使用命令

crontab -u root root-conf

来将刚才编辑的文件作为root下的定时任务列表文件。这样再键入crontab -l命令时,就可以查看到我们刚才设定的定时任务了。另外,使用crontab -e命令可以编辑我们的定时任务。具体的设定时间的方法可以看Kaixuan的这篇文章《Linux下使用crontab来执行定时任务计划》。

 

7.查看备份结果

我们进入备份的目录看一下有什么变化

cd /var/backup/db/daily

ls

Reference

How to do Painless MySQL Server Backups with AutoMySQLBackup

让wordpress的版本和插件支持自动更新

发现周围用WP的很多都不知道它本身就是支持自动更新的,不需要手动上传那么麻烦。这个也归咎于wp在安装时应该引导用户设置正确的文件夹权限,wp要自我更新必须要有更改自己文件夹的权限,也可能因为这个权限比较高,为了规避风险没有提示用户这么干,但咱是懒人,没有更新到新版的wp可能本身就是一个大的风险。

https://wordpress.org/support/topic/folder-permission-on-linux-ubuntu

如果你很懒,可以把整个网站设置为www-data

比如:chown -R www-data:www-data /yourwebsite

如果只是想支持插件更新,也可以只修改wp-content的权限

比如:chown -R www-data:www-data /yourwebsite/wp-content

WordPress使用.htaccess文件设置图片防盗链

图片防盗链有什么用?主要是防止其它网站盗用你的图片,浪费你的流量。

WordPress博客的附件在/wp-content/uploads/目录下,那就在该uploads目录下放一个名为 .htaccess 的文件,内容如下:

RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !ha97.com [NC] RewriteCond %{HTTP_REFERER} !webnginx.com [NC] RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !yahoo.com [NC] RewriteCond %{HTTP_REFERER} !bing.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC] RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /images/ha97.gif [R,NC,L]

文件设置解释:

RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !ha97.com [NC] RewriteCond %{HTTP_REFERER} !webnginx.com [NC] RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !yahoo.com [NC] RewriteCond %{HTTP_REFERER} !bing.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC]

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自zhuaxia.com、google.com、baidu.com、yahoo.com、bing.com、soso.com的话),就执行下列转向:

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /images/ha97.gif [R,NC,L]

意思是让所有盗链 /wp-content/uploads/目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 images目录下的 ha97.gif 图片替换掉。

注意:替换显示的图片不要放在设置防盗链的/uploads/目录下。

PS:如果想增加其他的过滤站点,只需在“RewriteCond %{HTTP_REFERER} !soso.com [NC]”后面加入下面这条。不但是WordPress,其他的PHP程序也可以用这种方法来设置防盗链!

RewriteCond %{HTTP_REFERER} !域名 [NC]

阿里云ECS之ubuntu 修改swap

Swap作为交换区,太有用了,功能类似windows下的虚拟内存,就是利用硬盘空间来扩展内存。

阿里云的系统默认都不使用swap,为了让你多买内存,而内存是最贵的一项。

如果是性能控可以掠过,毕竟阿里云的磁盘io真的不咋的。

我的ecs就挂了几个小网站,总是内存报警然后mysql挂掉,必须上swap了。

下面是步骤

首先移除关闭swap的选项,否则后面的设置会在重启后失效,在/etc/rc.local文件中移除swapoff -a 行。

然后在根目录创建swap目录,并在swap下划分一个1024MB的连续空间给swap使用,这里的1024可以根据你的内存大小来,一般两倍就够。

dd if=/dev/zero of=swapfile bs=1M count=1024

创建这个swapfile

mkswap swapfile

挂起

swapon swapfile

在free -m中查看是否已经生效

现在再用free -m命令查看一下内存和swap分区大小,就发现增加了1024M的空间了。不过当计算机重启了以后,发现swap还是原来那么大,新的swap没有自动启动,还要手动启动。那我们需要修改/etc/fstab文件,增加如下一行

1
2
/mnt/swap swap swap defaults 0 0

你就会发现你的机器自动启动以后swap空间也增大了。

除此以外还需要设置swapness,范围0-100,数值越大使用swap越积极

可以通过cat /proc/sys/vm/swappiness来查看当前数值

如需修改在文件/etc/sysctl.conf的最后加上这样一行:
vm.swappiness=10

重启后生效

【解答】关于每次开机后是不是需要重新调平的问题。

发现有这个疑问的人很多,这里科普一下。

这里的调平指的是自动调平。

如果更换了置物的玻璃那肯定是要重新调平的,这个就不赘述了。

那么如果重新开机了,是不是会丢失上次调平的数据呢,我的经验是不会,因为有加热板,我很少把玻璃拿下来,重新开机了照样开始打印。

“经验”总归不够说服力,于是查阅了固件的代码,这里要说明下,G29只是一个调平的指令,具体怎么干是固件里的代码来决定的,我选的是marlin-delta的github原版,其它固件如果有不明白的可以发我链接。

首先在arduino里数据分为三种,第一种是刷进去的,要修改只能重新刷的,比如咱们的固件,第二种是像内存这样的易失数据,每次断电都会丢失的,大部分都是这种存在,第三种是持久数据可以被写入和读取,类似硬盘的存在,在arduino里就是EEPROM。

所以问题就归结于重新调平后数据是否会保持在EEPROM,程序里所有变量等使用的都是临时存储会丢失的。

查阅了代码后关键的一句截图如下,

60989bfb43166d22f31e3cb5452309f79052d20d

说明每次调平所有点的位移都被写入EEPROM。

另外这里加个tip,如果不是大物件,不需要每次都十几个点的自动调平,太费时间,有时候甚至三个点就够了,可以跑两次更准一点。

Mysql意外终止

占个位置,log里都是空的,很奇怪。

三星S4 i9508 4.4.2 root 教程

现在有很多一键root的软件,但是各怀鬼胎,最好不用。

最近玩腻了三方的rom,刷回了官方的rom,顿时更稳定了,以外的是这个版本的导航被切了,拍手叫好啊。输入法引入了搜狗的云输入,更方便了,官方的输入法还是很好的,定位很准,毕竟官方有测试的,安全也更好,htc的朋友说的。

三星系统特别是定制版的总是有各种问题,越狱难度相对大不少。

下面的思路就是刷进大名鼎鼎的touch,用它来root并安装权限管理supersu。

首先odin线刷philz_touch_6.50.1.tar,要去掉“自动重启”,“重置时间”也可以去掉。显示pass后,因为没选重启,所以会停在挖煤的界面,这时通过后去掉电池重新装上后进入rec模式,再高级advance里选择重新root(re-root),然后重启手机,此时手机已经获得root。但没有授权软件,需安装授权软件:两种方法:

  1. 直接安装“超级授权管理专业版SuperSU Pro v2.01简繁修正直装汉化版”,打开SuperSU后会提示装二进制文件,选择“CWW”确定后手机会重启,进入rec自动安装二进制文件。带手机再次重启后打开SuperSU运行一次,即完成root的获取。
  2. 进入rec(第三方的)后卡刷SuperSU Pro v2.01.ZIP包,重启手机后运行一次SuperSU 同样可以获取,这个方法最简洁!

相关软件下载地址:

超级授权管理专业版SuperSU Pro v2.01简繁修正直装汉化版下载链接:http://pan.baidu.com/s/1eQgSJ3W 密码:u98o

SuperSU Pro v2.01.ZIP下载链接:http://pan.baidu.com/s/1sjkAdLN 密码:rc84

philz_touch_6.50.1.tar下载链接:http://pan.baidu.com/s/1bnrOmnH 密码:d8p6

【项目发起】千元组装一台大型3D打印机全教程(一)前言

前言

最近又碰到了大尺寸模型打样的需求,我这台17cm直径的kossel mini就捉襟见肘了。怎么办呢,这个时候kossel的好就体现出来了,随意扩展,那么就自己做个kossel-max吧。为了向前辈M大致敬,会全程直播草案的设计,配件的采购,主板的配置调试,组装,调平以及精度的调试,也给想做kossel的童鞋们另外一个选择。文中主要参考kossel原版,M大的kossel-mini改进项目和kossel-mini max项目。

下面是kossel mini 的视频(非广告,主要对没见过并联机的同谢对打印机有个概念)

项目参数

尺寸图

尺寸示意图

机身尺寸:三角形底座,边长~45cm,高度110cm,成型盘直径30cm

成型尺寸:底面Ø300MM,圆柱高度440MM,塔尖高度500MM

成型体积:31~32.5L(是kossel-mini标准版的近四倍,M大版本的近三倍)

耗材:  Ø 1.75MM

 

大在哪里?为什么大的好?

是不是还在为放不下thinginverse里的plate而苦恼,很正常因为现在大部分plate都是20cm*20cm的尺寸来设计的,那么kossel能放下多大的呢?根据成型盘子的直径画了两个草图,如下图:

kossel-minikossel-max

左图为kossel-mini 右图为kossel-max(草图中的巨型尺寸有误懒得改了,以下文中的尺寸为准)

         标准的mini直径只有20cm,内切正方形边长=√(20*20/2)=14.1cm,更郁闷的是现在大部分的kosselmini在打印尺寸上都会比盘子要小(有的是因为外切三角形太小,就是框架的底座,有的是因为摇臂太短),一般20cm直径的盘子实际可打印直径只有17cm左右,那么内切正方形的边长就只剩下√(17*17/2)=12.02cm,不要哭,自己动手丰衣足食。

         我们的max直径有30cm,三角边42cm,而臂长也达到36cm,所以不用考虑缩水的问题,内切正方形边长=√(30*30/2)=21.21cm,这下可以直接使用人家搭配好的盘子上菜了。

         Kossel设计中高度一直是个头疼的问题,因为摇臂要浪费掉很多高度,而摇臂短了又会缩水,而mini版本中框架底部太小,一味增加高度很显然会不稳定,现在max的高度达到了1米,打印高度到了50cm也不会不稳,毕竟底座够大!而超高的高度给打印塔状模型带来了福音,是不是曾无数次败倒在艾菲尔铁塔下?原因无它,铁塔的筋实在太细了,而FDM就是不适合竖着打太细的东西,而在max下完全可以放大了再打,毫无压力。

3D打印机对比

3D打印技术又叫快速成型技术,已经发展了几十年了,我们说的FDM就是其中的热熔成型,也是现在价格最亲民的一种,机器大部分来源于开源组织reprap,最流行的分为下面几类

kossel ultimaker replicator797px-Prusai3-metalframe

从左至右分别为Kossel,Ultimaker,Replicator,后两者最大的区别就是挤出机的位置

因为kossel没有螺杆驱动,所以速度是最快的,结构上也看得出kossel的性价比最高。

Kossel

优点:速度快,维护少,结构简单性价比高,校准快,调平方式简单;

缺点:塔状机身对稳定性要求高!

Ultimaker

优点:速度快和kossel差不多可以飙到300m+,稳定性高,调平方式一般;

缺点:调平比较麻烦,每次打印前都要校准,有的童鞋校准后无奈的用胶水来解决这个问题

Replicator 2X

优点:来自makerbot的设计,名气没得说,属于近程挤出,对各种模型适应性好,速度一般,稳定性高,调平同上;

缺点:较慢,升降个平台都要半分钟,调平问题同上;

Prusa i3

优点:超高的性价比,reprap的元老之一,也属于近程挤出,对各种模型适应性好,速度一般,稳定性一般,调平同上;

缺点:维护性差,虽然是第三代了还是同样的问题,调平问题同上;

超大Kossel Delta 3D Printer新闻

SeeMeCNC正在开工建设15英尺高的巨型kossel,这才叫真的大,打印真人大小的模型不在话下,不多说上图看就懂了。

seemecnc-Partdaddy-largest-delta-3d-printer-1 seemecnc-Partdaddy-largest-delta-3d-printer-2

seemecnc-Partdaddy-largest-delta-3d-printer-3 seemecnc-Partdaddy-largest-delta-3d-printer-4

seemecnc-Partdaddy-largest-delta-3d-printer-5

seemecnc-Partdaddy-largest-delta-3d-printer-6

Mysql 删除所有表

1
2
3
4
5
6
7
8
9
10
11
SET FOREIGN_KEY_CHECKS = 0; 
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'database_name'; -- specify DB name here.

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;

 

需要把databasse_name替换为你的表名,这个处理会关闭外键检查

扫地机器人ECOVACS 科沃斯 智能机器人吸尘器—地宝魔镜CR120

IMG\_20140720\_221838

 

IMG\_20140720\_222641

 

mmexport1405905684999

 

 

说白了就是一个自己会跑的吸尘器,工作完后可以自己回去充电。吸尘器其实出来已经有几十年了,一直没什么大的变化,用起来还是那么让人憔悴,特别是电线的长度限制了使用的范围。这个机器人就很好的解决了这个问题,让人们从天天的打扫中解放出来,甚至可能丝毫注意不到它的工作。将来家用电器都会朝这种趋势发展,解放人们的生活琐事,有更多时间享受生活的乐趣。

直接说说它的缺点吧:

  1. 台阶逾越不了,通过性有待提高,虽然很多品牌都宣称自己有很好的通过性,但1.5cm以上可以直接判死刑;
  2. 小的电线会缠住它的钳子,就是扫地的那两个钳子;
  3. 跟吸尘器一样,太大的东西进不去;
  4. 容积小,为了让他进到床底这类地方,都做的很扁,所以垃圾储藏间都很小;
  5. 识别有待提高,对一些很细的杆子,比如桌脚会撞上去;
  6. 噪音,这个没办法了估计,吸尘器这么多年也没很好的解决这个问题,不过定时在上班时间清扫就美影响了;
  7. 回家这个功能真的很好,不过有回不去的时候,这个还不是很麻烦;
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.