MYSQL正式環境主從複製(不鎖表,不停服務)

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

 

相關文章
相關標籤/搜索