您好,登錄后才能下訂單哦!
小編給大家分享一下MySQL如何源碼安裝,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
源碼安裝的兩種方法
MySQL的源碼安裝有兩種方法可供參考。
Use a standard MySQL source distribution,這種方法其實就是下載源碼壓縮包,然后通過cmake來構建部署。
比如5.6版本的源碼包,可以參考鏈接下載:
https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz 安裝說明和步驟可以參考:
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 對于MySQL 5.7把對應版本改一下就可以,差別不是很大。
或者到官網直接點擊下載也可以。
安裝的詳細步驟我們等下細說,目前網站上看到的絕大多數源碼安裝都是這種方式。
Use a MySQL development tree,這種方式是通過開發源碼樹的方式來編譯部署。主要的方式就是基于git.
這種方式相對來說,感覺就是在參與開發一個項目一般,有著很完善的版本管理。
首先使用git來開啟安裝,會從github上來抓取。
# git clone https://github.com/mysql/mysql-server.git這個過程會持續一些時間,完成之后目錄變成了多大。大概1.5G,而源碼壓縮包大概就是幾十M,差別非常大。
# du -sh .
1.5G . 我們使用git來查看版本的情況,發現MySQL 8.0的代碼也可以抓取了,如果想嘗嘗鮮,掌握新版本新特性,這種方式還是比較高效的。
# git branch -r
origin/5.5
origin/5.6
origin/5.7
origin/8.0
origin/HEAD -> origin/5.7
origin/cluster-7.2
origin/cluster-7.3
origin/cluster-7.4
origin/cluster-7.5比如我們選擇5.7版本,
# git checkout 5.7
Checking out files: 100% (21703/21703), done.
Switched to branch '5.7'接下來的事情就和源碼包安裝差不多了。我們放在一起說。
先來了解下安裝的幾個命令
其實源碼安裝的步驟還是很常規,時間都在編譯的過程中,你可以看到屏幕里滿屏的日志輸出,感覺好像你在做什么超級高深的事情一樣。其實編寫這個軟件的人才是真心牛叉,不服你想想你安裝的時候,除了cmake, make ,make install之外,操作的步驟也要簡單的多。
其實很多開源軟件安裝都是make,make install這樣的步驟,這個過程后面到底發生了什么。
make的命令使用細則如下:
make [options] [targets] [VAR=VALUE]...
[options]是命令行選項,可以用 make --help 命令查看全部,[VAR=VALUE]是在命令行上指定環境變量,而target則是Makefile里面的規則。Makefile里面的內容有時候看不大明白。
可以參考這個,這個列表引用自:http://mp.weixin.qq.com/s/rp50qrNipmdBBOyNTkGJoQ
AR 函數庫打包程序,可創建靜態庫.a文檔。默認是"ar"。AS 匯編程序。默認是"as"。CC C編譯程序。默認是"cc"。CXX C++編譯程序。默認是"g++"。CPP C/C++預處理器。默認是"$(CC) -E"。FC Fortran編譯器。默認是"f77"。PC Pascal語言編譯器。默認是"pc"。YACC Yacc文法分析器。默認是"yacc"。ARFLAGS 函數庫打包程序的命令行參數。默認值是"rv"。ASFLAGS 匯編程序的命令行參數。CFLAGS C編譯程序的命令行參數。CXXFLAGS C++編譯程序的命令行參數。CPPFLAGS C/C++預處理器的命令行參數。FFLAGS Fortran編譯器的命令行參數。PFLAGS Pascal編譯器的命令行參數。YFLAGS Yacc文法分析器的命令行參數。LDFLAGS 鏈接器的命令行參數。prefix /usr/localexec_prefix $(prefix)bindir $(exec_prefix)/binsbindir $(exec_prefix)/sbinlibexecdir $(exec_prefix)/libexecdatadir $(prefix)/sharesysconfdir $(prefix)/etcsharedstatedir $(prefix)/comlocalstatedir $(prefix)/varlibdir $(exec_prefix)/libinfodir $(prefix)/infoincludedir $(prefix)/includeoldincludedir $(prefix)/includemandir $(prefix)/mansrcdir 需要編譯的源文件所在的目錄,無默認值
這樣可能會清楚一些了,至少我們知道大概要做的事情了。
安裝前的準備
安裝前,做以下幾件事情。創建mysql用戶組,創建mysql用戶。
groupadd mysql
useradd -r -g mysql -s /bin/false mysql接下來的工作就需要花點功夫了,那就是環境依賴的安裝包。
對于MySQL 5.7來說,boost是需要的,否則無法編譯,這樣下載部署。當然boost在MySQL 5.6不是必需。
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/還有一個字符終端處理庫ncurses是一定要檢查的,可以這樣下載。
http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.8.tar.gz下載后使用./configure,make,make install 即可安裝。
安裝后,可以使用如下的方式來檢測是否安裝成功。
# ll /usr/lib/libncurse*
-rw-r--r-- 1 root root 669034 Mar 23 13:31 /usr/lib/libncurses.a
-rw-r--r-- 1 root root 166630 Mar 23 13:31 /usr/lib/libncurses++.a
-rw-r--r-- 1 root root 3501680 Mar 23 13:31 /usr/lib/libncurses_g.a如果饒有興致,還可以寫一小段代碼來檢測。
#include <unistd.h>
#include <stdlib.h>
#include <curses.h>
int main()
{
initscr();
move( 5, 15 );
printw( "%s", "Hello world" );
refresh();
sleep(2);
endwin();
exit(EXIT_SUCCESS);
}這么運行即可。
g++ a.c -lncurses && ./a.out如果看到Hello world,證明安裝是沒有問題的。
最重要的一點,那就是保證cmake是可用的,沒有的話,yum install cmake安裝一下。
同時gcc,bison的版本也要注意一下,不能太低。
源碼安裝
目前壓縮包解壓后可以看到的cmake支持版本很多。
# ll /root/soft/mysql_source_code/mysql-5.6.35/cmake/os
total 60
-rw-r--r-- 1 7161 31415 1402 Nov 28 21:36 AIX.cmake
-rw-r--r-- 1 7161 31415 773 Nov 28 21:36 Cygwin.cmake
-rw-r--r-- 1 7161 31415 951 Nov 28 21:36 Darwin.cmake
-rw-r--r-- 1 7161 31415 1139 Nov 28 21:36 FreeBSD.cmake
-rw-r--r-- 1 7161 31415 1714 Nov 28 21:36 HP-UX.cmake
-rw-r--r-- 1 7161 31415 1658 Nov 28 21:36 Linux.cmake
-rw-r--r-- 1 7161 31415 838 Nov 28 21:36 OS400.cmake
-rw-r--r-- 1 7161 31415 4242 Nov 28 21:36 SunOS.cmake
-rw-r--r-- 1 7161 31415 14652 Nov 28 21:36 WindowsCache.cmake
-rw-r--r-- 1 7161 31415 8011 Nov 28 21:36 Windows.cmake我們開始安裝,值得一提的是,我是打算同服務器上安裝多個版本,所以就在/usr下指定了不同的安裝目錄,數據目錄。
cmake .
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql_5.6
-DMYSQL_DATADIR=/home/mysql_5.6
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DENABLED_LOCAL_INFILE=1一般準備充分,這個過程就是分分鐘的事情,如果ncures沒安裝,就可能拋出如下的錯誤退出。
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:85 (MESSAGE):
Curses library not found. Please install appropriate package,接下來是make操作,我們可以做點改進,那就是加快編譯的速度,使用-j參數,根據CPU核數指定編譯時的線程數,因為默認是1個線程編譯,如果不知道該啟用幾個,可以換算一下。
make -j `grep processor /proc/cpuinfo | wc -l`
滿屏幕的編譯日志,看起來很有成就感。
make階段的事情做完之后,就是make install,這個過程會正式安裝軟件到指定的目錄,也是我們的終極目標。
值得一提的是,如果因為空間問題異常退出,還是最好刪除CMakeCache.txt文件,重新cmake一遍,然后make,make install
創建數據庫
這個階段的工作就很常規了,我們簡化一下,兩個命令初始化,啟動數據庫。
啟用的參數模板類似于:
[mysqld]
# server configuration
datadir=/home/mysql_5.7
basedir=/usr/local/mysql_5.7
port=3308
socket=/home/mysql_5.7/mysql.sock
server_id=3308
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
innodb_log_file_size=1000M
max_prepared_stmt_count=150000
max_connections = 3000
innodb_buffer_pool_size = 24G5.7的操作如下:
初始化數據字典:
/usr/local/mysql_5.7/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql_5.7 --datadir=/home/mysql_5.7啟動數據庫:
/usr/local/mysql_5.7/bin/mysqld_safe --defaults-file=/home/mysql_5.7/s.cnf &
5.6的操作如下:
初始化數據字典
/usr/local/mysql_5.6/s/mysql_install_db --user=mysql --basedir=/usr/local/mysql_5.6 --datadir=/home/mysql_5.6啟動數據庫
/usr/local/mysql_5.6/bin/mysqld_safe --defaults-file=/home/mysql_5.6/s.cnf &后面的事情你懂的,我們可以連接到源碼版的數據庫了。
# /usr/local/mysql_5.7/bin/mysql --socket=/home/mysql_5.7/mysql.sock --port=3308
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7
Server version: 5.7.17-log Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
enjoy
以上是“MySQL如何源碼安裝”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。