mysql5.5編譯安裝

MySQL是一個關係型數據庫管理系統 ,由瑞典MySQL AB公司開發,目前屬於Oracle 公司。MySQL分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼 這一特色,通常中小型網站的開發都選擇MySQL做爲網站數據庫html

 

CentOS 6 mysql5.5安裝配置 mysql

1 安裝所需軟件 linux

2 安裝cmake c++

3 tar.gz形式安裝mysql sql

4 配置與啓動
數據庫

5 rpm形式安裝mysql windows

6 mysql配置參數詳細說明
緩存


MySQL自5.5版本之後,就開始使用cmake 編譯工具了。
tar.gz形式安裝 mysql5.5 tar.gz 編譯要好久  可是最適合本身的需求  存放在定義的目錄結構,MySQL 我安裝的版本5.5.14。

1 安裝所須要系統庫相關庫文件
安全

[root@localhost ~]# yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* 服務器


這兩個網站mysql 資源比較豐富
ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/
ftp://ftp.pku.edu.cn/open/db/MySQL/


2. 安裝 cmake 

[root@localhost ~]# wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz
[root@localhost ~]# yum install cmake

 
 3. 編譯安裝 MySQL 5.5.14

[root@localhost ~]# wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.14.tar.gz


[root@localhost ~]# /usr/sbin/groupadd mysql
[root@localhost ~]# /usr/sbin/useradd -g mysql mysql

[root@localhost ~]# tar xvf mysql-5.5.14.tar.gz
[root@localhost ~]# cd mysql-5.5.14/

[root@localhost ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_USER=mysql

以上參數等說明:
DCMAKE_INSTALL_PREFIX=/usr/local/mysql # mysql安裝的主目錄,默認爲/usr/local/mysql
DMYSQL_DATADIR=/usr/local/mysql/data # mysql數據庫文件的存放目錄,能夠自定義
DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock # 系統Socket文件(.sock)設置,基於該文件路徑進行Socket連接,必須爲絕對路徑
DSYSCONFDIR=/etc # mysql配置文件 my.cnf的存放地址,默認爲/etc下
DMYSQL_TCP_PORT=3306 # 數據庫服務器監聽端口,默認爲3306
DENABLED_LOCAL_INFILE=1 # 容許從本地導入數據
DWITH_READLINE=1 # 快捷鍵功能
DWITH_SSL=yes # 支持 SSL
DMYSQL_USER=mysql # 默認爲mysql

//下面3個是數據庫編碼設置
DEXTRA_CHARSETS=all # 安裝全部擴展字符集,默認爲all
DDEFAULT_CHARSET=utf8 # 使用 utf8 字符
DDEFAULT_COLLATION=utf8_general_ci # 校驗字符

//下面5個是數據庫存儲引擎設在
DWITH_MYISAM_STORAGE_ENGINE=1 # 安裝 myisam 存儲引擎
DWITH_INNOBASE_STORAGE_ENGINE=1 # 安裝 innodb 存儲引擎
DWITH_ARCHIVE_STORAGE_ENGINE=1 # 安裝 archive 存儲引擎
DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安裝 blackhole 存儲引擎
DWITH_PARTITION_STORAGE_ENGINE=1 # 安裝數據庫分區

執行安裝,須要等很長時間

[root@localhost ~]#  make
[root@localhost ~]#  make install
 
[root@localhost ~]# chmod +w /usr/local/mysql
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql   #改變目錄擁有者與所屬組

[root@localhost ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/lib/libmysqlclient.so.16
[root@localhost ~]# cd support-files/
[root@localhost ~]# cp my-large.cnf /etc/my.cnf # 選擇默認 配置文件 適合大型服務器
[root@localhost ~]# cp mysql.server /etc/init.d/mysqld    # 複製啓動文件


4. 配置啓動MySQL 5.5.14

1. 如有須要請先修改 mysql 的配置 my.cnf
[root@localhost ~]# vi /etc/my.cnf
在[mysqld]下面添加
basedir = /usr/local/mysql-5.5.14
datadir = /usr/local/mysql-5.5.14/data
log-error = /usr/local/mysql-5.5.14/mysql_error.log
pid-file = /usr/local/mysql-5.5.14/data/mysql.pid
default-storage-engine=MyISAM
user = mysql
 
2. mysql 初始化安裝  執行如下命令

[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db \
--basedir=/usr/local/mysql \
--datadir=/var/mysql/data \
--user=mysql


3. 將 mysql 加入開機啓動
[root@localhost ~]# chmod +x /etc/init.d/mysqld
[root@localhost ~]# vi /etc/init.d/mysqld (編輯此文件,查找並修改如下變量內容:)
basedir=/usr/local/mysql
datadir=/var/mysql/data

[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# chkconfig --level 345 mysqld on

爲MySQL配置環境變量,之後使用起來方便
# export PATH=/usr/local/mysql/bin:$PATH

4. 啓動 mysql
[root@localhost ~]# service mysqld start
設置密碼
[root@localhost ~]# mysql_secure_installation

注意:若是出現 Starting MySQL...The server quit without updating PID file

 報錯:

Starting MySQL...The server quit without updating PID file

 
查看錯誤日誌

情景1:
 
110206 12:58:35 [ERROR] Can't start server : Bind on unix socket: No such file or directory

110206 12:58:35 [ERROR] Do you already have another mysqld server running on socket: /mysql/mysqldir/data/mysql.sock ?

110206 12:58:35 [ERROR] Aborting
[root@localhost ~]# ps -ef | grep mysql # 未發現有mysqld.
[root@localhost ~]# netstat -an | grep 3306 也未發現異常.
最後從mysql安裝目錄下從新複製一個配置文件到/etc/my.cnf
修改相應參數.因而問題解決


情景2:
 /mysql/mysqldir/bin/mysqld: Table 'mysql.plugin' doesn't exist
 [ERROR] Can't open the mysql.plugin table. Please run my        sql_upgrade to create it.
緣由:編譯安裝後忘記初始化表.
解決:運行mysql_install_db


 其餘狀況,查看日誌文件(個人是localhost.localdomain.err,具體因人而異),而後具體分析;


tar.gz 安裝形式完成。

5. rpm 形式安裝

下載所需軟件 進行安裝

[root@localhost ~]# rpm -ivh libaio-0.3.93-4.i386.rpm
    rpm -ivh MySQL-server-5.5.14-1.rhel5.i386.rpm
    rpm -ivh MySQL-client-5.5.14-1.rhel5.i386.rpm
    rpm -ivh MySQL-shared-5.5.14-1.rhel5.i386.rpm
    rpm -ivh MySQL-devel-5.5.14-1.rhel5.i386.rpm

啓動MySQL服務器

[root@localhost ~]# service mysql start
設置密碼
[root@localhost ~]# mysql_secure_installation


linux採用rpm方式從新安裝mysql,完成後Mysql啓動時候報告錯誤,找不到pid文件

Starting MySQL..Manager of pid-file quit without updating file.[FAILED]
此時須要採用safe模式啓動

[root@localhost ~]# /usr/bin/mysqld_safe --user=mysql

特別要注意kill舊Mysql進程:

安裝mysql 出現以下相似錯誤的話

conflicts with file from package mysql-libs-


須要把之前安裝的mysql相關的包卸載掉。

說明:使用rpm安裝等時候,不能向編譯安裝同樣選擇安裝路徑,如今用命令來查看一下mysql都安裝到哪裏去了

[root@localhost ~]# find / -name mysql -print
/etc/logrotate.d/mysql
/etc/rc.d/init.d/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/var/lock/subsys/mysql
/usr/lib/mysql
/usr/include/mysql
/usr/share/mysql
/usr/bin/mysql
而 data默認放在:/var/lib/mysql
mysql默認安裝在了:/usr/share/mysql中

   

6. mysq配置參數詳細說明


mysql最大併發數|Linux修改Mysql最大併發鏈接數

第一步,先查看下當前MYSQL的最大鏈接數

[root@localhost ~]# /usr/local/mysql/bin/mysqladmin -uroot -ppassword variables |grep max_connections (注意,root替換成你的數據庫,不過通常默認就是root,password是數據庫密碼,) 輸入以上命令後會顯示下面的信息,這個是最大鏈接數是100

| max_connections | 100 //默認是100

第二步 ,修改最大鏈接數爲200

[root@localhost ~]# nano /etc/my.cnf

輸入以上命令後會進入my.cnf文件內容,在其中加入下面這行代碼

max_connections=200

使用上下箭頭移動光標,輸入後按ctrl+o組合鍵後保存,保存的時候要再按回車鍵肯定的,這個地方也是我開始沒注意的地方,肯定後按ctrl+x組合鍵退出回到命令行

最後一步就是重啓mysql


[root@localhost ~]# service mysqld restart //重啓mysql的命令


MySQL my.cnf 中文參考


#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少許的鏈接, 隊列負載大
#TYPE: SYSTEM
#END CONFIG INFO

#
# 此mysql配置文件例子針對4G內存
# 主要使用INNODB
# 處理複雜隊列而且鏈接數量較少的mysql服務器
#
# 將此文件複製到/etc/my.cnf 做爲全局設置,
# mysql-data-dir/my.cnf 做爲服務器指定設置
# (@localstatedir@ for this installation) 或者放入
# ~/.my.cnf 做爲用戶設置.
#
# 在此配置文件中, 你可使用全部程序支持的長選項.
# 若是想獲悉程序支持的全部選項
# 請在程序後加上"--help"參數運行程序.
#
# 關於獨立選項更多的細節信息能夠在手冊內找到
#

#
# 如下選項會被MySQL客戶端應用讀取.
# 注意只有MySQL附帶的客戶端應用程序保證能夠讀取這段內容.
# 若是你想你本身的MySQL應用程序獲取這些值
# 須要在MySQL客戶端庫初始化的時候指定這些選項

#
[client]
#password    = [your_password]
port     = @MYSQL_TCP_PORT@
socket     = @MYSQL_UNIX_ADDR@

# *** 應用定製選項 ***

#
#  MySQL 服務端
#
[mysqld]

# 通常配置選項
port     = @MYSQL_TCP_PORT@
socket     = @MYSQL_UNIX_ADDR@

# back_log 是操做系統在監聽隊列中所能保持的鏈接數,
# 隊列保存了在MySQL鏈接管理器線程處理以前的鏈接.
# 若是你有很是高的鏈接率而且出現"connection refused" 報錯,
# 你就應該增長此處的值.
# 檢查你的操做系統文檔來獲取這個變量的最大值.
# 若是將back_log設定到比你操做系統限制更高的值,將會沒有效果
back_log = 50

# 不在TCP/IP端口上進行監聽.
# 若是全部的進程都是在同一臺服務器鏈接到本地的mysqld,
# 這樣設置將是加強安全的方法
# 全部mysqld的鏈接都是經過Unix sockets 或者命名管道進行的.
# 注意在windows下若是沒有打開命名管道選項而只是用此項
# (經過 "enable-named-pipe" 選項) 將會致使mysql服務沒有任何做用!
#skip-networking

# MySQL 服務所容許的同時會話數的上限
# 其中一個鏈接將被SUPER權限保留做爲管理員登陸.
# 即使已經達到了鏈接數的上限.
max_connections = 100

# 每一個客戶端鏈接最大的錯誤容許數量,若是達到了此限制.
# 這個客戶端將會被MySQL服務阻止直到執行了"FLUSH HOSTS" 或者服務重啓
# 非法的密碼以及其餘在連接時的錯誤會增長此值.
# 查看 "Aborted_connects" 狀態來獲取全局計數器.
max_connect_errors = 10

# 全部線程所打開表的數量.
# 增長此值就增長了mysqld所須要的文件描述符的數量
# 這樣你須要確認在[mysqld_safe]中 "open-files-limit" 變量設置打開文件數量容許至少4096
table_cache = 2048

# 容許外部文件級別的鎖. 打開文件鎖會對性能形成負面影響
# 因此只有在你在一樣的文件上運行多個數據庫實例時才使用此選項(注意仍會有其餘約束!)
# 或者你在文件層面上使用了其餘一些軟件依賴來鎖定MyISAM表
#external-locking

# 服務所能處理的請求包的最大大小以及服務所能處理的最大的請求大小(當與大的BLOB字段一塊兒工做時至關必要)
# 每一個鏈接獨立的大小.大小動態增長
max_allowed_packet = 16M

# 在一個事務中binlog爲了記錄SQL狀態所持有的cache大小
# 若是你常用大的,多聲明的事務,你能夠增長此值來獲取更大的性能.
# 全部從事務來的狀態都將被緩衝在binlog緩衝中而後在提交後一次性寫入到binlog中
# 若是事務比此值大, 會使用磁盤上的臨時文件來替代.
# 此緩衝在每一個鏈接的事務第一次更新狀態時被建立
binlog_cache_size = 1M

# 獨立的內存表所容許的最大容量.
# 此選項爲了防止意外建立一個超大的內存表致使永盡全部的內存資源.
max_heap_table_size = 64M

# 排序緩衝被用來處理相似ORDER BY以及GROUP BY隊列所引發的排序
# 若是排序後的數據沒法放入排序緩衝,
# 一個用來替代的基於磁盤的合併分類會被使用
# 查看 "Sort_merge_passes" 狀態變量.
# 在排序發生時由每一個線程分配
sort_buffer_size = 8M

# 此緩衝被使用來優化全聯合(full JOINs 不帶索引的聯合).
# 相似的聯合在極大多數狀況下有很是糟糕的性能表現,
# 可是將此值設大可以減輕性能影響.
# 經過 "Select_full_join" 狀態變量查看全聯合的數量
# 當全聯合發生時,在每一個線程中分配
join_buffer_size = 8M

# 咱們在cache中保留多少線程用於重用
# 當一個客戶端斷開鏈接後,若是cache中的線程還少於thread_cache_size,
# 則客戶端線程被放入cache中.
# 這能夠在你須要大量新鏈接的時候極大的減小線程建立的開銷
# (通常來講若是你有好的線程模型的話,這不會有明顯的性能提高.)
thread_cache_size = 8

# 此容許應用程序給予線程系統一個提示在同一時間給予渴望被運行的線程的數量.
# 此值只對於支持 thread_concurrency() 函數的系統有意義( 例如Sun Solaris).
# 你可能夠嘗試使用 [CPU數量]*(2..4) 來做爲thread_concurrency的值
thread_concurrency = 8

# 查詢緩衝常被用來緩衝 SELECT 的結果而且在下一次一樣查詢的時候再也不執行直接返回結果.
# 打開查詢緩衝能夠極大的提升服務器速度, 若是你有大量的相同的查詢而且不多修改表.
# 查看 "Qcache_lowmem_prunes" 狀態變量來檢查是否當前值對於你的負載來講是否足夠高.
# 注意: 在你表常常變化的狀況下或者若是你的查詢原文每次都不一樣,
# 查詢緩衝也許引發性能降低而不是性能提高.
query_cache_size = 64M

# 只有小於此設定值的結果纔會被緩衝
# 此設置用來保護查詢緩衝,防止一個極大的結果集將其餘全部的查詢結果都覆蓋.
query_cache_limit = 2M

# 被全文檢索索引的最小的字長.
# 你也許但願減小它,若是你須要搜索更短字的時候.
# 注意在你修改此值以後,
# 你須要重建你的 FULLTEXT 索引
ft_min_word_len = 4

# 若是你的系統支持 memlock() 函數,你也許但願打開此選項用以讓運行中的mysql在在內存高度緊張的時候,數據在內存中保持鎖定而且防止可能被swapping out
# 此選項對於性能有益
#memlock

# 當建立新表時做爲默認使用的表類型,
# 若是在建立表示沒有特別執行表類型,將會使用此值
default_table_type = MYISAM

# 線程使用的堆大小. 此容量的內存在每次鏈接時被預留.
# MySQL 自己常不會須要超過64K的內存
# 若是你使用你本身的須要大量堆的UDF函數
# 或者你的操做系統對於某些操做須要更多的堆,
# 你也許須要將其設置的更高一點.
thread_stack = 192K

# 設定默認的事務隔離級別.可用的級別以下:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = REPEATABLE-READ

# 內部(內存中)臨時表的最大大小
# 若是一個表增加到比此值更大,將會自動轉換爲基於磁盤的表.
# 此限制是針對單個表的,而不是總和.
tmp_table_size = 64M

# 打開二進制日誌功能.
# 在複製(replication)配置中,做爲MASTER主服務器必須打開此項
# 若是你須要從你最後的備份中作基於時間點的恢復,你也一樣須要二進制日誌.
log-bin=mysql-bin

# 若是你在使用鏈式從服務器結構的複製模式 (A->B->C),
# 你須要在服務器B上打開此項.
# 此選項打開在從線程上重作過的更新的日誌,
# 並將其寫入從服務器的二進制日誌.
#log_slave_updates

# 打開全查詢日誌. 全部的由服務器接收到的查詢 (甚至對於一個錯誤語法的查詢)
# 都會被記錄下來. 這對於調試很是有用, 在生產環境中經常關閉此項.
#log

# 將警告打印輸出到錯誤log文件.  若是你對於MySQL有任何問題
# 你應該打開警告log而且仔細審查錯誤日誌,查出可能的緣由.
#log_warnings

# 記錄慢速查詢. 慢速查詢是指消耗了比 "long_query_time" 定義的更多時間的查詢.
# 若是 log_long_format 被打開,那些沒有使用索引的查詢也會被記錄.
# 若是你常常增長新查詢到已有的系統內的話. 通常來講這是一個好主意,
log_slow_queries

# 全部的使用了比這個時間(以秒爲單位)更多的查詢會被認爲是慢速查詢.
# 不要在這裏使用"1", 不然會致使全部的查詢,甚至很是快的查詢頁被記錄下來(因爲MySQL 目前時間的精確度只能達到秒的級別).
long_query_time = 2

# 在慢速日誌中記錄更多的信息.
# 通常此項最好打開.
# 打開此項會記錄使得那些沒有使用索引的查詢也被做爲到慢速查詢附加到慢速日誌裏
log_long_format

# 此目錄被MySQL用來保存臨時文件.例如,
# 它被用來處理基於磁盤的大型排序,和內部排序同樣.
# 以及簡單的臨時表.
# 若是你不建立很是大的臨時文件,將其放置到 swapfs/tmpfs 文件系統上也許比較好
# 另外一種選擇是你也能夠將其放置在獨立的磁盤上.
# 你可使用";"來放置多個路徑
# 他們會按照roud-robin方法被輪詢使用.
#tmpdir = /tmp

# ***  複製有關的設置

# 惟一的服務辨識號,數值位於 1 到 2^32-1之間.
# 此值在master和slave上都須要設置.
# 若是 "master-host" 沒有被設置,則默認爲1, 可是若是忽略此選項,MySQL不會做爲master生效.
server-id = 1

# 複製的Slave (去掉master段的註釋來使其生效)
#
# 爲了配置此主機做爲複製的slave服務器,你能夠選擇兩種方法:
#
# 1) 使用 CHANGE MASTER TO 命令 (在咱們的手冊中有完整描述) -
#    語法以下:
#
#    CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=
,
#    MASTER_USER=, MASTER_PASSWORD=
 ;
#
#    你須要替換掉 , ,
 等被尖括號包圍的字段以及使用master的端口號替換
 (默認3306).
#
#    例子:
#
#    CHANGE MASTER TO MASTER_HOST='192.168.1.29 ', MASTER_PORT=3306,
#    MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# 或者
#
# 2) 設置如下的變量. 不論如何, 在你選擇這種方法的狀況下, 而後第一次啓動複製(甚至不成功的狀況下,
#     例如若是你輸入錯密碼在master-password字段而且slave沒法鏈接),
#    slave會建立一個 master.info 文件,而且以後任何對於包含在此文件內的參數的變化都會被忽略
#    而且由 master.info 文件內的內容覆蓋, 除非你關閉slave服務, 刪除 master.info 而且重啓slave 服務.
#    因爲這個緣由,你也許不想碰一下的配置(註釋掉的) 而且使用 CHANGE MASTER TO (查看上面) 來代替
#
# 所須要的惟一id號位於 2 和 2^32 - 1之間
# (而且和master不一樣)
# 若是master-host被設置了.則默認值是2
# 可是若是省略,則不會生效
#server-id = 2
#
# 複製結構中的master - 必須
#master-host =
#
# 當鏈接到master上時slave所用來認證的用戶名 - 必須
#master-user =
#
# 當鏈接到master上時slave所用來認證的密碼 - 必須
#master-password =

#
# master監聽的端口.
# 可選 - 默認是3306
#master-port =

# 使得slave只讀.只有用戶擁有SUPER權限和在上面的slave線程可以修改數據.
# 你可使用此項去保證沒有應用程序會意外的修改slave而不是master上的數據
#read_only

#*** MyISAM 相關選項

# 關鍵詞緩衝的大小, 通常用來緩衝MyISAM表的索引塊.
# 不要將其設置大於你可用內存的30%,
# 由於一部份內存一樣被OS用來緩衝行數據
# 甚至在你並不使用MyISAM 表的狀況下, 你也須要仍舊設置起 8-64M 內存因爲它一樣會被內部臨時磁盤表使用.
key_buffer_size = 32M

# 用來作MyISAM表全表掃描的緩衝大小.
# 當全表掃描須要時,在對應線程中分配.
read_buffer_size = 2M

# 當在排序以後,從一個已經排序好的序列中讀取行時,行數據將從這個緩衝中讀取來防止磁盤尋道.
# 若是你增高此值,能夠提升不少ORDER BY的性能.
# 當須要時由每一個線程分配
read_rnd_buffer_size = 16M

# MyISAM 使用特殊的相似樹的cache來使得突發插入
# (這些插入是,INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., 以及 LOAD DATA
# INFILE) 更快. 此變量限制每一個進程中緩衝樹的字節數.
# 設置爲 0 會關閉此優化.
# 爲了最優化不要將此值設置大於 "key_buffer_size".
# 當突發插入被檢測到時此緩衝將被分配.
bulk_insert_buffer_size = 64M

# 此緩衝當MySQL須要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一個空表中引發重建索引時被分配.
# 這在每一個線程中被分配.因此在設置大值時須要當心.
myisam_sort_buffer_size = 128M

# MySQL重建索引時所容許的最大臨時文件的大小 (當 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 若是文件大小比此值更大,索引會經過鍵值緩衝建立(更慢)
myisam_max_sort_file_size = 10G

# 若是被用來更快的索引建立索引所使用臨時文件大於制定的值,那就使用鍵值緩衝方法.
# 這主要用來強制在大表中長字串鍵去使用慢速的鍵值緩衝方法來建立索引.
myisam_max_extra_sort_file_size = 10G

# 若是一個表擁有超過一個索引, MyISAM 能夠經過並行排序使用超過一個線程去修復他們.
# 這對於擁有多個CPU以及大量內存狀況的用戶,是一個很好的選擇.
myisam_repair_threads = 1

# 自動檢查和修復沒有適當關閉的 MyISAM 表.
myisam_recover

# 默認關閉 Federated
skip-federated

# *** BDB 相關選項 ***

# 若是你運行的MySQL服務有BDB支持可是你不許備使用的時候使用此選項. 這會節省內存而且可能加速一些事.
skip-bdb

# *** INNODB 相關選項 ***

# 若是你的MySQL服務包含InnoDB支持可是並不打算使用的話,
# 使用此選項會節省內存以及磁盤空間,而且加速某些部分
#skip-innodb

# 附加的內存池被InnoDB用來保存 metadata 信息
# 若是InnoDB爲此目的須要更多的內存,它會開始從OS這裏申請內存.
# 因爲這個操做在大多數現代操做系統上已經足夠快, 你通常不須要修改此值.
# SHOW INNODB STATUS 命令會顯示當先使用的數量.
innodb_additional_mem_pool_size = 16M

# InnoDB使用一個緩衝池來保存索引和原始數據, 不像 MyISAM.
# 這裏你設置越大,你在存取表裏面數據時所須要的磁盤I/O越少.
# 在一個獨立使用的數據庫服務器上,你能夠設置這個變量到服務器物理內存大小的80%
# 不要設置過大,不然,因爲物理內存的競爭可能致使操做系統的換頁顛簸.
# 注意在32位系統上你每一個進程可能被限制在 2-3.5G 用戶層面內存限制,
# 因此不要設置的過高.
innodb_buffer_pool_size = 2G

# InnoDB 將數據保存在一個或者多個數據文件中成爲表空間.
# 若是你只有單個邏輯驅動保存你的數據,一個單個的自增文件就足夠好了.
# 其餘狀況下.每一個設備一個文件通常都是個好的選擇.
# 你也能夠配置InnoDB來使用裸盤分區 - 請參考手冊來獲取更多相關內容
innodb_data_file_path = ibdata1:10M:autoextend

# 設置此選項若是你但願InnoDB表空間文件被保存在其餘分區.
# 默認保存在MySQL的datadir中.
#innodb_data_home_dir =

# 用來同步IO操做的IO線程的數量. This value is
# 此值在Unix下被硬編碼爲4,可是在Windows磁盤I/O可能在一個大數值下表現的更好.
innodb_file_io_threads = 4

# 若是你發現InnoDB表空間損壞, 設置此值爲一個非零值可能幫助你導出你的表.
# 從1開始而且增長此值知道你可以成功的導出表.
#innodb_force_recovery=1

# 在InnoDb核心內的容許線程數量.
# 最優值依賴於應用程序,硬件以及操做系統的調度方式.
# 太高的值可能致使線程的互斥顛簸.
innodb_thread_concurrency = 16

# 若是設置爲1 ,InnoDB會在每次提交後刷新(fsync)事務日誌到磁盤上,
# 這提供了完整的ACID行爲.
# 若是你願意對事務安全折衷, 而且你正在運行一個小的食物, 你能夠設置此值到0或者2來減小由事務日誌引發的磁盤I/O
# 0表明日誌只大約每秒寫入日誌文件而且日誌文件刷新到磁盤.
# 2表明日誌寫入日誌文件在每次提交後,可是日誌文件只有大約每秒纔會刷新到磁盤上.
innodb_flush_log_at_trx_commit = 1

# 加速InnoDB的關閉. 這會阻止InnoDB在關閉時作全清除以及插入緩衝合併.
# 這可能極大增長關機時間, 可是取而代之的是InnoDB可能在下次啓動時作這些操做.
#innodb_fast_shutdown

# 用來緩衝日誌數據的緩衝區的大小.
# 當此值快滿時, InnoDB將必須刷新數據到磁盤上.
# 因爲基本上每秒都會刷新一次,因此沒有必要將此值設置的太大(甚至對於長事務而言)

innodb_log_buffer_size = 8M

# 在日誌組中每一個日誌文件的大小.
# 你應該設置日誌文件總合大小到你緩衝池大小的25%~100%
# 來避免在日誌文件覆寫上沒必要要的緩衝池刷新行爲.
# 不論如何, 請注意一個大的日誌文件大小會增長恢復進程所須要的時間.
innodb_log_file_size = 256M

# 在日誌組中的文件總數.
# 一般來講2~3是比較好的.
innodb_log_files_in_group = 3

# InnoDB的日誌文件所在位置. 默認是MySQL的datadir.
# 你能夠將其指定到一個獨立的硬盤上或者一個RAID1捲上來提升其性能
#innodb_log_group_home_dir

# 在InnoDB緩衝池中最大容許的髒頁面的比例.
# 若是達到限額, InnoDB會開始刷新他們防止他們妨礙到乾淨數據頁面.
# 這是一個軟限制,不被保證絕對執行.
innodb_max_dirty_pages_pct = 90

# InnoDB用來刷新日誌的方法.
# 表空間老是使用雙重寫入刷新方法
# 默認值是 "fdatasync", 另外一個是 "O_DSYNC".
#innodb_flush_method=O_DSYNC

# 在被回滾前,一個InnoDB的事務應該等待一個鎖被批准多久.
# InnoDB在其擁有的鎖表中自動檢測事務死鎖而且回滾事務.
# 若是你使用 LOCK TABLES 指令, 或者在一樣事務中使用除了InnoDB之外的其餘事務安全的存儲引擎
# 那麼一個死鎖可能發生而InnoDB沒法注意到.
# 這種狀況下這個timeout值對於解決這種問題就很是有幫助.
innodb_lock_wait_timeout = 120

[mysqldump]
# 不要在將內存中的整個結果寫入磁盤以前緩存. 在導出很是巨大的表時須要此項
quick

max_allowed_packet = 16M

[mysql]
no-auto-rehash

# 僅僅容許使用鍵值的 UPDATEs 和 DELETEs .
#safe-updates

[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
# 增長每一個進程的可打開文件數量.
# 警告: 確認你已經將全系統限制設定的足夠高!
# 打開大量表須要將此值設高
open-files-limit = 8192

 

運維派中也有相關連接 http://www.yunweipai.com/archives/14403.html

相關文章
相關標籤/搜索