?mysql備份之lvm

mysql備份之lvm

新建一個lvm磁盤,這里我建的lv為mydatalv,掛載到了/data下

[root@localhost ~]# lvs
  LV       VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                                  
  mydatalv mydata -wi-ao---- 1.00g   
[root@localhost ~]# df -h
文件系統                     容量  已用  可用 已用% 掛載點
/dev/mapper/mydata-mydatalv  976M  2.6M  907M    1% /data

將原數據庫文件復制到/data目錄下

[root@localhost ~]# cp -a /var/lib/mysql /data/

修改配置文件,將mysql數據庫文件放在lvm盤中,二進制文件放在非lvm盤的/var/lib/mysql/目錄下

[root@ns1 ~]# vim /etc/my.cnf
    [mysqld]
    log_bin=/var/lib/mysql/mysql-bin
    datadir=/data/mysql
[root@localhost ~]# service mariadb restart
[root@localhost ~]# ls /data/mysql
aria_log.00000001  ibdata1      ib_logfile1  mysql-bin.000001  mysql-bin.000003  performance_schema
aria_log_control   ib_logfile0  mysql        mysql-bin.000002  mysql-bin.index   test
可以看到重啟后數據庫文件已存放在了/data/mysql目錄中了

對mysql進行鎖表備份

[root@localhost ~]# mysql -e 'flush tables with read lock;' 鎖表
[root@localhost ~]# mysql -e 'flush logs;'          對日志進行滾動,
[root@localhost ~]# mysql -e 'show master status;' > /root/back.$(date +%F+%T)
[root@localhost ~]# ls
back.2016-07-13+10:14:29

對lv創建快照

[root@localhost ~]# lvcreate -L 1G -n mysqlback -p r -s /dev/mydata/mydatalv

釋放鎖

[root@localhost ~]# mysql -e 'unlock tables;'

在別的磁盤上創建備份目錄,只讀掛載快照后備份至備份目錄

[root@localhost ~]# mkdir /myback
[root@localhost ~]# mount -r /dev/mydata/mysqlback /mnt
[root@localhost ~]# cp -a /mnt/mysql /myback

修改表內容,然后刪除掉數據庫文件內容即/data/mysql中的內容

[root@localhost ~]# mysql
    MariaDB [hellodb]> use hellodb;
    MariaDB [hellodb]> insert into classes (class,numofstu) values ('xxoo',39);
[root@localhost ~]# rm -rf /data/*

修改配置文件中二進制日志和數據庫文件的位置

[root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    log_bin=/data/mysql/mysql-bin
    datadir=/data/mysql

利用/myback/中的內容還原

[root@localhost ~]# cp -a /myback/* /data/
[root@localhost ~]# service mariadb restart

利用二進制日志還原快照后的操作,由下面這個文件來查看快照執行時二進制日志的位置

[root@localhost ~]# cat back.2016-07-13+10\:14\:29 
File    Position    Binlog_Do_DB    Binlog_Ignore_DB
mysql-bin.000014        245

將000014中245之后的操作做成sql文件,進行還原

[root@localhost ~]# mysqlbinlog --start-position=245 /var/lib/mysql/mysql-bin.000014 > binlog.sql
[root@localhost ~]# mysql < /root/binlog.sql

查看恢復情況

[root@localhost ~]# mysql
    MariaDB [(none)]> use hellodb;
    MariaDB [hellodb]> select * from classes;
    +---------+----------------+----------+
    | ClassID | Class          | NumOfStu |
    +---------+----------------+----------+
    |       1 | Shaolin Pai    |       10 |
    |       2 | Emei Pai       |        7 |
    |       3 | QingCheng Pai  |       11 |
    |       4 | Wudang Pai     |       12 |
    |       5 | Riyue Shenjiao |       31 |
    |       6 | Lianshan Pai   |       27 |
    |       7 | Ming Jiao      |       27 |
    |       8 | Xiaoyao Pai    |       15 |
    |       9 | xxoo           |       39 |
    +---------+----------------+----------+
    9 rows in set (0.00 sec)

原創文章,作者:N17_信風,如若轉載,請注明出處:http://www.www58058.com/24866

(0)
N17_信風N17_信風
上一篇 2016-07-19 09:06
下一篇 2016-07-19 09:12

相關推薦

  • 8月3日作業

    1、三種權限rwx對文件和目錄的不同意義     文件:         r:可讀         w:可修改內容,不可刪除   &nbsp…

    Linux干貨 2016-08-05
  • linux 系統啟動流程

    假設以個人架設的linux主機為例:當你按下電源鍵之后,計算機硬件會主動讀取BIOS來加載硬件信息及進行硬件系統的自我測試,之后系統會主動讀取系統第一個可啟動的設備,此時就可以讀入引導裝載程序了。 引導程序可以指定使用哪個內核文件來啟動,并實際加載內核到內存中解壓縮與執行,此時內核就能夠開始在內存內活動,并檢測所有硬件信息,與加載適當的驅動程序來使這部主機開…

    Linux干貨 2016-09-12
  • RPM包管理——運維必備技能之一

    軟件運行環境: API:Application Programming Interface     POSIX :Portable OS 程序源代碼 –> 預處理 –> 編譯 –> 匯編 –> 鏈接     …

    Linux干貨 2016-08-21
  • 2016/10/14作業

    2016/10/14作業: ##操作類: 1. 設置自己的終端提示符,要求字符終端登錄時: a> 需要帶顏色  b> 需要顯示當前執行到了第幾條命令  c> 顯示當前登錄終端,主機名和當前時間 答:要在用戶登錄時終端提示符,需要更改當前系統的環境變量: /etc/bashrc文件 #[ "$PS1" …

    Linux干貨 2016-10-19
  • Linux screen命令

    screen命令 一、簡介 Screen是一款終端模擬的屏幕管理器,用于命令行終端自由切換。 當我們需要執行一個用時較多的作業,不希望自己或者他人誤操作關閉終端導致作業中斷,可以進入screen,這樣,當終端關閉,作業仍會繼續執行。 GNU’s Screen 官方站點:http://www.gnu.org/software/screen/ &nb…

    2017-07-13
  • MySQL與nfs的實驗

    (1) 創建一個共享mydata,路徑為/mysql/data,客戶端1掛載至/mydata;而后客戶端1主機安裝mysql或mariadb,將數據目錄設定為/mydata,要確保mysql服務能正常 運行,但數據目錄位于samba server上; (2) 客戶端2主機使用類似客戶端1主機的方式掛載mydata共享至本地的/mydata目錄,而后,直接安裝…

    Linux干貨 2016-10-30
欧美性久久久久