1. 程式人生 > >Linux系統下MySQL安裝(單例項)

Linux系統下MySQL安裝(單例項)

1、安裝依賴包

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


2、建立使用者
# 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目錄


3、安裝Mysql 

百度網盤下載地址(版本是mysql-5.6.31):
http://pan.baidu.com/s/1b3EGOI

#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檔案
# make && make install 編譯後安裝


解釋:
#cmake  編譯命令
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 設定mysql安裝目錄
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 設定監聽套接字路徑,這必須是一個絕對路徑名。預設為/tmp/mysql.sock
-DSYSCONFDIR=/etc 配置檔案放在/etc/下面
-DDEFAULT_CHARSET=gbk 設定伺服器的字符集。
預設情況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake檔案包含允許的字符集名稱列表。
-DDEFAULT_COLLATION=gbk_chinese_ci 設定伺服器的排序規則。


-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_ARCHIVE_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
儲存引擎選項:
MyISAM,MERGE,MEMORY,和CSV引擎是預設編譯到伺服器中,並不需要明確地安裝。
靜態編譯一個儲存引擎到伺服器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的儲存引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)


-DMYSQL_DATADIR=/data/mysqldb  設定mysql資料庫檔案目錄
-DMYSQL_TCP_PORT=3306 設定mysql伺服器監聽埠,預設為3306
-DENABLE_DOWNLOADS=1
是否要下載可選的檔案。例如,啟用此選項(設定為1),cmake將下載谷歌所使用的測試套件執行單元測試






4、初始化
建立Mysql的資料儲存目錄
# mkdir –p /data/mysqldb/
給Mysql安裝目錄進行授權
# chown -R mysql:mysql /usr/local/mysql
給Mysql資料儲存目錄進行授權
# chown -R mysql:mysql /data/mysqldb
給Mysql日誌目錄進行授權
chown -R mysql:mysql  /data/mysqldb/binlog
chown -R mysql:mysql  /data/mysqldb/log

開始初始化

chmod 755 /usr/local/mysql/scprit/mysql_install_db

/usr/local/mysql/scprit/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb
複製Mysql服務啟動指令碼
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
修改mysql服務啟動指令碼  如果不是多例項,這一步可以跳過
# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysqldb

5、配置檔案
  以後在企業裡面沒有現成my.cnf 
  如果編譯安裝後,沒有在/etc/找到my.cnf 那麼請到原始的編譯目錄,也就是解壓包的目錄裡面找到
  support-files這個目錄,將my-medium.cnf 拷貝到/etc/my.cnf
# cd mysql-5.6.31
#cp support-files/my-medium.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   //Mysql臨時表目錄
open_files_limit = 10240  //開啟檔案控制代碼的數量
explicit_defaults_for_timestamp 
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
federated   //支援sql語法和資料校驗等.sql_mode三種模式 
ANSI模式、寬鬆模式,對插入資料進行校驗,如果不符合定義型別或長度,對資料型別調整或者截斷儲存,報“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緩衝池中最大允許的髒頁面的比例.  60-90都可以
#innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16m # 用來緩衝日誌資料的緩衝區的大小.  當此值快滿時, InnoDB將必須重新整理資料到磁碟上
innodb_flush_log_at_trx_commit = 2
0代表日誌只大約每秒寫入日誌檔案並且日誌檔案重新整理到磁碟# 2代表日誌寫入日誌檔案在每次提交後,但是日誌檔案只有大約每秒才會重新整理到磁碟上


[mysql]
no-auto-rehash #可以在命令可以使用tab鍵補齊
prompt = (\[email protected]\h) [\d]\_ #在Mysql命令顯示主機名字
default-character-set = utf8  //設定字元集合


chown -R mysql:mysql /opt/mysqltmp  不然啟動會報錯


6、啟動服務和設定環境變數
#:vim /etc/profile
檔案的最後面。
MYSQL=/usr/local/mysql/bin
PATH=$PATH:$MYSQL
export PATH
#:source /etc/profile //生效




啟動服務
# /etc/init.d/mysqld start