參考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實現從服務器的部署~ 速度真的很快~