170 likes | 275 Views
第六類. 資料庫備份與回復. MySql 資料庫備份. 分為兩種: Binary Copy ( 又稱過 hotcopy )( 直接複製資料庫檔案 ) Dump Database ( 將資料庫輸出成為文字檔 ) MySQL 在安裝時即有提供一系列的客戶端程式 ( Client Program ) ,例如: 操控 Server 的 mysqladmin 執行 SQL 指令的 mysql 轉換 binary log 用的 mysqlbinlog 備份資料庫的 mysqldump. Mysqldump 使用方法. 語法:
E N D
第六類 資料庫備份與回復
MySql資料庫備份 • 分為兩種: • Binary Copy (又稱過hotcopy)(直接複製資料庫檔案) • Dump Database (將資料庫輸出成為文字檔) • MySQL在安裝時即有提供一系列的客戶端程式(Client Program),例如: • 操控 Server 的 mysqladmin • 執行 SQL 指令的 mysql • 轉換 binary log 用的 mysqlbinlog • 備份資料庫的 mysqldump
Mysqldump使用方法 • 語法: • --lock-all-tables:備份時將正在備份的資料庫裡的資料表全部鎖定,以確保資料的一致性。 • -u root:使用 root 帳號進行備份 • -p:需要輸入密碼 mysqldump --lock-all-tables -u root -p 資料庫名稱 > example.sql
Binary Log的還原機制 • 若有定期備份資料庫,當資料庫損壞時可還原,但還是有可能造成部份資料遺失,如『最後一次備份』到『資料庫損壞前』之間的資料。 • 利用BinaryLog機制可以讓遺失的資料降低 • 第九類資料,MySql 5.0有四種log: • error log:包含啟動停止和警急錯誤訊息 • general query log: 用戶端的連線與斷線的訊息 • binary log: 包含所有可能修改資料的SQL語法 (有利於進行資料回復) • slow log:包含執行時間超過long_query_time秒數的sql語法, log-queries-not-using-indexes有指定,則會紀錄沒使用INDEX的SQL語法
Binary Log的還原機制 • 啟用 Binary Log • 修改 MySQL Server 的系統設定檔(eg. /etc/my.cnf) • 在 [mysqld] 區塊中加上log-bin=mysql-bin 選項 • 使用 mysqlbinlog將 Binary Log 轉換成可執行的 SQL 指令 [mysqld]log-bin=mysql-bin
備份及還原指令 • 備份指令 • 還原指令 • REPLACE指令會覆寫任何在來源與目的表格中,具有唯一或主要鍵值紀錄的資料。 mysql> SELECT * INTO OUTFILE '/tmp/forums-db-users.sql' FROM phpbb_users; mysql> load data infile '/tmp/forums-db-users.sql' replace into table forums-db.phpbb_users;
設定MySql時區 • 伺服器啟動時試圖確定主機的時區,用它來設置system_time_zone系統變數,以便校對資料庫損壞與備份的時間。 mysql> set global time_zone= ‘SYSTEM’;
MySql指令 • 登入mysql: • mysql> mysql–u username–p password; • 授與權限 • mysql> grant 權限on 物件(如表格)to 使用者; • 撤銷權限 • mysql> revoke權限on 物件from使用者; • 新增使用者 • create user、grant • 權限設定完成 • FLUSH PRIVILEGES;
範例 • 授與任何權限給使用者 • GRANT ALL ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; • 授與針對db_name資料的某些權限給使用者 • GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';
MySQL密碼編碼 • MySQL4.1與之前的資料庫,密碼編碼方式不相容 • 官網說明:http://dev.mysql.com/doc/refman/4.1/en/old-client.html • 若要用舊的編碼方法,必須使用以下兩個 • set password功能 • OLD_PASSWORD方法