参考URL:mysql
http://rfyiamcool.blog.51cto.com/1030776/1016636/sql
缘由源于其实之前环境是有MYSQL主从复制的,且最开始主从复制之间是OK的。数据库
但因为日志长得太多,同步来不急,磁盘空间满了以后,失了不少记录。因此必须从新做主从,但主已不能被影响了。segmentfault
~~~~~~~~~~~~~~~~~~~~~~~~服务器
那就用XTRABACKUP吧,,阿里RDS也是用这个工做来做一些备份恢复的。app
基于上,理想了思路,多参考几个网上文章就能够开始啦。。性能
但数据库太多,备份和COPY到从机器上都花了很多时间,幸运的是到晚上两点左右,总算搞定。优化
那下一步,就是优化MYSQL主性能,以及MYSQL从的滞后问题啦。spa
~~~~~~~~~~~~~~~~.net
http://blog.csdn.net/hw_libo/article/details/38316721
http://segmentfault.com/a/1190000002575399
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最好,要先RESET MASTER一下,再开始弄哈。。。这样,就样空间对接刚恰好。
。。。。。。。。。。。。。。。。。。。。。。。
安装xtrabackup:
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
这个是64位的。
32位的地址是:
http://www.percona.com/downloads/percona-release/percona-release-0.0-1.i386.rpm
若是装了这个套装以后却找不到innobackupex命令。。。就。。。:
http://www.percona.com/software/percona-xtrabackup/downloads/
mkdir /data/backup -p
确保在my.cnf中存在[mysqld]
而且在[mysqld]后面存在 datadir = ....
[root@localhost ~]# innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf /data/backup
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona Inc 2009-2012. All Rights Reserved.
。。。。
innobackupex: Backup created in directory '/data/backup/2012-04-19_10-46-32'
innobackupex: MySQL binlog position: filename 'log_bin.000027', position 2973624
120419 10:46:53 innobackupex: completed OK!
最后输出 completed OK! 表示备份成功了。
能够看到在备份myisam类型表的时候,仍是会锁表~~ innodb就不会锁表。哼。
备份好的文件保存在 /data/backup目录中,好比:
/data/backup/2012-04-19_10-46-32/
[root@localhost ~]# ls /data/backup/2012-04-19_10-46-32/
backup-my.cnf ibdata1 mysql shipincon test xtrabackup_binary xtrabackup_binlog_info xtrabackup_checkpoints xtrabackup_logfile
备份日志:
刚刚备份好的数据文件,并非直接可用的。大概是处于一种数据库挂掉的状态~~~,
细节不讲了,要用日志对其进行恢复:
[root@localhost ~]# innobackupex --apply-log /data/backup/2012-04-19_10-46-32/
这个过程与数据库挂掉以后重启mysqld时的自动修复过程差很少。
把数据复制到从服务器:
$ scp -r /data/backup/2012-04-19_10-46-32/ root@newslave:/data/
关闭从服务器并切换数据:
$ /etc/init.d/mysql stop
$ cd /data
$ mv mysql mysql_old
$ mv 2012-04-19_10-46-32 mysql
修改my.cnf, 给它一个独一无二的server_id。
一个比较好的办法是用服务器的IP地址,把其中的.去掉便可。
而后启动mysqld:
$ /etc/init.d/mysql start
最后change master。
与mysqldump备份的步骤比起来,此次咱们没有flush tables with read lock,
也没有show master status来获取日志文件名和座标。
由于xtrabackup完成备份以后,自动保存了这些信息。
$ cat /data/mysql/xtrabackup_binlog_info
log_bin.000027 2973624
mysql> CHANGE master to-> master_user=’rep’,-> master_password=’rep’,
-> master_host=’10.20.30.40′,
-> master_log_file=’log_bin.000027′,
-> master_log_pos= 2973624;
而后 start slave 便可。
推荐利用xtrabackup实现从服务器的部署~ 速度真的很快~