【Mysql】利用xtraceback備份搭建從庫

小亮520cl發表於2015-11-09

1.使用innobackupx

(克隆的master)
1.未使用GTID特性
http://navyaijm.blog.51cto.com/4647068/1422229

2 使用了GTID的新特性


(克隆slave)構建強壯的資料中心
克隆slave好處就是不影響master的業務,所以不管是給master新增slave還是給slave新增下級salve最好都是用克隆slave的方法吧,與克隆master一樣的,只是log裡面記錄的多了一條上級的資訊,安全!!!
innobackupex給slave做一個全備份

沒開gtid像這種
[root@bj151 2015-12-23_05-00-08]# more xtrabackup_binlog_info
mysql-bin.000033        102109174    --搭建slave的slave選這個
[root@bj151 2015-12-23_05-00-08]# more xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000048', MASTER_LOG_POS=492295858    --搭建master的slave選這個


開了gtid就像這種
[root@HaoDai_App_DB02 2015-12-23_04-00-02]# more xtrabackup_binlog_info
6c8a10ed-ed0b-11e4-91eb-00163ec546aa:1-24,   
6c8a10ed-ed0b-11e4-91eb-00163ec546ca:1-96083689 --搭建master的slave選這個
[root@HaoDai_App_DB02 2015-12-23_04-00-02]# more xtrabackup_slave_info
SET GLOBAL gtid_purged='6c8a10ed-ed0b-11e4-91eb-00163ec546aa:1-24, 6c8a10ed-ed0b-11e4-91eb-00163ec546ca:1-96083689';   --搭建slave的slave選這句話,因為要接受兩級的日誌
CHANGE MASTER TO MASTER_AUTO_POSITION=1


2.使用mysqldump
  1. 如果是利用mysqldump的全備來搭建從庫也行,
    那麼全被時必須開啟了--master-data=2(或者--dump-slave) 引數啊。。他會以註釋的方式記錄下,全備的pos點,不然怎麼做主從呢?
    master-data記錄是本機mysql的pos以及file,也就是讓自己當主    --克隆slave
    dump-slave記錄是本機的主的mysql的pos和file ,也就是搭建一個和自己平級的slave  --克隆master

    如:
    /home/data/mysql/bin/mysqldump -uroot -pESBecs00 -h127.0.0.1 -P3308 --master-data=1 --all-database>aal.sql

    1. SET @@GLOBAL.GTID_PURGED='c9b3d7c0-891f-11e5-8bb0-00163ec09859:1-20,
    2. f1105849-82d6-11e5-a2b5-00163e005dc8:58461-58471';

    3. --
    4. -- Position to start replication or point-in-time recovery from
    5. --

    6. --CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=231;

    7. --
    8. -- Current Database: `gtid`
    9. --

    10. CREATE DATABASE /*!32312 IF NOT EXISTS*/ `gtid` /*!40100 DEFAULT CHARACTER SET utf8 */;

    11. USE `gtid`


實操:
  1. 線上需求 :10.2主庫 10.4從庫, 現在需要給10.2再搭建一個從庫,只同步其中一些庫!

方式一:
  1. 從現有的從庫10.4上複製每日innobackupx備份的,然後Replicate_Wild_Do_Table搭建,set gtid_purged時用主庫的,然後change 到 10.2即可!     -------成功

方式二:
  1. mysqldump的方式:
  2. 1.主庫10.2上dump需要的庫,複製,然後Replicate_Wild_Do_Table的方式搭建!set gtid_purged時用主庫的,然後change master到主庫10.2時如果Auto_Position=1
  3. 注意:此時Exec_Master_Log_Pos Read_Master_Log_Pos始終不變!程式也不報錯,反正就是不同步資料                                                                                          ----失敗 
  4. ---後續:過了幾天再次實驗一次,發現又可以了!??????????????????????????????                                                                                                                                                                                                      
  1. 2.主庫10.2上dump需要的庫,複製,然後Replicate_Wild_Do_Table的方式搭建!set gtid_purged, 然後change master 到主庫10.2,Auto_Position=0,並指定master_log_file 和master_log_pos
  2. CHANGE MASTER TO master_host='192.168.10.2',master_user='xxx',master_password='xssss',MASTER_LOG_FILE='mysql-bin.000358', MASTER_LOG_POS=472206029,master_Auto_Position=0;   ----成功

  1. 3.從庫10.4上dump需要的庫,複製,然後Replicate_Wild_Do_Table的方式搭建!set gtid_purged時用主庫和從庫的,然後change master到從庫10.4即可!,搭建從庫的從了                                 ----成功

  4.從庫10.4上dump需要的庫,複製,然後Replicate_Wild_Do_Table的方式搭建!set gtid_purged時用主庫和從庫的,然後change master到主庫10.2時如果Auto_Position=1                                  ---失敗       

總結:
如果使用innobackpx搭建從庫部分複製,就安裝常規步驟來,指定master 或者slave都可以
如果使用mysqldump 搭建從庫部分複製,指定master時,如果Auto_Position=1就會有問題,只能Auto_Position=0 並指定檔案和位置,  或者指定slave,搭建slave的slave也行,後續,如果用Auto_Position=1也可以了???????????奇怪中!




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1825865/,如需轉載,請註明出處,否則將追究法律責任。

相關文章