mysql不停庫作GTID主從複製

前言

今天把公司測試數據庫作了GTID的主從,可是當時沒有中止主庫,直接經過xtrabackup進行備份,而後把數據恢復到從庫,而後直接執行start salve進行主從複製,發現老是報以下之類的錯誤:html

解決辦法

折騰了一下午,上網查了n多資料以後發現這個問題仍是有辦法解決的,並且解決這個問題以後還能夠作到不停庫進行主從複製的配置。mysql

  1. 首先主庫經過xtrabackup進行備份,我採用以下命令innobackupex -uxxxx -pxxxx . --stream=tar|gzip -> backup.tar.gz直接備份成tar.gz的格式,而後傳到從庫服務器;
  2. 從庫直接tar解壓壓縮文件到數據庫目錄tar xvf *.tar.xz /usr/local/mysql/data/,我發現xtrabackup --copy-back也可使用cp或者rsync替換,我此處直接就解壓到數據目錄了;
  3. 執行--apply-log進行事務回滾,此步驟必定要作,而後修改數據目錄屬主屬組,啓動數據庫;
  4. 此步驟很是重要,數據恢復完成以後在數據目錄有xtrabackup_binlog_info文件,內容以下:

    三個字段,第一個是已經應用到哪一個二進制日誌;第二個是當前的pos,若是不是gtid主從則指定pos的時候指定這個便可;第三個是備份已經包含的事務,因此從庫啓動主從以前須要先執行set @@global.gtid_purged='xxxxxx:xx'命令跳過備份項,不然會出現我以前出現的錯誤。
  5. 執行set @@global.gtid_purged='xxxxxx:xx'發現報錯了,錯誤以下:ERROR 1840 (HY000): Unknown error 1840,上網查詢資料發現能夠執行reset master,而後就可以正常執行命令跳過備份包含的gtid了;sql

  6. 而後再執行change master to 命令開始主從便可。數據庫

    change master to
    master_host='ip',
    master_port=port,
    master_user='username',
    master_password='password',
    master_auto_position=1;
  7. 若是以前已經配置過主從,則能夠經過reset slave all清除全部的主從配置信息。
  8. 必定要注意配置的順序,必須是先執行global_purge,而後再執行change master to;服務器

總結

通過一下午的折騰發現仍是對數據庫不夠了解,對GTID和數據庫的事務老是迷迷糊糊的,還有不少須要學習的地方。
參考了這兩篇文章,感謝做者:
http://www.javashuo.com/article/p-oiyqmdti-bc.html
http://blog.51cto.com/arthur376/1792551app

相關文章
相關標籤/搜索