==========MYSQL運作原理圖:
#1》資料庫簡介:簡單的說資料庫(database)就是一個儲存資料的倉庫,它將資料依照特定的規則儲存到磁碟上,透過資料庫管理系統,能夠有效的管理儲存在資料庫中 的資料;
SQL語言是一種查詢和設計語言,主要用於儲存數據,查詢資料更新和管理關係資料庫;
SQL語言總共分為三個部分
DDL(Data Definition Language)語句,使用於定義資料庫表、試圖索引和觸發器等
create
alter
〠alter
rename
truncate
句詞插入語文,查詢資料、更新資料和刪除資料
select
〠#o delete
DCL(Data Control Language)語句,用於控制使用者的存取權限
grant
# revoke
常見的資料庫系統有哪些:
1.甲骨文Oracle
5.開源PostgreSQL
6.開源Mysql
Mysql特性:
1.跨平台,支援多種作業系統,#AIX FreeBSD HPUXUXware Linux 平台,支援多元2.支援多執行緒,可以充分的利用硬體資源(CPU資源)
3.支援大型資料庫,可以處理擁有上千萬條大型資料庫。
4.支援多種外掛程式儲存引擎
mysql-server-5.6
1)InnoDB現在可以限制大量資料表開啟的時候記憶體佔用過多的問題(例如這裡提列提到的)(第三方已有補丁)
2)InnoDB效能加強。如分拆kernel mutex;flush操作從主線程分離;多個perge線程;大內存優化等
3)InnoDB死鎖資訊可以記錄到error 日誌,方便分析
7 crash-safe
8)複製事件採用crc32校驗,增強master/slave 複製資料一致性
9)新增log_bin_basename(以前variables裡面沒有binlog位置信息,對資料庫的監管很不方便)
2》編譯安裝MYSQL:
1>安裝依賴套件:
yum install gcc gcc-c++ ncurses-devel perl cmake bison
# groupadd mysql # useradd mysql –g mysql –s /sbin/nologin #mkdir -p /usr/local/mysql //Mysql的安装目录 #mkdir -p /data/mysqldb //Mysql数据目录 #mkdir -p /data/mysqldb/binlog //创建BINLOG日志目录 #mkdir -p /data/mysqldb/log //创建MYSQL 日常LOG目录
## ***注意## #cmake 編譯命令
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 設定監聽套接字路徑,這必須是一個絕對路徑名。預設為/tmp/mysql.sock
-DSYSCONFDIR=/etc 設定檔放在/etc/下面
-DDEFAULT_CHARSET=gbk 設定伺服器的字元集。
西歐)字符集。 cmake/character_sets.cmake檔案包含允許的字元集名稱欄位 表。
-DDEFAULT_COLLATION=gbk_chinese_ci 設定伺服器的排序規則。
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
四 儲存引擎選項:
MyISAM,MERGE,MEMORY,和CSV引擎是預設編譯到伺服器中,並不需要明確地安裝。
靜態編譯一個儲存引擎到伺服器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的儲存引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), BLACK (Performance Schema)
-DMYSQL_DATADIR=/data/mysqldb 設置mysql數據庫文件目錄
-DMYSQL_TCP_PORT=3306 設定mysql伺服器監聽埠,預設為3306
## -DENABLE_DOWNLOADS=1
例如,啟用此選項(設定為1),cmake將下載Google所使用的測試套件執行單元測試
4> make && make isntall
5>初始化:
給Mysql安裝目錄進行授權
my my my my 給Mysql資料儲存目錄授權
# chown mysql:mysql /data/mysqldb -R
給Mysl日誌目錄進行授權
。#chown mysql 。#chown mysql〠/#mysql〠/#mysql〠 mysql my mysql〠/#mysql. #chown mysql:mysql /data/mysqldb/log/
開始初始化:
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/sql #mydir=/data/複製腳本# # cp /usr/local/mysql/support-files/mysql.server /mysql.server /etc/init.d/mysqld /my mysqld
修改mysql服務啟動腳本(多實例才需要)
# vim /etc/init.d/mysqld
my datadir=/data/mysqldb
6> ;配置文件
files/my-default.cnf /etc/my. cnf
=========設定檔詳解:
# vim /etc/my.cnf
[client]
port = 3306 //客戶端所連接的連接埠號碼
socket = /tmp/mysql.sock //客戶端所連接的sock檔案存放位置
[mysqld]
#base
port = 3306 //mysql的預設連接埠號碼,可修改
user = mysql //mysql使用者指定
socket = /tmp/mysql.sock //連接所使用的連接埠號碼
pid-file = /tmp/mysql.pid //進程執行的主PID檔案
basedir = /usr/local/mysql //Mysql安裝目錄
datadir = /data/mysqldb //Mysql資料目錄
tmpdir = /opt/mysqltmp //Mysqlsql表目錄
open_files_limit = 10240 //開啟檔案句柄的數量
explicit_defaults_for_timestamp
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#federated //支援sql語法和資料校驗等.sql_mode三種模式#ANSIImIm;插入資料進行校驗,如果不符合定義類型或長度,對資料類型調整或截斷保存,報「warning」警告
TRADITIONAL模式、嚴格模式,當向mysql資料插入資料時、進行資料的嚴格校驗,保證資料不能插入,報error錯誤,用於事物時,會進行事物回驗.
STRICT_TRANS_TABLES模式。嚴格模式,進行資料的嚴格校驗,錯誤資料不能插入,報error錯誤.
server_id = 706 //主從複製唯一的服務辨識號碼,數值位於1 到
#replicate-do -db = posp //定義唯一複製的函式庫
#replicate-ignore-db = mysql //定義唯一複製的函式庫
#log-slave-updates = 1 //這個選項之再主從複製。從伺服器上開啟複製主的資訊
event_scheduler=1 //開啟時間調度器
max_connections = 2000 //#最大同時連線數,增加該值需要對應增加允許開啟的檔案描述符數
max_connect_errors = 10000 //如果某個使用者發起的連線error超過該數值,則該使用者的下次連線將被阻塞,
interactive_timeout = 600 //伺服器關閉互動連線前等待活動的秒數
wait_timeout = 600 //伺服器關閉非互動連線之前等待活動的秒數
skip-name-resolve //#garnt時,必須使用ip,不能使用主機名,停用DNS解析
sync_binlog= 0 //可以保證事務的安全。預設為0
log_bin_trust_function_creators = 1 //開啟mysql可自訂函數
character-set-server = utf8 //設定字元集
default_storage_engine = InnoDB //定義預設引擎
#log
log-bin = /data/mysqldb/binlog/mysql-bin //指定binlog二進位日誌的檔案名稱
binlog_cache_size = 32m //binlog的快取大小
max_binlog_cache_size = 10g //設定最大的binlog快取
binlog_stmt_cache_size = 32m //設定最小的binlo快取
table_open_cache = 2048 //表格描述子快取大小,可減少檔案開啟/關閉次數
max_binlog_size = 1024m / /設定binlog日誌檔案最大為1G
binlog_format = mixed //binlog日誌格式.
log_output = FILE //確認輸出到日誌檔案
log-error = /data/mysqldb/log/mysql-error .log //mysql系統錯誤日誌輸出
slow_query_log = 1 //開啟慢速日誌記錄
slow_query_log_file = /data/mysqldb/log/mysql-slow_query.log //定義慢日誌輸出的路徑
general_log = 0 //定義普通日誌
general_log_file = /data/mysqldb/log/mysql-general-query.log //定義普通日誌輸出的路徑
expire-logs-days = 30 //日誌保留的時間30天
relay-log = /data/mysqldb/binlog/relay-bin //定義reloa_log複製的位址
relay-log-index= /data/mysqldb/binlog/relay-bin.index //定義reloa_log索引
#buffer
sort_buffer_size = 2m //#MyISAM表變更時重新排序所需的緩衝。一般64M足矣
read_buffer_size = 2m //用來做MyISAM表全表掃描的緩衝大小.
read_rnd_buffer_size = 2m //#當在排序之後,從一個已經排序好的序列中讀取行時,行資料會從這個緩衝中讀取來防止磁碟尋道
join_buffer_size = 2m //# InnoDB用來快取資料和
net_buffer_length = 16k //執行mysqldump時,net buffer length的最大上限是16Mb,預設值是1Mb
max_allowed_packet = 512m //每個連接獨立的大小.大小動態增加
bulk_insert_buffer_size = 32m //# 當突發插入被偵測到時此緩衝將被分配用於myisam
max_heap_table_size = 512m//#記憶體表的大小
tmp_table_size = 512m//# 內部(記憶體中)暫存資料表的最大大小
thread_cache_size = 100 //#快取可重複使用的執行緒數適當的調整
query_cache_size = 256m //#指定MySQL查詢結果緩衝區的大小。調優可以適當調整
query_cache_limit = 10m //#快取單一SQL的結果集上限。預設4KB。調優可以適當調整
query_cache_min_res_unit = 4k
key_buffer_size = 16m //#關鍵字緩衝的大小, 一般用來緩衝MyISAM表的索引區塊
myisam_sort_buffer_size = 64m //# 這在每個執行緒中被分配.所以在設定大值時需要小心
myisam_max_sort_file_size = 10g //MySQL重建索引時所允許的最大暫存檔案的大小如果檔案大小比此值更大,索引會透過鍵值緩衝建立(更慢)
myisam_repair_threads = 1 //#如果一個表格擁有超過一個索引, MyISAM
#innodb
innodb_file_per_table = 1 #//#可以修改InnoDB為獨立表空間模式,每個資料庫的每個表都會產生一個資料空間
innodb_data_file_path = ibdata1:2048M:autoextend //#如果你只有單一邏輯驅動保存你的資料,一個單一的自增文件就夠好了
innodb_log_file_size = 128m //#在日誌群組中每個日誌檔案的大小,
innodb_log_files_in_group = 3 //# 在日誌群組中的檔案總數. 通常來說2~3是比較好的
innodb_buffer_pool_size = 1g //innodb快取池大小
innodb_buffer_pool_instances = -1
innodb_max_dirty_pages_pct = 70 //#在InnoDB緩衝池中最大允許的髒頁的比例。 #innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16m # 用來緩衝日誌資料的緩衝區的大小. 當此值快滿時, InnoDB將必須刷新資料到磁碟區上#1odb_trxcom_vod ##0代表日誌隻大約每秒寫入日誌檔案並且日誌檔案刷新到磁碟# 2代表日誌寫入日誌檔案在每次提交後,但是日誌檔案只有大約每秒才會刷新到磁碟上
[mysql]
no-auto-rehash #可以在指令可以使用tab鍵補齊
prompt = (\u@\h) [\d]\_ #在Mysql指令顯示主機名稱
default-character-set = utf8 //設定字元集合
7>啟動服務與設定環境變數:
#:vim #vprom /
export PATH
#:source /etc/profile //生效
啟動服務服務
# # /etc/init.d/mysqld start
## 的時候。在主(master)伺服器上關閉此選項,在從(slave)上面開啟此選項
====================常見問題分析:
啟動資料庫後遇到的錯誤:
解決方法:## )一行對檔案配置」的註解 2》刪除掉ibdata1 ibprofile0 ibprofile1
1》需要建立一個缺少的資料夾; mysql:mysql /tmpopt/
3》可能還需要刪除一些文件,在自己的目錄下找到以下文件並刪除:#ibdata1 #11file1file#> 1file#1#11file#1#131file#1#131file#121file#121file#121file#。
以上是Mysql的編譯安裝以及簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!