mysql備份複製-2

來源:互聯網
上載者:User

標籤:mysql   備份   innobackup   

mysql簡介-1
本篇將介紹備份恢複、主從、主主

4、mysql備份恢複

  mysql備份分為冷備和熱備,使用冷備需要關閉伺服器,在生產絕對不建議這麼操作,熱備又稱為邏輯備份和裸檔案備份,備份檔案又可以分為全備和增量備份,邏輯備份對增量備份不是特別理想。


從這裡開始我們準備兩台機器: 系統Cenos7.4 mysql: 5.7

4.1、mysqldump備份操作
1、全備備份: [[email protected] tmp]#  mysqldump -uroot -pxiong123 -A > 20180510.sql恢複: [[email protected] tmp]#  mysql -uroot -pxiong123 < 20180510.sql2、備份單個庫備份: [[email protected] tmp]# mysqldump -uroot -p extmail > extmail.20180510.sql     備份檔案頭部: Host: localhost    Database: extmail    先刪除extmail這個庫  mysql> drop database extmail;    恢複操作: [[email protected] tmp]# mysql -uroot -pxiong123 extmail < extmail.20180510.sql             刪除資料庫,直接恢複會報這個錯誤,我們需要先建立這個庫,然後再進行恢複                    ERROR 1049 (42000): Unknown database ‘extmail‘ 完整單庫恢複    mysql> create database extmail;    [[email protected] tmp]# mysql -uroot -pxiong123 extmail < extmail.20180510.sql 

   

3、備份庫中的單個表備份:文法: -u使用者 -p密碼 庫名 表名             [[email protected] tmp]# mysqldump -uroot -p extmail alias > ext_alias.sql恢複:        1、刪除  mysql> drop table extmail.alias;        2、恢複 [[email protected] tmp]# mysql -uroot -pxiong123 extmail < ext_alias.sql        3、查看 mysql> use extmail;                      mysql> show tables;
4.2、xtrbackup

- 點我下載 - 版本: percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm

4.2.1、功能
能實現的功能:    非阻塞備份innodb等事務引擎資料庫、    備份myisam表會阻塞(需要鎖)、    支援全備、增量備份、壓縮備份、    快速增量備份(xtradb,原理類似於oracle:tracking 上次備份之後發生修改的page.)、    percona支援歸檔redo log的備份、    percona5.6+支援輕量級的backup-lock替代原來重量級的FTWRL,此時即使備份非事務引擎表也不會阻塞innodb的DML語句了、    支援加密備份、流備份(備份到遠程機器)、並行本地備份、並行壓縮、並行加密、並行應用備份期間產生的redo日誌、並行copy-back    支援部份備份,只備份某個庫,某個表    支援部分恢複    支援備份單個表分區    支援備份速度限制,指備份產生的IO速度的限制    支援point-in-time恢複    支援compat備份,也即使不備份索引資料,索引在prepare時--rebuild-indexs    支援備份buffer pool    支援單表export, import到其它庫    支援 rsync 來縮短備份非事務引擎表的鎖定時間
4.2.1、全備
yum安裝  依賴包 libev、rsync        [[email protected] tmp]# yum -y install percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm前期準備:1、建立一個使用者備份的使用者         mysql> grant replication client, reload, lock tables, process on *.* to ‘xtrb‘@‘%‘ identified by ‘xtrb‘;         mysql> flush privileges;2、建立一個備份目錄 /data/backup                  [[email protected] mysql]# mkdir /data/backup                  [[email protected] mysql]# chown mysql.mysql !$3、建立一個資料庫mysql> create database test;mysql> use test;mysql> create table te1 (id int primary key auto_increment,name varchar(25));mysql> insert into te1 (name) values (‘xiong1‘),(‘xddf2‘),(‘sa3‘);

   

備份:1、全備    [[email protected] mysql]#  innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 /data/backup/

備份完成之後是直接以目前時間來命名[[email protected] mysql]# ls /data/backup/    2018-05-10_15-54-29以下是備份的檔案,需要將屬主屬組設定成mysql,方便恢複

檔案說明 重要

恢複操作
  恢複時需要加上 --apply-log參數,它的作用是復原未提交的事務及同步已經提交的事務至資料檔案,使資料檔案保持一致性;

[[email protected] 2018-05-10_15-54-29]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log /data/backup/2018-05-10_15-54-29/出現如下資訊說明成功

這時我們類比資料掛掉了,直接幹掉原先的mysql1、先停掉它    [[email protected] 2018-05-10_15-54-29]# service mysqld stop2、弄走原先的資料檔案    [[email protected] 2018-05-10_15-54-29]# mv /data/mysql{,.bak}3、恢複資料檔案    [[email protected] 2018-05-10_15-54-29]# pwd    /data/backup/2018-05-10_15-54-29    [[email protected] 2018-05-10_15-54-29]# mkdir /data/mysql    [[email protected] 2018-05-10_15-54-29]# mv * /data/mysql    [[email protected] 2018-05-10_15-54-29]# chown mysql.mysql /data/mysql -R4、啟動服務    [[email protected] 2018-05-10_15-54-29]# service mysqld start5、查看資料庫    mysql> show databases;            Database: test   沒問題

4.2.2增量備份
1、先進行一次全備    [[email protected] backup]#  innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 /data/backup/2、插入新的資料    mysql> insert into test.te1 (name) values (‘5sf‘),(‘adf‘),(‘555sf‘),(‘3adf‘),(‘5555sf‘),(‘3adadf‘),(‘55ad55sf‘),(‘3adadaf‘);

  

3、增量備份[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --no-timestamp --incremental /data/backup/2018-05-10_16-23-27-incre-1 --incremental-basedir /data/backup/2018-05-10_16-23-27/


4、增備的恢複    4.1、先進行全備恢複    4.2、再進行增備恢複  都需要加上 --redo-only    --redo-only意味著只前滾xtrabackup日誌中已經提交的事務,並不復原那些沒有提交的事務資訊    4.3、最後一個過程就是對整體的全備進行恢複,這時就可以去掉--redo-only了,意味著需要復原那些還沒有提交的事務恢複步驟:1、全備的恢複[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log --redo-only /data/backup/2018-05-10_16-23-27xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 2597453InnoDB: Number of pools: 1180510 16:41:43 completed OK!2、增備的恢複[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log --redo-only /data/backup/2018-05-10_16-23-27 --incremental-dir=/data/backup/2018-05-10_16-23-27-incre-1/180510 16:42:43 [00]        ...done180510 16:42:43 [00] Copying /data/backup/2018-05-10_16-23-27-incre-1//xtrabackup_info to ./xtrabackup_info180510 16:42:43 [00]        ...done180510 16:42:43 completed OK!3、整體的全備恢複不加--redo-only[[email protected] backup]# innobackupex --defaults-file=/etc/my.cnf --user xtrb --password xtrb --host 192.168.9.224 --apply-log /data/backup/2018-05-10_16-23-27xtrabackup: using the following InnoDB configuration for recovery:xtrabackup:   innodb_data_home_dir = .xtrabackup:   innodb_data_file_path = ibdata1:12M:autoextendxtrabackup:   innodb_log_group_home_dir = .xtrabackup:   innodb_log_files_in_group = 2      2個檔案xtrabackup:   innodb_log_file_size = 50331648  可以看到記錄檔大小InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 2608421   180510 16:43:51 completed OK!4、測試恢複過程[[email protected] data]# cd /data[[email protected] data]# service mysqld stop[[email protected] data]# mv mysql{,.bak}[[email protected] data]# mkdir mysql[[email protected] data]# mv backup/2018-05-10_16-23-27/* mysql/[[email protected] data]# chown mysql.mysql mysql -R[[email protected] data]# service mysqld start

mysql備份複製-2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.