MySQL的基本應用

                                                      MySQL中的複製mysql

 

實驗須要兩臺Linux主機:他們的IP地址爲192.168.0.28(主)和192.168.0.29(從)
主服務器端:
1.確保在服務器和從服務器上安裝的MySQlL兼容。理想狀況,應在主服務器和從服務器上使用最近版本的MySQL。sql

2.在主服務器上爲服務器設置一個鏈接帳戶。該帳戶必須授予REPLICATION SLAVE權限。若是帳戶僅用於複製(推薦這樣作),則不須要再授予任何其它權限。
  mysql> GRANT REPLICATION SLAVE,REPLICATION ON *.* TO 'myadmin'@'192.168.0.29' IDENTIFIED BY 'myadmin';shell

3.確保主服務器主機上my.cnf文件的[mysqld]部分包括一個log-bin選項。該部分還應有一個server-id=Master_id選項,其中master_id必須爲1到232–1之間的一個正整數值。例如:
    [mysqld]
    log-bin=mysql-bin
    server-id=1
若是沒有提供那些選項,應添加它們並重啓服務器。數據庫

 

從服務器端:
1.確保從服務器分配了一個惟一的服務器ID號;在其my.cnf文件中添加下面的行:
   [mysqld]
   server-id=2緩存

2.在從服務器上執行下面的語句,爲每一個選項填入適當的值:
  mysql> CHANGE MASTER TO
      ->     MASTER_HOST='192.168.0.28',
      ->     MASTER_USER='myadmin',
      ->     MASTER_PASSWORD='myadmin',
      ->     MASTER_LOG_FILE='recorded_log_file_name',
      ->     MASTER_LOG_POS='0';安全


3.    在從服務器上執行START SLAVE語句。服務器

 

mysqladmin:用於管理MySQL服務器的客戶端。mysqladmin是一個執行管理操做的客戶程序。能夠用它來檢查服務器的配置和當前的狀態,建立並刪除數據庫等等。
shell> mysqladmin [options] command [command-options] [command [command-options]] ...
mysqladmin支持下面的命令:
create db_name              建立一個名爲db_name的新數據庫。
debug                           告訴服務器向錯誤日誌寫入調試信息。
drop db_name                刪除名爲db_nam的數據庫和全部表。
extended-status             顯示服務器狀態變量及其值。
flush-hosts                     刷新主機緩存中的全部信息。
flush-logs                       刷新全部日誌。
flush-privileges              重載受權表(相似reload)。
flush-status                   清除狀態變量。
flush-tables                   刷新全部表。
flush-threads                刷新線程緩存。
kill id,id,...                     殺掉服務器線程。
password new-password       設置一個新密碼。將用mysqladmin鏈接服務器使用的 帳戶的密碼更改成new-password。
ping                           檢查服務器是否仍活動。
processlist                 顯示活動服務器線程的列表。
reload                        重載受權表,至關於flush-privileges。
refresh                       刷新全部表並關閉和打開日誌文件,至關於flush-hosts和flush-logs。
shutdown                  中止服務器。
start-slave                 開始從服務器上的複製。
status                        顯示短服務器狀態消息。
stop-slave                 中止從服務器上的複製。
variables                   顯示服務器系統變量及其值。
version                      顯示服務器的版本信息。分佈式

 

下述存儲引擎是最經常使用的:
MyISAM:默認的MySQL插件式存儲引擎,它是在Web、數據倉儲和其餘應用環境下最常使用的存儲引擎之一。注意,經過更改STORAGE_ENGINE配置變量,可以方便地更改MySQL服務器的默認存儲引擎。ide

InnoDB:用於事務處理應用程序,具備衆多特性,包括ACID事務支持。工具

BDB:可替代InnoDB的事務引擎,支持COMMIT、ROLLBACK和其餘事務特性。

Memory:將全部數據保存在RAM中,在須要快速查找引用和其餘相似數據的環境下,可提供極快的訪問。

Merge:容許MySQL DBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一塊兒,並做爲1個對象引用它們。對於諸如數據倉儲等VLDB環境十分適合。

Archive:爲大量不多引用的歷史、歸檔、或安全審計信息的存儲和檢索提供了完美的解決方案。

Federated:可以將多個分離的MySQL服務器連接起來,從多個物理服務器建立一個邏輯數據庫。十分適合於分佈式環境或數據集市環境。

Cluster/NDB:MySQL的簇式數據庫引擎,尤爲適合於具備高性能查找要求的應用程序,這類查找需求還要求具備最高的正常工做時間和可用性。

Other:其餘存儲引擎包括CSV(引用由逗號隔開的用做數據庫表的文件),Blackhole(用於臨時禁止對數據庫的應用程序輸入),以及Example引擎(可爲快速建立定製的插件式存儲引擎提供幫助)。

 

                                                    MySQL的備份與還原


mysqldump命令產生的.sql文件包含一系列SQL INSERT語句,能夠用來重載轉儲的表。
mysqldump
               --all-databases               備份全部的數據庫
               --database  db_name1    備份數據庫db_name1
               --databases  db_name1 db_name2 備份多個數據庫db_name1,db_name2
               --flush-logs             做日誌滾動
               --lock-all-tables        鎖定全部表
               --no-data               只備份表結構,不備份數據
               --replace                使用replace取代insert
               --opt                     使用擴在選項
               --where"表達式"      使用where語句限定備份
可以使用下例命令恢復數據庫:
shell>mysql -uroot -p < back.sql
或使用:mysql>source back.sql
可恢復數據庫。

SELECT INTO OUTFILE對具體文件進行選擇備份:
要想複製表,使用SELECT * INTO OUTFILE 'file_name' FROM tbl_name。
要想重載表,使用LOAD DATA INFILE 'file_name' INTO TABLE tblname 並恢復。
要避免複製記錄,表必須有PRIMARY KEY或一個UNIQUE索引。當新記錄複製惟一鍵值的舊記錄時,REPLACE關鍵字能夠將舊記錄替換爲新記錄。

mk-parallel-backup是一款開源軟件:
要想備份數據庫可以使用命令爲:
mk-parallel-dump  --basedir = /backs
要想還原數據庫應使用命令爲: 
mk-parallel-restare /backs

mysqlhotcopy在數據目錄所在的服務器上執行此命令,數據庫引擎爲MyISAM,近乎於冷備份,命令格式爲:
mysqlhotcopy mydb /backup          本地主機數據庫備份
mysqlhotcopy --method=scp mydb username@backup.company.com:/backup 遠程主機數據庫備份
恢復數據庫只需把備份文件目錄拷貝到相應目錄下便可。                                             

mysqlbinlog:用於處理二進制日誌文件的實用工具
服務器生成的二進制日誌文件寫成二進制格式。要想檢查這些文本格式的文件,應使用mysqlbinlog實用工具。mysqlbinlog命令的使用方法:
shell> mysqlbinlog [options] log-files...
要想顯示二進制日誌binlog.000003的內容,使用下面的命令:
shell> mysqlbinlog binlog.0000003
可用下面命令來備份日誌:
shell>mysqlbinlog mysql-bin.000003 > mysql-bin00003.sql

對於企業備份數據庫,備份結束後必定要檢測數據庫是否備份成功。

相關文章
相關標籤/搜索