Mysql的編譯安裝以及容易介紹
發(fā)表時間:2023-07-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]==========MYSQL工作原理圖: 1》數(shù)據(jù)庫簡介:簡單的說數(shù)據(jù)庫(database)就是一個存儲數(shù)據(jù)的倉庫,它將數(shù)據(jù)按照特定的規(guī)律存儲到磁盤上,通過數(shù)據(jù)庫管理系統(tǒng),能夠有效的管理存儲在數(shù)...
==========MYSQL工作原理圖:
1》數(shù)據(jù)庫簡介:簡單的說數(shù)據(jù)庫(database)就是一個存儲數(shù)據(jù)的倉庫,它將數(shù)據(jù)按照特定的規(guī)律存儲到磁盤上,通過數(shù)據(jù)庫管理系統(tǒng),能夠有效的管理存儲在數(shù)據(jù)庫中 的數(shù)據(jù);
SQL語言: DBMS是通過SQL語言來進行數(shù)據(jù)庫管理的。SQL語言是一種查詢和設(shè)計語言,主要用于存儲數(shù)據(jù),查詢數(shù)據(jù) 更新和管理關(guān)系數(shù)據(jù)庫;
SQL語言總共分為三個部分
DDL(Data Definition Language)語句,用于定義數(shù)據(jù)庫表、試圖索引和觸發(fā)器等等
create
alter
drop
rename
truncate
comment
DML(Data Maniplulation Language)語句用于插入數(shù)據(jù),查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)
select
insert
update
delete
DCL(Data Control Language)語句,用于控制用戶的訪問權(quán)限
grant
revoke
常見的數(shù)據(jù)庫系統(tǒng)有哪些:
1.甲骨文Oracle
2.IBM的DB2
3.Sybase
4.微軟Access和SQL Server
5.開源PostgreSQL
6.開源Mysql
Mysql特性:
1.跨平臺,支持多種操作系統(tǒng),AIX FreeBSD HP-UX Linux MacOS NovellNetware OpenBSD Solaris windows 等等
2.支持多線程,可以充分的利用硬件資源(CPU資源)
3.支持大型數(shù)據(jù)庫,可以處理擁有上千萬條大型數(shù)據(jù)庫。
4.支持多種插件式存儲引擎
mysql-server-5.6
1)InnoDB現(xiàn)在可以限制大量表打開的時候內(nèi)存占用過多的問題(比如這里提到的)(第三方已有補丁)
2)InnoDB性能加強。如分拆kernel mutex;flush操作從主線程分離;多個perge線程;大內(nèi)存優(yōu)化等
3)InnoDB死鎖信息可以記錄到 error 日志,方便分析
4)MySQL5.6支持延時復(fù)制,可以讓slave跟master之間控制一個時間間隔,方便特殊情況下的數(shù)據(jù)恢復(fù)。
5)表分區(qū)功能增強
6)MySQL行級復(fù)制功能加強,可以降低磁盤、內(nèi)存、網(wǎng)絡(luò)等資源開銷(只記錄能確定行記錄的字段即可)
7)Binlog實現(xiàn) crash-safe
8)復(fù)制事件采用crc32校驗,增強master/slave 復(fù)制數(shù)據(jù)一致性
9)新增 log_bin_basename (以前variables里面沒有binlog位置信息,對數(shù)據(jù)庫的監(jiān)管很不方便)
2》編譯安裝MYSQL:
1>安裝依賴包:
yum install gcc gcc-c++ ncurses-devel perl cmake bison
2>創(chuàng)建用戶:
# groupadd mysql
# useradd mysql –g mysql –s /sbin/nologin
#mkdir -p /usr/local/mysql //Mysql的安裝目錄
#mkdir -p /data/mysqldb //Mysql數(shù)據(jù)目錄
#mkdir -p /data/mysqldb/binlog //創(chuàng)建BINLOG日志目錄
#mkdir -p /data/mysqldb/log //創(chuàng)建MYSQL 日常LOG目錄
3>安裝Mysql:
#tar -xvf mysql-5.6.31.tar.gz
#cd mysql-5.6.31
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=gbk \
-DDEFAULT_COLLATION=gbk_chinese_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysqldb \
-DMYSQL_TCP_PORT=3306 \
***注意:重新運行配置,需要刪除CMakeCache.txt文件
==========編譯解析:
#cmake 編譯命令
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 設(shè)置mysql安裝目錄
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 設(shè)置監(jiān)聽套接字路徑,這必須是一個絕對路徑名。默認(rèn)為/tmp/mysql.sock
-DSYSCONFDIR=/etc 配置文件放在/etc/下面
-DDEFAULT_CHARSET=gbk 設(shè)置服務(wù)器的字符集。
缺省情況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake文件包含允許的字符集名稱列 表。
-DDEFAULT_COLLATION=gbk_chinese_ci 設(shè)置服務(wù)器的排序規(guī)則。
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
存儲引擎選項:
MyISAM,MERGE,MEMORY,和CSV引擎是默認(rèn)編譯到服務(wù)器中,并不需要明確地安裝。
靜態(tài)編譯一個存儲引擎到服務(wù)器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的存儲引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEM) (Performance Schema)
-DMYSQL_DATADIR=/data/mysqldb 設(shè)置mysql數(shù)據(jù)庫文件目錄
-DMYSQL_TCP_PORT=3306 設(shè)置mysql服務(wù)器監(jiān)聽端口,默認(rèn)為3306
-DENABLE_DOWNLOADS=1
是否要下載可選的文件。例如,啟用此選項(設(shè)置為1),cmake將下載谷歌所使用的測試套件運行單元測試
4> make && make isntall
5>初始化:
給Mysql安裝目錄進行授權(quán)
# chown mysql:mysql /usr/local/mysql -R
給Mysql數(shù)據(jù)存儲目錄進行授權(quán)
# chown mysql:mysql /data/mysqldb -R
給Mysl日志目錄進行授權(quán)
#chown mysql:mysql /data/mysqldb/binlog/
#chown mysql:mysql /data/mysqldb/log/
開始初始化:
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb
復(fù)制Mysql服務(wù)啟動腳本
# cp /usr/local/mysql/support-files/mysql.server /mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
修改mysql服務(wù)啟動腳本 (多實例才需要)
# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysqldb
6>配置文件
以后在企業(yè)里面沒有現(xiàn)成my.cnf ,如果編譯安裝后,沒有在/etc/找到my.cnf 那么請到原始的編譯目錄,也就是解壓包的目錄里面找到support-files這個目 錄,將my-default.cnf 拷貝到/etc/my.cnf;
# cd mysql-5.6.31
#cp support-files/my-default.cnf /etc/my.cnf
=========配置文件詳解:
# vim /etc/my.cnf
[client]
port = 3306 //客戶端所連接的端口號
socket = /tmp/mysql.sock //客戶端所連接的sock文件存放位置
[mysqld]
#base
port = 3306 //mysql的默認(rèn)端口號,可以修改
user = mysql //mysql用戶指定
socket = /tmp/mysql.sock //連接所使用的端口號
pid-file = /tmp/mysql.pid //進程運行的主PID文件
basedir = /usr/local/mysql //Mysql安裝目錄
datadir = /data/mysqldb //Mysql數(shù)據(jù)目錄
tmpdir = /opt/mysqltmp //Mysql臨時表目錄
open_files_limit = 10240 //打開文件句柄的數(shù)量
explicit_defaults_for_timestamp
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
federated //支持sql語法和數(shù)據(jù)校驗等.sql_mode三種模式
ANSI模式、寬松模式,對插入數(shù)據(jù)進行校驗,如果不符合定義類型或長度,對數(shù)據(jù)類型調(diào)整或者截斷保存,報“warning”警告
TRADITIONAL模式、嚴(yán)格模式,當(dāng)向mysql數(shù)據(jù)插入數(shù)據(jù)時、進行數(shù)據(jù)的嚴(yán)格校驗,保證數(shù)據(jù)不能插入,報error錯誤,用于事物時,會進行事物回滾.
STRICT_TRANS_TABLES模式。嚴(yán)格模式,進行數(shù)據(jù)的嚴(yán)格校驗,錯誤數(shù)據(jù)不能插入,報error錯誤.
server_id = 706 //主從復(fù)制唯一的服務(wù)辨識號,數(shù)值位于 1 到
#replicate-do-db = posp //定義唯一復(fù)制的庫
#replicate-ignore-db = mysql //定義唯一復(fù)制的庫
#log-slave-updates = 1 //這個選項之再主從復(fù)制。從服務(wù)器上打開復(fù)制主的信息
event_scheduler=1 //打開時間調(diào)度器
max_connections = 2000 //#最大并發(fā)連接數(shù) ,增大該值需要相應(yīng)增加允許打開的文件描述符數(shù)
max_connect_errors = 10000 //如果某個用戶發(fā)起的連接error超過該數(shù)值,則該用戶的下次連接將被阻塞,
interactive_timeout = 600 //服務(wù)器關(guān)閉交互連接前等待活動的秒數(shù)
wait_timeout = 600 //服務(wù)器關(guān)閉非交互連接之前等待活動的秒數(shù)
skip-name-resolve //#garnt時,必須使用ip,不能使用主機名,禁用DNS解析
sync_binlog=0 //可以保證事務(wù)的安全。缺省為0
log_bin_trust_function_creators = 1 //打開mysql可自定義函數(shù)
character-set-server = utf8 //設(shè)定字符集
default_storage_engine = InnoDB //定義默認(rèn)引擎
#log
log-bin = /data/mysqldb/binlog/mysql-bin //指定binlog二進制日志的文件名稱
binlog_cache_size = 32m //binlog的緩存大小
max_binlog_cache_size = 10g //設(shè)定最大的binlog緩存
binlog_stmt_cache_size = 32m //設(shè)定最小的binlo緩存
table_open_cache = 2048 //表描述符緩存大小,可減少文件打開/關(guān)閉次數(shù)
max_binlog_size = 1024m //設(shè)置binlog日志文件最大為1G
binlog_format = mixed //binlog日志格式.
log_output = FILE //確認(rèn)輸出到日志文件
log-error = /data/mysqldb/log/mysql-error.log //mysql系統(tǒng)錯誤日志輸出
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復(fù)制的地址
relay-log-index= /data/mysqldb/binlog/relay-bin.index //定義reloa_log索引
#buffer
sort_buffer_size = 2m //#MyISAM表發(fā)生變化時重新排序所需的緩沖。一般64M足矣
read_buffer_size = 2m //用來做MyISAM表全表掃描的緩沖大小.
read_rnd_buffer_size = 2m //#當(dāng)在排序之后,從一個已經(jīng)排序好的序列中讀取行時,行數(shù)據(jù)將從這個緩沖中讀取來防止磁盤尋道
join_buffer_size = 2m //# InnoDB用來緩存數(shù)據(jù)和
net_buffer_length = 16k //執(zhí)行mysqldump時,net buffer length的最大上限是16Mb,默認(rèn)值是1Mb
max_allowed_packet = 512m //每個連接獨立的大小.大小動態(tài)增加
bulk_insert_buffer_size = 32m //# 當(dāng)突發(fā)插入被檢測到時此緩沖將被分配用于myisam
max_heap_table_size = 512m//#內(nèi)存表的大小
tmp_table_size = 512m//# 內(nèi)部(內(nèi)存中)臨時表的最大大小
thread_cache_size = 100 //#緩存可重用的線程數(shù),可以適當(dāng)?shù)恼{(diào)整
query_cache_size = 256m //#指定MySQL查詢結(jié)果緩沖區(qū)的大小。調(diào)優(yōu)可以適當(dāng)調(diào)整
query_cache_limit = 10m //#緩存單條SQL的結(jié)果集上限。默認(rèn)4KB。調(diào)優(yōu)可以適當(dāng)調(diào)整
query_cache_min_res_unit = 4k
key_buffer_size = 16m //#關(guān)鍵詞緩沖的大小, 一般用來緩沖MyISAM表的索引塊
myisam_sort_buffer_size = 64m //# 這在每個線程中被分配.所以在設(shè)置大值時需要小心
myisam_max_sort_file_size = 10g //MySQL重建索引時所允許的最大臨時文件的大小如果文件大小比此值更大,索引會通過鍵值緩沖創(chuàng)建(更慢)
myisam_repair_threads = 1 //#如果一個表擁有超過一個索引, MyISAM
#innodb
innodb_file_per_table = 1 #//#可以修改InnoDB為獨立表空間模式,每個數(shù)據(jù)庫的每個表都會生成一個數(shù)據(jù)空間
innodb_data_file_path = ibdata1:2048M:autoextend //#如果你只有單個邏輯驅(qū)動保存你的數(shù)據(jù),一個單個的自增文件就足夠好了
innodb_log_file_size = 128m //#在日志組中每個日志文件的大小,
innodb_log_files_in_group = 3 //# 在日志組中的文件總數(shù). 通常來說2~3是比較好的
innodb_buffer_pool_size = 1g //innodb緩存池大小
innodb_buffer_pool_instances = -1
innodb_max_dirty_pages_pct = 70 //#在InnoDB緩沖池中最大允許的臟頁面的比例. 60-90都可以
#innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16m # 用來緩沖日志數(shù)據(jù)的緩沖區(qū)的大小. 當(dāng)此值快滿時, InnoDB將必須刷新數(shù)據(jù)到磁盤上
innodb_flush_log_at_trx_commit = 2
0代表日志只大約每秒寫入日志文件并且日志文件刷新到磁盤# 2代表日志寫入日志文件在每次提交后,但是日志文件只有大約每秒才會刷新到磁盤上
[mysql]
no-auto-rehash #可以在命令可以使用tab鍵補齊
prompt = (\u@\h) [\d]\_ #在Mysql命令顯示主機名字
default-character-set = utf8 //設(shè)定字符集合
7>啟動服務(wù)和設(shè)置環(huán)境變量:
#:vim /etc/profile 文件的最后面。
MYSQL=/usr/local/mysql/bin
PATH=$PATH:$MYSQL
export PATH
#:source /etc/profile //生效
啟動服務(wù)
# /etc/init.d/mysqld start
注意:
log_slave_updates 主從復(fù)制的時候。在主(master)服務(wù)器上關(guān)閉此選項,在從(slave)上面開啟此選項
====================常見問題分析:
啟動數(shù)據(jù)庫后遇到的錯誤:
解決方法:
1》在配置文件中注釋掉 關(guān)于 innodb_data_file_path 的一行;
2》 刪除掉 ibdata1 ibprofile0 ibprofile1
錯誤二:
1》需要創(chuàng)建一個缺少的文件夾;
2》對要創(chuàng)建的文件夾的上一目錄進行權(quán)限設(shè)置:
chown mysql:mysql /tmpopt/
3》可能還需要刪除一些文件,在自己的目錄下找到以下文件并刪除:
ibdata1 ibprofile0 ibprofile1
以上就是Mysql的編譯安裝以及簡單介紹的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。