亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

Linux系統下自行編譯安裝MySQL及基礎配置全過程解析

2024-07-24 13:08:47
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Linux系統下自行編譯安裝MySQL及基礎配置全過程解析,配置方面主要針對InnoDB引擎來講,需要的朋友可以參考下
 

安裝依賴:

CentOS:

# yum -y install wget gcc-c++ cmake make bison ncurses-devel perl unzip

Ubuntu:(使用ubuntu下面有不少需要root權限,請注意)

 

復制代碼代碼如下:

# sudo apt-get install -y g++ gcc make libpcre3 zlib1g libbz2-dev automake cmake perl libncurses5-dev bison

 

 

 

添加MySQL系統用戶

# groupadd mysql# useradd -r -g mysql mysql

提前建立好相關目錄

# mkdir /data/logs/mysql# mkdir /data/mysql

下載MySQL源代碼:

# wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz

配置

# cmake /
-DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql-5.6.12 /-DMYSQL_DATADIR=/data/mysql /-DMYSQL_UNIX_ADDR=/tmp/mysql.sock /-DMYSQL_USER=mysql /-DDEFAULT_CHARSET=utf8 /-DEFAULT_COLLATION=utf8_general_ci /-DWITH_INNOBASE_STORAGE_ENGINE=1 /-DENABLE_DOWNLOADS=1

配置釋義:

-DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql-5.6.12 設置安裝目錄
-DMYSQL_DATADIR=/data/mysql 設置數據庫存放目錄
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 設置UNIX socket 目錄
-DMYSQL_USER=mysql 設置運行用戶
-DDEFAULT_CHARSET=utf8 設置默認字符集,默認latin1
-DEFAULT_COLLATION=utf8_general_ci 設置默認校對規則,默認latin1_general_ci
-DWITH_INNOBASE_STORAGE_ENGINE=1 添加InnoDB引擎支持
-DENABLE_DOWNLOADS=1 自動下載可選文件,比如自動下載谷歌的測試包
-DMYSQL_TCP_PORT=3306 設置服務器監聽端口,默認3306
-DSYSCONFDIR=/data/etc 設置my.cnf所在目錄,默認為安裝目錄

更多參數執行 # cmake . -LH 或者查看官方說明

Note:

執行過程中會出現:

CMake Error: Problem with tar_extract_all(): Invalid argumentCMake Error: Problem extracting tar: /usr/local/src/mysql-5.6.12/source_downloads/gmock-1.6.0.zip

解決方法:
cd mysql目錄下面會發現有一個source_downloads目錄,需要解壓unzip gmock-1.6.0.zip,然后再重新執行上述配置過程。當然你也可以去掉-DENABLE_DOWNLOADS=1這個選項,不編譯谷歌的測試包也沒有什么問題,但是之前的某些版本會出現無法編譯的問題。

編譯安裝

# make && make install

建立鏈接文件,方便以后使用和升級:

# ln -s /usr/local/server/mysql-5.6.12 /usr/local/server/mysql

設置權限:

# chown -R mysql:mysql /usr/local/server/mysql# chown -R mysql:mysql /usr/local/server/mysql-5.6.12# chown -R mysql:mysql /data/mysql# chown -R mysql:mysql /data/logs/mysql

初始化數據庫

 

復制代碼代碼如下:

 

# /usr/local/server/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/server/mysql --collation-server=utf8_general_ci

 


這時候會出現以下警告,下面配置my.cnf會解決這個問題
詳情請查看 MySQL 5.6 中 TIMESTAMP 的變化

 

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
配置啟動項目:

# cp /usr/local/server/mysql/support-files/mysql.server /etc/init.d/mysql

修改安裝目錄下my.cnf,部分參數需要結合實際情況進行修改

[mysqld] datadir = /data/mysqlsocket = /tmp/mysql.sockpid-file = /data/logs/mysql/mysql.piduser = mysqlport = 3306default_storage_engine = InnoDB # InnoDB#innodb_buffer_pool_size = 128M#innodb_log_file_size = 48Minnodb_file_per_table = 1innodb_flush_method = O_DIRECT # MyISAM#key_buffer_size = 48M # character-setcharacter-set-server=utf8collation-server=utf8_general_ci # name-resolveskip-host-cacheskip-name-resolve # LOGlog_error = /data/logs/mysql/mysql-error.loglong_query_time = 1slow-query-logslow_query_log_file = /data/logs/mysql/mysql-slow.log # Othersexplicit_defaults_for_timestamp=true#max_connections = 500open_files_limit = 65535sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [client]socket = /tmp/mysql.sockport = 3306Note:

被注釋掉的部分語句,需要結合業務和硬件資源進行修改,所以先占位,使用默認值即可。my.cnf文件中不能出現拼寫錯誤,否則,接下來啟動會出現很多意想不到的錯誤,如果出現無法啟動請參看:mysql-error.log文件。權限設置不當也會導致啟動失敗。

啟動前,再次確認一遍權限:

很有可能現在my.cnf的權限不是mysql,同時檢查一下/etc/my.cnf是否存在,如果存在則刪除?。?!

# chown -R mysql:mysql /usr/local/server/mysql-5.6.12

啟動mysql:

# service mysql start

添加環境變量

#echo 'export PATH=$PATH:/usr/local/server/mysql/bin'>> /etc/profile

安全設置(設定初始密碼,移除匿名用戶,移除測試數據庫):

# /usr/local/server/mysql/bin/mysql_secure_installation

添加開機啟動

CentOS:

# chkconfig mysql on

Ubuntu:

# sudo update-rc.d mysql defaults

配置須知:

MySQL有大量可以修改的配置選項,通常只需要把基本的項配置正確,應該將更多的時間花在schema的優化、索引上,以及查詢設計上。正確地配置MySQL的基本配置項后,再花力氣去修改其他配置選項的收益通常就比較小了。
過度優化的服務器導致的潛在風險很大,容易頻繁崩潰、運行緩慢。
MySQL大多數默認配置選項已經是最佳配置了,所以最好不要做太多的改動,上文設置的參數對于大多數人已經夠多了。
沒有一勞永逸的配置,隨著數據庫內數據、用戶數量的變化,過一段時間后,可以有選擇地調整數據庫的配置。
基本配置選項詳解:

socket = /tmp/mysql.sockpid_file = /data/logs/mysql/mysql.pid

socket和pid_file 文件如果不指定位置,放在默認編譯位置,在不同的MySQL版本里可能會導致一些錯誤

default_storage_engine = InnoDB

設定默認存儲引擎,創建表的時候最好顯式進行存儲引擎的配置

innodb_buffer_pool_size = 2Ginnodb_log_file_size = 128Minnodb_file_per_table = 1innodb_flush_method = 0_DIRECT

InnoDB最重要的兩個選項為緩沖池大小
innodb_buffer_pool_size和 日志文件大小innodb_log_file_size,默認值一般都太小。

如果大部分表都是InnoDB表,InnoDB緩沖池的設置或許比其他任何東西都需要內存。InnoDB并不僅僅緩存索引:它還會緩存數據、自適應哈系索引、插入緩沖(Insert Buffer)、鎖,以及其他內部數據結構。InnoDB還使用緩沖池來幫助延遲寫入,合并多個寫入操作,一起順序寫回??傊琁nnoDB嚴重依賴緩沖池,必須分配足夠內存。

Note:
緩沖池越大,預熱和關閉都需要很長時間。

InnoDB使用日志來減少事務提交的開銷。因為日志已經記錄了事務,就無須在每個事務提交時把緩沖池的脹快刷新到磁盤中。InnoDB用日志把隨機I/O變成順序I/O。一旦日志安全寫到磁盤,事務就持久化了。如果斷電,InnoDB可以重放日志并且恢復已經提交的事務。
整體日志大小受控于innodb_log_file_size和innodb_log_file_in_group兩個參數之乘積。一般需要設置幾百MB甚至上GB。作為經驗法則,一般日志文件全部大小,應該足夠容納服務器一小時的活動內容。

緩沖池大小設置方法:
從服務器總內存開始
減去操作系統占用內存和其他服務占用內存(如果還有其他服務的話)
減去MySQL自身需要內存,例如為每個查詢操作分配一些緩沖。
減去足夠讓操作系統緩存InnoDB日志文件的內存,至少是足夠緩存最近經常訪問的部分。再減去一些可以緩存二進制日志的最后一部分,以防止復制產生了延遲,備庫可能讀取主庫上舊的二進制日志文件,給主庫內存造成壓力。
減去其他MySQL緩沖和緩存需要的內存,如MyISAM鍵緩存(key_buffer_size),或者查詢緩存(query cache)
處以105%,向下取舍一個合理值。

Note:設置不需要很精確,而且寧可謹慎,而不要設置過大,如果設置少了20%可能只產生很小的影響,但是如果大了20%則可能造成很嚴重的問題:內存交換、磁盤抖動、內存耗盡和死機。

#MyISAMkey_buffer_size = 128M

MyISAM自身只緩存索引,不緩存數據(依賴操作系統緩存數據)。如果大部分為MyISAM表,就應該分配較大key_buffer_size。
再分配多大內存前,首先了解一下,MyISAM占用了多大的空間,肯定不需要分配比需要緩存的索引數據還大的內存(有時候為數據量擴增預留一些,會設置比較大)。
有兩個方法計算索引大小:
使用SQL語句,查詢INFORMATION——SCHEMA表的INDEX_LENGTH字段,把他們相加即可。

SELECT SUM( INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLESWHERE ENGINE='MYISAM';

使用的UNIX系統,則使用以下命令

# du -sch `find /mysqldatadir -name “*.MYI”`

鍵緩存需要存儲多大的值?
不要超過索引總大小,也不要超過為操作系統緩存保留的總大小。取兩者較小值。

緩沖區使用率計算,通過SHOW STATUS和SHOW VARIABLES命令查看以下變量:

100 - ( ( Key_blocks_unused * key_cache_block_size) * 100 / key_buffer_size )

如果服務器運行很長一段時間之后,還是沒有使用完所有緩沖鍵,就可以把緩沖鍵調小一點。

鍵緩沖命中率
從經驗上來講,每秒未命中次數更有用,假定一個磁盤每秒可以產生100個隨機讀,每秒5次緩存未命中則不會導致I/O繁忙,每秒80次則可能導致I/O繁忙。計算公式:

Key_reads / Uptime

設定默認字符集和編碼

# character-set-servercharacter-set-server=utf8collation-server=utf8_general_ci

以下選項設定僅使用IP來鏈接MySQL服務器,省略了DNS查詢時間
閱讀材料:http://dev.mysql.com/doc/refman/5.6/en/host-cache.html

# name-resolveskip-name-resolveskip-host-cache

設定錯誤日志和慢查詢日志。大于1s的為慢查詢

# LOGlog_error = /data/logs/mysql/mysql-error.loglong_query_time = 1slow_query_logslow_query_log_file = /data/logs/mysql/mysql-slow.log# Others#timestamp默認設置,5.6.6后不設置會報錯explicit_defaults_for_timestamp=true

設定同時處理的最大鏈接,保證應用激增產生而不堪重負,當查詢不能執行,那打開一個鏈接沒有任何好處,所以被“太多鏈接”的錯誤拒絕是一個快速而代價下的失敗方式。具體設定需要參考預想的最大并發數和本機配置。

max_connections = 500

table_open_cache was known as table_cache in MySQL 5.1.2 and earlier.
table_open_cache應該設置足夠大,避免總是重新打開和解析表定義。如果Open_tables的值每秒變化很大,那么table_open_cache可能設置偏小。這個值從max_connections的10倍開始設置比較好,但是,大部分情況下不要超過10000.

table_open_cache = 5000

如果在段時間內不斷有錯誤鏈接,比如:權限錯誤,應用配置出錯等??蛻舳诉_到max_connect_errors設定次數,就會被加入黑名單,無法連接,直到再次刷新主機緩存。(如何操作?)可以有效防止暴力破解密碼。

max_connect_errors = 2000

在典型的Linux系統上我們把open_files_limit設置的盡可能大?,F代操作系統中打開文件句柄開銷都較小。如果這個參數設置不夠大,會出現經典的24號錯誤:”too many open files”。

open_files_limit = 65535


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久免费| 欧美在线观看网址综合| 992tv在线成人免费观看| 成人精品网站在线观看| 国产成人在线一区| 欧美大尺度电影在线观看| 97视频免费观看| 久久精品国产v日韩v亚洲| 日韩中文字幕在线免费观看| 欧美日韩福利在线观看| 亚洲欧美激情四射在线日| 日韩在线视频网站| 欧美精品videossex性护士| 狠狠躁天天躁日日躁欧美| 日韩暖暖在线视频| xxxxx成人.com| 久久久99免费视频| 欧美另类69精品久久久久9999| 日韩精品视频在线观看免费| 国产精品揄拍一区二区| 日韩欧美在线中文字幕| 亚洲成人a**站| 中文字幕在线看视频国产欧美在线看完整| 日韩精品在线观看一区| 日韩精品免费在线视频观看| 日韩电影中文字幕在线观看| 日韩成人中文字幕在线观看| 国产精品视频男人的天堂| 日韩高清中文字幕| 国产一区二区三区直播精品电影| 久久精品成人欧美大片古装| 日韩精品在线免费播放| 欧美电影《睫毛膏》| 国产亚洲精品美女久久久| 亚洲精品国偷自产在线99热| 午夜精品视频网站| 色悠悠久久88| 亚洲电影第1页| 亚洲成人教育av| 中文字幕无线精品亚洲乱码一区| 国产精品中文字幕在线观看| 欧美夜福利tv在线| 亚洲女人天堂成人av在线| 欧美一级大片在线观看| 伊人伊成久久人综合网小说| 成人a在线视频| 7m精品福利视频导航| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久999| 国产精品久久久久国产a级| 亚洲第一网站男人都懂| 精品激情国产视频| 97视频国产在线| 欧美性猛交99久久久久99按摩| 伊人一区二区三区久久精品| 日韩高清免费观看| 国产午夜精品美女视频明星a级| 九九视频直播综合网| 欧美高清视频在线观看| 操人视频在线观看欧美| 欧美性猛交xxxx免费看| 亚洲性猛交xxxxwww| 欧美性猛交xxxx偷拍洗澡| 国产精品盗摄久久久| 精品中文字幕在线观看| 日韩h在线观看| 久久久久在线观看| 久久成人综合视频| 久久精品电影网站| 亚洲国产精品va在线看黑人| 高跟丝袜一区二区三区| 久久成人综合视频| 7777kkkk成人观看| 国产欧美一区二区| 亚洲天堂影视av| 欧美日韩另类字幕中文| 国产精品流白浆视频| 久久人人爽国产| 欧美激情精品久久久久久久变态| 国产成人免费91av在线| 人人做人人澡人人爽欧美| 宅男66日本亚洲欧美视频| 日韩欧美国产成人| 日韩视频欧美视频| 欧美成人免费网| 亚洲香蕉伊综合在人在线视看| 8x拔播拔播x8国产精品| 久色乳综合思思在线视频| 国产精品小说在线| 久久久精品在线观看| 国产精品白嫩美女在线观看| 亚洲欧美国产一本综合首页| 91色琪琪电影亚洲精品久久| 亚洲男人天堂2019| 欧美老女人性生活| 国产伊人精品在线| 欧美最猛性xxxxx免费| 国产精品久久久久一区二区| 久久精品视频在线观看| 欧美最近摘花xxxx摘花| 国产精品99久久久久久www| 一本大道亚洲视频| 精品国产老师黑色丝袜高跟鞋| 伊人久久免费视频| 亚洲国产精品久久久久秋霞不卡| 欧美成人免费va影院高清| 欧美激情欧美激情| 亚洲男人天堂2024| 成人免费午夜电影| 日韩av综合中文字幕| 亚洲女在线观看| 久久久久久久久久久免费| 亚洲色图第一页| 热99久久精品| 亚洲国产精品成人av| 日本免费在线精品| 日韩美女在线播放| 久久777国产线看观看精品| 亚洲第一级黄色片| 国产精品日韩久久久久| 国产热re99久久6国产精品| 国产丝袜高跟一区| 亚洲国产欧美在线成人app| 国产一区二区在线免费| 久久手机免费视频| 成人黄色免费看| 国产综合久久久久| 久久成人亚洲精品| 欧美电影免费观看高清完整| 国产精品v片在线观看不卡| 亚洲国产私拍精品国模在线观看| 欧美专区在线观看| 欧美电影免费观看电视剧大全| 国产精品丝袜久久久久久不卡| 日韩激情视频在线| 欧美韩日一区二区| 国产日韩中文在线| 综合国产在线观看| 91欧美精品午夜性色福利在线| 九九热这里只有精品免费看| 亚洲加勒比久久88色综合| 8x海外华人永久免费日韩内陆视频| 欧美激情视频一区二区三区不卡| 久久久久久久999精品视频| 亚洲一区二区自拍| 超碰97人人做人人爱少妇| 国产亚洲精品久久久久动| 国产成人aa精品一区在线播放| 爽爽爽爽爽爽爽成人免费观看| 国产欧美日韩高清| 亚洲国产精彩中文乱码av在线播放| 日韩在线观看电影| 成人免费视频在线观看超级碰| 国产日韩欧美电影在线观看| 亚洲人成网7777777国产| 国产成人在线精品| 国产精品户外野外| 成人免费视频网| 日韩欧美视频一区二区三区| 亚洲成人精品久久| 国产有码一区二区| 国产日韩欧美在线视频观看| 亚洲欧美在线播放| 91精品国产综合久久久久久久久|