安裝版本:mysql-5.6.31
安裝環境:Linux RHEL6.5.x86
安裝要求:單例項,埠為預設:3306
(1) 要求安裝Mysql資料庫版本號及包名為:mysql-5.6.31.tar.gz
(2) 安裝目錄為/usr/local/mysql
(3) 資料儲存目錄為/data/mysqldb/
(4) 配置檔案存放為/etc/my.cnf
(5) 使用者名稱為mysql
(6) 要求設定環境變數,服務加入開機自動啟動
環境準備
1. 安裝相關依賴包
# yum install gcc* ncurses-devel perl cmake bison
2. 建立使用者和相關目錄
建立mysql使用者組
# groupadd mysql
建立mysql使用者(屬組為mysql,為不能登入shell) # useradd mysql -g mysql -s /sbin/nologin
建立mysql安裝目錄 # mkdir -p /usr/local/mysql
建立mysql資料目錄
# mkdir -p /data/mysqldb
在資料目錄下建立BINLOG日誌目錄 # mkdir /data/mysqldb/binlog
在資料目錄下建立日常LOG日誌目錄 # mkdir /data/mysqldb/log
建立mysql臨時表目錄 # mkdir /opt/mysqltmp
3. 對相關目錄進行授權
# chown mysql:mysql /usr/local/mysql -R
# chown mysql:mysql /data -R
# chown mysql:mysql /opt/mysqltmp -R
4. 編譯安裝
# cmake
設定mysql安裝目錄
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/
設定監聽套接字路徑,這必須是一個絕對路徑名。預設為/tmp/mysql.sock
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
設定配置檔案放在/etc/下面
-DSYSCONFDIR=/etc
設定伺服器的字符集(預設情況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake檔案包含允許的字符集名稱列表)
-DDEFAULT_CHARSET=gbk
設定伺服器的排序規則
-DDEFAULT_COLLATION=gbk_chinese_ci
設定mysql資料庫檔案目錄
-DMYSQL_DATADIR=/data/mysqldb/
設定mysql伺服器監聽埠,預設為3306
-DMYSQL_TCP_PORT=3306
以下儲存引擎選項:
其中yISAM,MERGE,MEMORY,和CSV引擎是預設編譯到伺服器中,並不需要明確地安裝。
靜態編譯一個儲存引擎到伺服器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的儲存引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), PERFSCHEMA (Performance Schema)
-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
# make ; make install
注:如果要重新執行配置,需要刪除解壓包中的CMakeCache.txt檔案
# ls mysql-5.6.31 |grep CMakeCache.txt CMakeCache.txt
初始化與配置
1. 初始化
開始初始化 # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysqldb/ 看到此時資料目錄下產生了什麼 # ls /data/mysqldb/ binlog ibdata1 ib_logfile0 ib_logfile1 log mysql performance_schema test 複製mysql服務啟動指令碼並修改許可權 # cp /usr/local/mysql/support-files/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
2. 配置檔案
預設在/etc下生成了my.cnf # ls /etc/ | grep my.cnf my.cnf 如果沒有也可以拷貝擠壓包或安裝目錄中的預設配置檔案 mysql-5.6.31/support-files/my-default.cnf /usr/local/mysql/support-files/my-default.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 = (\u@\h) [\d]\_ //在mysql命令顯示主機名字 default-character-set = utf8 //設定字符集合
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] #base port = 3306 user = mysql socket = /tmp/mysql.sock pid-file = /tmp/mysql.pid basedir = /usr/local/mysql datadir = /data/mysqldb tmpdir = /opt/mysqltmp open_files_limit = 10240 explicit_defaults_for_timestamp sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES federated server_id = 706 #replicate-do-db = posp #replicate-ignore-db = mysql #log-slave-updates = 1 event_scheduler=1 max_connections = 2000 max_connect_errors = 10000 interactive_timeout = 600 wait_timeout = 600 skip-name-resolve sync_binlog = 0 log_bin_trust_function_creators = 1 character-set-server = utf8 default_storage_engine = InnoDB #log log-bin = /data/mysqldb/binlog/mysql-bin binlog_cache_size = 32m max_binlog_cache_size = 10g binlog_stmt_cache_size = 32m table_open_cache = 2048 max_binlog_size = 1024m binlog_format = mixed log_output = FILE log-error = /data/mysqldb/log/mysql-error.log 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 relay-log = /data/mysqldb/binlog/relay-bin relay-log-index= /data/mysqldb/binlog/relay-bin.index #buffer sort_buffer_size = 2m read_buffer_size = 2m read_rnd_buffer_size = 2m join_buffer_size = 2m net_buffer_length = 16k max_allowed_packet = 512m bulk_insert_buffer_size = 32m max_heap_table_size = 512m tmp_table_size = 512m thread_cache_size = 100 query_cache_size = 256m query_cache_limit = 10m query_cache_min_res_unit = 4k key_buffer_size = 16m myisam_sort_buffer_size = 64m myisam_max_sort_file_size = 10g myisam_repair_threads = 1 #innodb innodb_file_per_table = 1 innodb_data_file_path = ibdata1:2048M:autoextend innodb_log_file_size = 128m innodb_log_files_in_group = 3 innodb_buffer_pool_size = 1g innodb_buffer_pool_instances = -1 innodb_max_dirty_pages_pct = 70 #innodb_thread_concurrency = 8 innodb_flush_method = O_DIRECT innodb_log_buffer_size = 16m innodb_flush_log_at_trx_commit = 2 [mysql] no-auto-rehash prompt = (\u@\h) [\d]\_ default-character-set = utf8
服務啟動與環境變數設定
1. 設定環境變數
# vim /etc/profile MYSQL=/usr/local/mysql/bin PATH=$PATH:$MYSQL export PATH # source /etc/profile
2. 啟動服務
# /etc/init.d/mysqld start
啟動的報錯與解決見博文:《mysql安裝啟動報錯》