CentOS 7 編譯安裝mysql 5.7
終於把最後幾臺伺服器全部都從centos6 全部都升級到了centos7,雖說有不少運維指令碼得重寫,總體來說是值得得。
之前伺服器上部署得都是mysql5.5,今天也準備升級到5.7。
編譯mysql比較花費時間,也可以靜下心來寫寫部落格了。
安裝之前最好檢查一下是否已安裝了mysql和boost
rpm -qa | grep mysql //檢視系統自帶mysql
yum -y remove mysql-* //解除安裝mysql
rpm -e --nodeps mysql-5.1.73-3.el6_5.x86_64 //解除安裝mysql
rpm -qa | grep boost //檢視系統自帶boost
yum -y remove boost-* //解除安裝boost
rpm -e --nodeps boost-filesystem-1.41.0-11.el6_1.2.x86_64 //解除安裝boost
然後安裝其它得依賴包:
yum install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl cmake
2.準備安裝
首先將boost庫解壓出來
tar -zxvf boost_1_59_0.tar.gz
然後拷貝到一個目錄中
mv boost_1_59_0 /usr/local/boost
然後建立使用者組以及使用者
cat /etc/group | grep mysql //檢視是否存在mysql使用者組
cat /etc/passwd | grep mysql //檢視是否存在mysql使用者
groupadd mysql //建立使用者組
useradd -r -g mysql mysql //建立使用者
上面得工作完成以後,就可以開始編譯mysql了,當然,先將mysql的原始碼解壓出來:
tar xzvf mysql-5.7.12.tar.gz
cd mysql-5.7.12
使用cmake和make命令來進行編譯
cmake . -DCMAKE_INSTALL_PREFIX =/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make
編譯會消耗較多的時間,期間可以喝杯茶,或者來建立幾個目錄,因為我們指定編譯引數得時候,指定了mysql得資料儲存的目錄,因此,這個時候可以先把目錄都創建出來:
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/logs
mkdir /usr/local/mysql/pids
最後還有重要得一步,需要將目錄得所有權交給mysql使用者
chown -R mysql:mysql /usr/local/mysql //需要root許可權
編譯的過程太漫長,上一張正在編譯的圖:
編譯完成後執行make install 安裝即可
隨後,我們需要配置/etc/my.cnf檔案:
vim /etc/my.cnf
然後寫入引數,最終如下;
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/pids/mysqld.pid
3.效能調優
由於編譯的時間是在太長了,這個地方的效能調優不涉及任何的sql優化,只針對一點:使用jemalloc來替換預設的記憶體管理
首先我們需要從網站上下載jemalloc,官網地址:
http://www.canonware.com/jemalloc/
編譯jemalloc:
./configure --libdir=/usr/local/lib
make
make install
為了保證能夠找到jemalloc庫,我們需要設定一下庫路徑,
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig //執行這個命令可以重新整理庫路徑
我們有兩種方式來使用jemalloc來優化mysql
在編譯的時候加入引數:
-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF
然後重新編譯一遍。
也可以修改 /usr/local/mysql/bin/mysqld_safe
在# executing mysqld_safe 下面加上
LD_PRELOAD=/usr/local/lib/libjemalloc.so
4.其它配置
通常我們需要重啟伺服器,最好在重啟伺服器的時候就啟動mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld //需要root許可權
然後將mysql新增到環境變數,修改/etc/profile檔案
vim /etc/profile //需要root
//在檔案的最後面加入
#mysql path
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
最後執行 source /etc/profile
隨後我們也需要多資料庫進行初始化操作。自 mysql5.7 開始,初始化系統表不再使用 mysql_install_db 工具, 而是使用 mysqld –initialize-insecure –user=mysql , 其中 –initialize 表示預設生成一個安全的密碼, –initialize-insecure 表示不生成密碼, 密碼為空
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
現在可以啟動mysql 伺服器:
chkconfig mysqld on
最後我們將root密碼修改一下:
mysql -u root
mysql> use mysql;
mysql>update user set authentication_string=password('123456') where user='root' and Host = 'localhost';
mysql> FLUSH PRIVILEGES;
特別提醒注意的一點是,新版的mysql資料庫下的user表中已經沒有Password欄位了
而是將加密後的使用者密碼儲存於authentication_string欄位
5.tips
執行make命令的時候可以加-j(多程序)引數來加快編譯速度
make -j “cpu 核數”
比如已知CPU是4核心的,可以使用:
make -j 4