您好,登錄后才能下訂單哦!
OEL7.2 x64默認使用最小化安裝。 在此基礎上安裝mysql 5.7.22 source code.
(mysql-8.0.11 cmake要用的版本至少為2.8.12,而OEL7.2 cmake版本為2.8.11,如需用光盤中的cmake,需要升級系統版本)
mysql服務啟動關閉由systemd來管理,編譯時啟用參數-DWITH_SYSTEMD=1
OEL7.2 x64
必備軟件包:
cmake
make
gcc-c++
boost(You can download it when execute cmake with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory> , or download it from https://sourceforge.net/projects/boost/files/boost/1.59.0/ )
ncurses-devel
perl
bison
shell>yum -q -y install cmake make gcc-c++ ncurses-devel perl bison
# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> mkdir bld
shell> cd bld
##### shell> cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/
##### shell> cmake .. -DWITH_BOOST=/usr/local/boost_1_59_0
shell> cmake .. -DWITH_BOOST=/usr/local/boost_1_59_0 -DWITH_SYSTEMD=1
shell> make -j 4
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> bin/mysqld --initialize --user=mysql
##### shell> bin/mysql_install_db --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data
shell> cp /usr/local/mysql/usr/lib/systemd/system/mysqld* /usr/lib/systemd/system/
shell>systemctl daemon-reload
shell>systemctl enable mysqld.service
shell>mkdir /var/run/mysqld/
shell>chown mysql:mysql /var/run/mysqld/
shell>systemctl restart mysqld.service
shell> cmake .. -DWITH_BOOST=/usr/local/boost_1_59_0 -DWITH_SYSTEMD=1
安裝編譯過程略
# Postinstallation setup
[root@localhost bld]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld --initialize --user=mysql
2018-05-02T19:06:52.849013Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-05-02T19:06:56.156730Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-05-02T19:06:56.428913Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-05-02T19:06:56.531465Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: fb8f5e7d-4e3b-11e8-bd58-000c29a3197b.
2018-05-02T19:06:56.540768Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-05-02T19:06:56.542462Z 1 [Note] A temporary password is generated for root@localhost: 4E-d,-hnvhtk
[root@localhost mysql]# bin/mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@localhost mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld* /usr/lib/systemd/system/
[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# systemctl enable mysqld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost mysql]# mkdir /var/run/mysqld/
[root@localhost mysql]# chown -R mysql /var/run/mysqld/
[root@localhost mysql]# systemctl restart mysqld.service
[root@localhost mysql]# bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.22
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@localhost mysql]# ps -ef |grep mysql
mysql 21993 1 0 03:10 ? 00:00:00 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root 22024 2427 0 03:14 pts/0 00:00:00 grep --color=auto mysql
[root@localhost mysql]# systemctl stop mysqld.service
a.make -j
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
我沒有在-j后面加數字限制job數。結果編譯兩次都導致系統報outofmemory錯誤。數值與cpu個數等值效果最好。
b.cmake編譯時可選的參數,請參考https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
c. 如系統已經連接外網,boost可以在cmake的時候打開下載參數-DDOWNLOAD_BOOST=1
d.systemd調用文件
cmake時啟用了systemd參數 -DWITH_SYSTEMD=1 , 則會生成相應的可以由systemd調用的mysqld.service文件。文件內容如下:
[root@localhost system]# ls /usr/local/mysql/usr/lib/systemd/system/
mysqld.service mysqld@.service
[root@localhost system]# grep -v ^# mysqld.service |grep -v ^$
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
TimeoutSec=0
PermissionsStartOnly=true
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
[root@localhost system]# grep -v ^# mysqld@.service |grep -v ^$
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld-%i.pid
TimeoutSec=0
PermissionsStartOnly=true
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd %I
ExecStart=/usr/local/mysql/bin/mysqld --defaults-group-suffix=@%I --daemonize --pid-file=/var/run/mysqld/mysqld-%i.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
[root@localhost system]#
將mysqld.service 與mysqld@.service copy到操作系統/usr/lib/systemd/system/目錄中,然后reload daemon。
注意pid-file的目錄/var/run/mysqld/需要存在且目錄權限為mysql,否則會啟動報錯。系統重啟后/var/run/mysqld目錄會自動消失,建議將pid-file文件放置在mysql用戶長久目錄下。
https://dev.mysql.com/doc/refman/5.7/en/source-installation.html
https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。