第六類 資料庫備份與回復
MySql資料庫備份 分為兩種: MySQL 在安裝時即有提供一系列的客戶端程式(Client Program),例如: 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的還原機制 若有定期備份資料庫,當資料庫損壞時可還原,但還是有可能造成部份資料遺失,如『最後一次備份』到『資料庫損壞前』之間的資料。 利用Binary Log機制可以讓遺失的資料降低 第九類資料,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;
範例 授與任何權限給使用者 授與針對db_name資料的某些權限給使用者 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方法