主庫已有數據時,如何進行主備複製?

主庫已有數據時,如何進行主備複製?

在大多數業務場景下,DBA做主備複製的搭建的時候,主庫都已經有數據。那麼,在主庫有數據的情況下,如何進行主備複製?
mysql提供瞭如下幾種方案:

  • 冷備份
  • 熱備份
  • 使用mysqldump
  • 使用快照或備份
  • 使用percona Xtrabackup開源熱備份工具

這裏詳細講解下mysqldump方式,其他備份方式,簡單講解下。

一、冷備份

冷備份基本操作很是粗暴,先關閉數據庫,然後將數據複製到備庫,再重啓主庫,這時主庫會重新生成binlog日誌文件,然後再備庫執行 change master to...指向新生成的binlog文件的起始處,再接着執行start slave;進行主備複製。
這種方式缺點很明顯,需要停數據庫。

二、熱備份

針對於使用MyISAM的存儲引擎的表。這裏不做描述

三、使用mysqldump

只包含InnoDB的表,那麼可以使用mysqldump的方式。
一般使用命令:
mysqldump --single-transation --all-databases --master-data=1 > dump.sql
這裏對上面的mysqldump命令做一下解釋:

  • --single-transation代表是開始一個事務
  • --all-databases代表dump所有數據庫
  • --master-data有兩種值,爲1時,將會把當前執行事務時的binlog文件和偏移量以change master..命令輸出到dump的數據文件中;設置爲2時,會將此命令註釋掉。

所以,當主庫有數據時,執行上面的mysqldump --single-transation --all-databases --master-data=1 > dump.sql指令將數據導入至dump.sql,再將dump.sql文件導出至備庫的服務器。在備庫執行dump.sql導入數據,導入完成後,再執行start slave;進行主備複製。就可以從導出數據dump.sql數據的那一刻開始繼續複製主庫的數據了。

五、使用快照或備份

只要知道備份的時間點,和快照時刻對應的二進制文件和偏移量就可以,在出現問題時,根據快照進行回滾。並根據二進制文件和偏移量進行主備複製。

六、使用percona Ctrabackup開源熱備份工具

這裏不做描述

本文是作者根據日常業務場景,寫出的一些解決問題或學習實驗的歷程。如有錯誤的地方,還請指出,相互學習,共同進步。謝謝!

上一篇:MySQL如何配置主從複製,主從複製異常如何定位修復?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章