Mysql備份和AB複製的過程和步驟

來源:互聯網
上載者:User

Mysql 的完全備份有2種方式

1 使用系統命令直接將Mysql資料拷貝進行備份

例如

/etc/init.d/mysqld stop

tar cvfz /var/lib/mysql/mydb_backup.tar.gz /tmp

/etc/init.d/mysqld start

此種方法必須要先關閉Mysql服務,這也是一大弊端,而且此備份出的資料不支援不同版本的Mysql進行恢複!

所以此法生產環境中很少用

2 使用mysqldump 進行備份

mysqldump 備份的原理是,將對資料庫中的內容修改所產生的sql 語句儲存指定位置;恢複時只要將該sql 語句檔案匯出交給新mysql 重新執行一次,實現恢複資料。

  例如

mysqldump -u root -p 123 > /var/test/123.sql

如果需要備份mysql 中的所有資料庫,使用 -all-databases

mysqldump -u root -p --all-databases > /var/test/123.sql

恢複資料的命令如下:

mysql -u root -p 123 < /var/test/123.sql

mysql 的增量備份

增量備份是比完全備份作的頻率高的多的操作;

mysql 的增量備份使用的方法的是用過mysql 的二進位日誌來實現的;

mysql 的二進位日誌中儲存了對mysql 的所有操作sql 語句;

mysql 的二進位日誌功能預設是關閉著的,我們需要自己手動去開啟;

vim /etc/my.cnf 編輯添加

log-bin=noah(台頭) 如果不加台頭則預設為binlog;

重新啟動服務後就會在/var/lib/mysql 中發現binlog 二進位檔案;

二進位的記錄檔我們需要使用命令mysqlbinlog 來查看;

那麼,如何使用二進位檔案來恢複資料呢;

1 使用時間來恢複

例如

mysqlbinlog --start-date="2009-05-20 10:51:01" --stop-date="2009-05-20 11:52:12" /var/lib/mysql/binlog.000001 | mysql -uroot -p123456

將這2段時間之間對mysql 進行操作的sql 語句輸出給mysql 執行;這樣就恢複這段時間內的資料;

但是這裡的時間只精確到秒,那麼在同一秒內有許多sql 語句的話,就會出現問題了;因此,我們引入了更加精確的恢複的方法,如下;

2 使用位置號來恢複

例如

mysqlbinlog --start-position="457" --stop-position="1009" /var/lib/mysql/binlog.000001 | mysql -uroot -p123456

在mysql 二進位日誌中會設定一個唯一的log_pos;我們就利用這個唯一的position 進行恢複資料的操作;這種方法不會忽略掉任何的資料;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.