程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [轉]MySQL數據庫的熱備份

[轉]MySQL數據庫的熱備份

編輯:MySQL綜合教程

 

      一、系統環境描述:
      1、兩台數據庫服務器,A和B;
      2、當前A正在使用,將作為主服務器,B為准備用來做備用數據庫服務器;
      3、要進行熱備份的數據庫中含有類型為MyISAM和InnoDB的數據表;

      二、操作過程說明:
      1、首先要保證A、B的初始數據是完全同步的。因此,需要將A中的數據完整的復制到B中;

      由於多個服務器都在連接A,並實時的修改A中的數據,所以需要斷開所有的會修改數據庫數據的程序,或者采取鎖表的方法(但這種操作可能會影響其他服務的正常運行)。然後使用mysqldump程序將A中的數據備份為腳本文件。
      方法:打開命令行窗口,輸入mysqldump -uusername -ppassword --opt databasename > sqlstoragepath,其中,username為mysql的用戶名,password為mysql的密碼,databasename為要進行熱備份的數據庫的名稱,sqlstoragepath為備份腳本的存放位置(c:\backup.sql)。

      2、在A中添加備份使用的授權賬戶;

      方法:通過命令行的方式登錄到mysql,登錄成功後,會出現“mysql>”的符號。輸入:grant replication slave on *.* to 'username'@'slavedbIP' identified by 'password';(分號不能省略)。其中username和password為備份服務器在進行熱備份時使用的用戶名和密碼;slaveIP為備份服務器的IP地址,標志該帳號只能在該IP地址上使用。

      3、停止A服務器的mysql服務;
      4、打開A服務器mysql安裝目錄下data目錄,刪除除文件夾之外的所有日志文件。然後打開databasename目錄,刪除其中的所有文件;
      5、打開A服務器mysql安裝目錄,修改my.ini文件,在[mysqld]段中加入以下配置信息,然後保存:

#主服務器的服務器ID
server-id=1
#開啟主服務器的二進制日志功能
log-bin=binary_log
#要忽略的數據庫,即不需要進行熱備份的數據庫
binlog-ignore-db=mysql,test
#要進行熱備份的數據庫
binlog-do-db=stv

      6、打開B服務器,並使用mysqladmin程序創建一個名為databasename的空數據庫;

方法:打開命令行窗口,輸入mysqladmin create databasename

      7、停止B服務器的mysql服務;
      8、打開B服務器mysql安裝目錄下data目錄,刪除除文件夾之外的所有日志文件。然後打開databasename目錄,刪除其中的所有文件;
      9、打開B服務器mysql安裝目錄,修改my.ini文件,在[mysqld]段中加入以下配置信息,然後保存:

#從服務器的服務器ID
server-id=2
#主服務器A的IP地址
master-host=10.20.1.21
#主服務器mysql使用的端口
master-port=3306
#備份帳號的用戶名,即在步驟2中添加的授權帳號的用戶名
master-user=username
#備份帳號的密碼,即在步驟2中添加的授權帳號的密碼
master-password=slavedb
#要進行熱備份的數據庫
replicate-do-db=stv
#當和主服務器斷開連接時嘗試連接的時間間隔
master-connect-retry=60

      10、啟動A服務器的mysql服務;
      11、啟動B服務器的mysql服務;
      12、檢查A服務器的狀態;

方法:mysql>showprocesslist;
        mysql>show master status;

      13、檢查B服務器的狀態;

方法:mysql>show slave status\G;
顯示列表中必須存在: Slave_IO_Running: Yes
                           Slave_SQL_Running: Yes

      14、打開A服務器,使用mysql命令,將之前備份出來的數據腳本重新導入數據庫中;

方法:打開命令行窗口,輸入: mysql -uusername -ppassword databaseName < backup.sql

      15、導入數據成功後,檢查B服務器是否同步導入數據;
      16、在A中進行數據的添加、修改、刪除,檢查B服務器是否有相應的變化;
      17、恢復其他服務;

 

     至此,MySQL數據庫的熱備份操作全部完成。
      說明,如果要備份的數據庫中的表類型全部為MyISAM,則可以直接拷貝A服務器的data目錄下要備份的數據庫目錄到B服務器的對應目錄下。

 

ps :原文摘自 http://mazd1002.blog.163.com/blog/static/66574965201141383621934

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved