MySQL 用戶管理 備份複製 恢復

 

常用查看命令:

mysql> select version();

wps_clip_image-2582

mysql> status;

wps_clip_image-2585

mysql> show variables\G;

wps_clip_image-25370

mysql> show global variables;

wps_clip_image-9688

mysql> show processlist\G;

wps_clip_image-19786

用戶管理權限:

wps_clip_image-15650

wps_clip_image-23424

創建用戶:

mysql> use mysql

mysql> create user linna;

Query OK, 0 rows affected (0.04 sec)

mysql> select Host,User,Password from user;

wps_clip_image-5471

mysql> create user sandy identified by '123456';

Query OK, 0 rows affected (0.00 sec)

wps_clip_image-19660

爲用戶設置密碼:

mysql> set password for linna@'%' =password('123456');

Query OK, 0 rows affected (0.00 sec)

wps_clip_image-19359

授予權限:

mysql> grant create on *.* to linna@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to linna@'%';

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.02 sec)

顯示賦予用戶的權限:

mysql> show grants for linna@'%'\G;

wps_clip_image-9030創建一個用戶並授權:

mysql> grant select on mydb.stu to kate@'192.168.0.%' identified by 'redhat';

Query OK, 0 rows affected (0.05 sec)

mysql> drop user kate@'192.168.0.%';

Query OK, 0 rows affected (0.00 sec)

收回權限:

mysql> revoke select on *.* from linna@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> show grants for linna@'%'\G;

wps_clip_image-5531

將某個字段的查詢權限授權用戶:

mysql> grant select(course) on mydb.course to sandy@'%';

允許sandy將權限授予其他人:

mysql> grant select on mydb.course to sandy@'%' with grant option;

將表中的所有權限授予用戶:

mysql> grant all privileges on db.* to kate@'%' identified by 'redhat';

PS:super privilege權限終止客戶端連接,並能改變全局變量。

限定資源使用數:

mysql> grant select on *.* to 'linna'@'%' with max_queries_per_hour 5;

Query OK, 0 rows affected (0.00 sec)

with_queries_per_hour 每小時發起的最大查詢數

max_update_per_hour  每小時最大的修改數

max_connections_per_hour 同一個用戶每小時內的最多連接數

max_user_connections 同一個用戶在同一時刻內的最大併發連接數

mysql> select current_user();    //** 登錄時匹配到的用戶賬號(授權信息)

wps_clip_image-12716

mysql> select user();          //**登錄時真正的用戶身份

wps_clip_image-10107

mysql> show grants;        //**查看自己所擁有的權限

wps_clip_image-15991

日誌 備份和恢復

日誌種類:4+1種日誌

the error log  錯誤日誌

mqld在啓動或者關閉過程中所產生的信息;

重要的關鍵的錯誤信息;

調度事件的執行過程;

如果啓用主從架構,從服務器的說明信息。

啓動錯誤日誌:mysqld_safe  --log-error=/var/log/mysqld.err  如果不指路徑,默認存放在數據目錄下host_name.err。

--log_warnings 1(默認值1,啓用) 是否將警告信息記錄到錯誤日誌中。

大於1,一些非法終止信息也會被記錄到錯誤日誌中。

PS:如果沒有定義錯誤日誌 錯誤信息將被定義到標準錯誤輸出中去。

the binary log  二進制日誌

對數據本身產生修改(或者可能發生修改)的動作將被記錄下來。

作用:實現point-in-time-recovery(時間點恢復)的功能;實現複製功能。

存放位置:記錄在數據目錄下mysql-bin.index(0000001)

wps_clip_image-19707

啓用二進制日誌:--log-bin = /data/logs/binary/changelog

                --log-bin-index = /data/logs/relay/binarylog.index

查看二進制日誌:mysqlbinlog

[root@server27 data]# /usr/local/mysql/bin/mysqlbinlog mysql-bin.000001

wps_clip_image-12531

mysqlbinlog mysql-bin.000001 \

    --start-datetime="2011-03-05 17:34:40" \

--end-datetime="2011-03-05 17:34:56" > sixteensecs.sql

mysqlbinlog --read-from-remote-server -uuser -p \     //**查看遠程服務器上的二進制日誌

     mysql-bin.000001 -h 192.168.0.182 -P 3306 \

--start-position=932 --end-position=1132 > remote000001.sql

在MySQL中查看:

mysql> show binlog events in 'mysql-bin.000001' from 7548 limit 3\G;

wps_clip_image-30898

the general query log  一般查詢日誌

the slow query log  慢速查詢日誌

wps_clip_image-8174

特殊日誌:relay log  中繼日誌 主從複製模式中在從服務器上使用到的一種日誌。

默認情況下日誌存放在數據目錄下,不建議將數據與二進制文件放在一起。

日誌滾動:

flush logs 手動的方式滾動錯誤日誌和二進制日誌

purge binary logs 刪除指定位置之前所有的日誌

mysql> PURGE BINARY LOGS TO ’mysql-bin.00007’;

mysql> PURGE BINARY LOGS BEFORE ’2011-3-5 23:00:00’;

日誌錯誤檢查,修復:

[root@server27 mydb]# myisamchk --extend-check course2.MYI

Checking MyISAM file: course2.MYI

Data records:       0   Deleted blocks:       0

- check file-size

- check record delete-chain

- check key delete-chain

- check index reference

- check records and index references

[root@server27 mydb]# myisamchk --recover course2.MYI

- recovering (with keycache) MyISAM-table 'course2.MYI'

Data records: 0

在MySQL命令行下進行檢查:

mysql> use mydb

Database changed

mysql> check tables course2;

wps_clip_image-25215

mysql> repair table course2;

wps_clip_image-5871

對錶本身作分析和優化:

mysql> analyze table course2;

mysql> optimize table course2;

對MySQL備份和恢復:

備份方式:完全備份 增量備份 差異備份

          冷備 溫備(只讀不能寫) 熱備

邏輯備份:備份數據本身內容

物理備份:備份數據文件

一致性備份:所有的備份文件的最後修改時間都在備份時間點之前,而且所有日誌中的數據都已經同步到硬盤中去。可以做恢復。

非一致性備份:備份文件的最後修改時間可能在備份時間點之後。

常用備份工具:

wps_clip_image-22118

Mysqldump 邏輯備份 溫備

Provides a logical backup of entire database servers, individual databases, individual tables, or even subsets of data using the --where option

The logical backup created using mysqldump is often called a data dump

The output is in ASCII format — easily readable and manipulated

備份:

[root@server27 data]# mysqldump -uroot -p mydb > /root/mysql.sql

[root@server27 data]# mysqldump -uroot -p --events --routines --triggers --databases mydb mysql > /root/mydb-`date +"%F"`.sql

恢復:

PS:恢復前要先建立mydb數據庫。

[root@server27 data]# mysql -uroot -p mydb < /root/mysql.sql

相關參數:

wps_clip_image-19992

wps_clip_image-8045

PS:參考葉金榮《MySQL備份和恢復》。

SELECT  INTO OUTFILE

實現只針對某一個表或者表中的數據進行備份。

mysql> select * into outfile '/tmp/stu.sql' from stu;

恢復,先創建表:

使用場景:truncate table stu;

mysql> load data infile '/tmp/stu.sql' into table stu;

Maatkit 第三方備份工具 www.maatkit.org/

mk-parallel-dump --basedir=/backups

mk-parallel-restore /backups

File system snapshot

通過LVM快照了備份和恢復

[root@server27 ~]# pvcreate /dev/sda{5,6}

[root@server27 ~]# vgcreate vg1 /dev/sda{5,6}

[root@server27 ~]# lvcreate -L 2G -n mydata vg1

[root@server27 ~]# mkfs.ext3 /dev/vg1/mydata

[root@server27 ~]# mkdir /mydata

[root@server27 ~]# mount /dev/vg1/mydata /mydata

[root@server27 ~]# cp -rp /data/* /mydata/

[root@server27 mydata]# chown mysql:mysql /mydata/

編輯mysql的主配置文件將數據目錄改爲mydata。

mysql> flush tables with read lock;

mysql> flush logs;

[root@server27 mydata]# lvcreate -L 20M -s -n mysnap /dev/vg1/mydata

[root@server27 mydata]# mkdir /mysnap

[root@server27 mydata]# mount /dev/vg1/mysnap /mysnap/

wps_clip_image-12830

假設要備份mydb數據庫

[root@server27 mysnap]# cp -rp mydb /tmp/mydb2

[root@server27 /]# umount /mysnap/

[root@server27 /]# lvremove /dev/vg1/mysnap

[root@server27 /]# cp -rp /tmp/mydb2 /mydata/mydb

Mysqlhotcopy

yum install perl-DBI -y

yum install perl-DBD-MySQL -y

mysqlhotcopy  mydb  /backup

mysqlhotcopy --method=scp mydb \ [email protected]:/backup

wps_clip_image-5680

時間點恢復(PITR)

mysqldumo+binlog 做時間點恢復

[root@server27 data]# mysqldump -uroot --flush-logs --lock-all-tables --master-data=2 --events --routines --triggers mydb >/root/mydb-`date +"%F-%H-%M-%S"`.sql

然後修改數據庫:

wps_clip_image-17660

將mydb數據庫刪除,然後嘗試恢復:

mysql> create database mydb;

[root@server27 data]# mysql -uroot -p mydb < /root/mydb-2011-04-10-18-23-57.sql

wps_clip_image-22854

看,沒有備份後新添加的表t1,如何恢復t1?這就要基於時間點來恢復了!

mysql> show binary logs;

wps_clip_image-25934

mysql> show binlog events in 'mysql-bin.000002'\G;

做時間點恢復:

[root@server27 data]# mysqlbinlog /data/mysql-bin.000002 --start-position 6355 --stop-position 7701 > /tmp/mydbrestore.sql

[root@server27 data]# mysql -uroot -p &lt; /tmp/mydbrestore.sql

PS:xtrabackup 免費開源備份工具,企業中使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章