FreeNas 0.7 上架设Mac OSX Time Machine 时光机

Mac平台下的Time Machine时光机让一贯使用windows的我表示十分向往。只要有移动硬盘或是独立分区即可增量备份系统数据,即使更换新的电脑或重装系统也能快速恢复自己习惯的使用环境。相比同一个硬盘分区的损坏风险或移动硬盘连接不便(从稳定性上说移动硬盘本身就是不那么靠谱的设备,它的使用环境决定了它的损坏概率是很大的),通过网络备份到NAS服务器无疑是最可靠且不影响正常使用的方法(你不会经常想到在家用电脑的时候也接个硬盘备份吧,尤其是在只有2个usb口的mbp上)

要使用网络备份时光机,最简单直接的办法就是买Apple的Time capsule路由器,自带1T/2T硬盘,秉承苹果配件一贯的高价易用风格。廉价的方案就是在FreeNAS 0.7系统上自己DIY时光机服务。

首先开启AFP服务

添加共享

注意勾选
Automatic disk discovery – Enable automatic disk dicovery
Automatic disk discovery mode – Time Machine

接下来打开Time Machine程序

选择磁盘

接下来输入freenas上的用户名密码,确保该用户对你在第二步添加的共享目录有读写权限即可。

第一次备份可能花费大量时间,建议接上网线备份。以后的增量备份在无线网络的环境下也速度也可以接受。

MySQL 同步和备份策略 [一]

最近遇到一个案列,MySQL主机已经存有10G左右的数据并且每天还在以1G为单位增长。现在需要制定备份策略并且用于数据备份和服务器维护的停机时间要尽可能的短。

对此,我们打算配置Master主服务器 -> Slave从服务器单向同步复制并且在Slave机上做周期增量备份。如果Master因意外灾难无法继续服务可以立即切换Slave机顶替服务。以下内容中Master机指主服务器,Slave机指从服务器。

1. 开启二进制日志服务(5.1版本中二进制日志替换了老的更新日志),启动MySQL时加–log-bin参数或在my.cnf中加上这一行。后面可以跟文件名来指定日志名,扩展名会被自动忽略。默认文件名为mysqld-bin.0000x。数字x会自动增长并且mysqld-bin.index中会指定当前的日志文件索引,请勿手工维护.index文件。

2. 建立账户用户数据复制,该账户必须授予REPLICATION SLAVE权限。鉴于我们还需要从Slave机上执行LOAD DATA FROM MASTER 和 LOAD DATA FROM MASTER,还需要授予账户SUPER和RELOAD全局权限。并且为所有想要装载的表授予SELECT权限。任何该 账户不能SELECT的主服务器上的表被LOAD DATA FROM MASTER忽略掉。
例如[code lang=”sql”]
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;
[/code]

3. 执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:
[code lang=”sql”]
mysql> FLUSH TABLES WITH READ LOCK;
[/code]

4. 鉴于原始数据库已经有超过10G的容量,现在使用mysqldump把数据备份成一个巨大的.sql文件显然是不明智的选择。可以简单地复制数据库文件到Slave机来快速创建一个主机的快照。Unix上用tar,windows上用winzip均可。

5. 当FLUSH TABLES WITH READ LOCK所置读锁定有效时,读取主服务器上当前的二进制日志名和偏移量值:
[code lang=”sql”]
mysql> SHOW MASTER STATUS;
[/code]

File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.000007,偏移量为2268600。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,从服务器应从该点开始从主服务器上进行新的更新。

6. 主服务器数据库文件备份完成并且记录上述日志名和偏移量后,可以在主服务器上重新启用写活动:
[code lang=”sql”]
mysql> UNLOCK TABLES;
[/code]

7. 检查Master机上的my.cnf配置,确保在[mysqld]部分除开启log-bin外且指定server-id=1。这里我们将Master机上的server-id指定为1,Slave机上的my.cnf中将其指定为2。

8. 启动Slave机(在此之前已经复制了Master上的数据文件),用–skip-slave-start选项启动从服务器,以便它不立即尝试连接主服务器。

9. 在从服务器上执行下面的语句,用Master机的实际值替换选项值:
[code lang=”sql”]
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’,
-> MASTER_USER=’replication_user_name’,
-> MASTER_PASSWORD=’replication_password’,
-> MASTER_LOG_FILE=’recorded_log_file_name’,
-> MASTER_LOG_POS=recorded_log_position;
[/code]

10. 启动Slave服务器上的复制进程
[code lang=”sql”]
mysql> START SLAVE;
[/code]
执行这些程序后,从服务器应连接主服务器,并补充自从数据库文件备份以来发生的任何更新。

至此,我们备份策略中的主从机单向复制同步已经配置完成。