?1.mysql權限管理
1.1mysql賬戶權限信息被存儲在mysql數據庫的user 、db、host、tables_priv、column_priv和procs_priv表中,mysql啟動時服務器將這些數據庫表內容讀入內存。推薦grant和revoke語句
例如:
mysql>grant select,update on account.users to user@ip identified by 'passwd';
mysql>flush privileges;
創(chuàng)建成功后查看mysql數據庫表的變化
mysql>select * from user where user='user1'G
mysql>select * from db where user='user1'G
mysql>select * from tables_priv where user='user1'G
mysql權限按照user 、db、tables_priv、column_priv檢查順序,如果對應表權限為Y,則不會檢查后面的表
1.2.查看或修改賬戶權限
例如:
mysql>show grants for user1@ip G
1.3 回收賬戶權限
mysql>revoke insert on *.* from test3@'%';
mysql>drop user test3@'%'
2.mysql日志管理
mysql服務支持的日志有二進制日志、錯誤日志、訪問日志和滿查詢日志。
2.1 二進制日志(binlog)
記錄所有DDL和DML操作,但不包括數據查詢語句,通過mysqlbinlog查看 例如:mysqlbinlog mysql-bin.000005|cat -n
2.1.1 刪除binlog,用purge binary logs 例如:
purge binary logs to 'mysql-bin.010'; ?//刪除指定序號之前的二進制日志
purge binary logs before '2016-04-02 22:46:26'; //刪除指定時間之前的二進制日志
2.1.2 指定參數設置二進制文件保留天數“expire_logs_days=#”
mysql>set global expire_logs_days=7; //自動清理7天之前的二進制日志文件
2.2 操作錯誤日志
通過設置“--logs-error=[file-name]” 指定錯誤日志存放位置,如沒有設置,則錯誤日志默認位于mysql服務的datadir目錄下
例如:cat /dataa/master/dbdata/CentOS.err
2.3 訪問日志
記錄了所有關于客戶端發(fā)起的鏈接,查詢和更新語句,由于記錄了所有的操作,在相對繁忙的系統(tǒng)中建議關閉
在配置文件“--log=[file-name]” 指定訪問日志的位置,另外一種方法可以在登陸mysql實例后通過變量啟用此日志,如
mysql>set global general_log=on;
mysql>show variables like '%general_log%'; ?//查詢日志位置
2.4 慢查詢日志
記錄了時間超過參數long_query_time(單位是秒)所設定值的SQL語句日志,對于審核和開發(fā)者發(fā)現性能問題及時優(yōu)化有重要意義。
如需啟用該日志可以在配置文件中設置 “slow_query_log" ,沒有指定文件名,則默認hostname-slow.log作為文件名,并存放在數據目錄中
log-slow-queries=/usr/local/mysql....#定義慢查詢日志路徑
慢查詢日志分析工具 mysqldumpslow?
[-s] 排序參數,可選al:平均鎖定時間 ar:平均返回記錄數 at:平均查詢時間;
[-t] 只顯示指定的行數;
3. mysql備份與恢復
3.1 備份方式可以通過直接備份數據文件或使用mysqldump命令將數據庫數據導出到文本文件,直接備份數據庫文件適用于MyISAM和InnoDB存儲引擎,由于備份時數據庫表正在讀寫,備份出的文件可能損壞無法使用,不推薦直接使用此方法。
mysqldump -u root test>test.sql //導出整個數據庫
mysqldump -u root test TBL_2 >test.TBL_2.sql //導出一個表
mysqldump -u root -d --add-drop-table test>test.sql //只導出數據庫表結構 -d沒有數據 --add-drop-table 在每個create語句前增加一個drop table
mysql -uroot test<test.sql //恢復數據方法1
mysql -uroot -p
mysql>source /root/test.sql //恢復數據方法2
3.2 另外一種可以實時備份的開源工具為xtrabackup
http://www.percona.com/downloads/提供下載
4.mysql復制
復制功能可以經濟高效地提高應用程序的性能、擴展力和高可用性。既支持簡單的主從拓撲,也可以 實現復雜、極具可伸縮性的鏈式集群。
使用mysql復制時,所有對復制表的更新必須在主服務器上進行,否則可能引起主服務器上的表進行的更新與對從服務器上的表所進行的更新產生沖突。
好處:(1)主從數據同步,主服務器故障時,從服務器可作為主服務器接管服務。
(2)負載均衡。實現讀寫分離,主服務器記錄更新、刪除、插入等操作;從服務器只查詢請求;
(3)數據備份。從服務器可設置在異地,增加容災的健壯性,為避免傳輸過慢,可設置參數slave_compressed_protocol 啟用binlog壓縮傳輸
mysql使用3個線程來執(zhí)行復制功能,1個在主服務器上,2個在從服務器上。當執(zhí)行START SLAVE時,主服務器創(chuàng)建一線程負責發(fā)送二進制日志。從服務器創(chuàng)建一個I/O線程,負責讀取主服務器上的二進制日志,然后將該數據保存到從服務器數據目錄中的中繼日志文件中。從服務器的SQL線程負責讀取中繼日志并重做日志中包含的更新,從而達到主從數據庫數據的一致性。#在主從服務器上輸入命令查詢狀態(tài):mysql>show processlist G 其中time列的值可以顯示從服務器比主服務器滯后多長時間。