centos 7 編譯安裝mysql5.7.20支援systemd及報錯事項
一、MYSQL的新特性及環境
1、效能更快3倍
2、新的優化器
3、原生的JSON支援
4、多源複製
5、GIS空間擴充套件
本次部署環境
Linux:CentOS Linux release 7.3.1611 (Core)
MYSQL版本:mysql-5.7.20
二、boost概述
boost是開源免費的第三方庫,它是一個非常優秀的庫,是C++標準的最好實踐之一。
在這裡講使用boost庫主要是在對mysql的資料備份時,將會使用的percona-xtrabackup需要用到boost庫。
對mysql資料庫的備份及其中的報錯在我的另一篇文章記錄。
三、編譯安裝
直接下載包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz tar -xf mysql-boost-5.7.20.tar.gz
解決依賴問題
yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
建立使用者、安裝路徑、資料存放路徑、配置檔案路徑及授權(很重要)。
mkdir /usr/local/mysql
mkdir /usr/local/mysql/mydata
mkdir /usr/local/mysql/conf
useradd mysql
chown -R mysql:mysql /usr/local/mysql/
編譯選項
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/mydata \ -DSYSCONFDIR=/usr/local/mysql/conf \ -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled \ -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost
一定要使用boost,./boost表示是boost的存放路徑
-DWITH_SYSTEMD=1 這是MySQL 5.7原生支援Systemd的選項,如果要是用systemctl啟動,就必須開啟。
在後面將對system的選項,進行解讀,其他選項就不多解析。
make && make install
這裡消耗的時間有點久,可以玩一會。
配置my.cnf檔案
mv /etc/my.cnf /usr/local/mysql/conf/
cd /usr/local/mysql/conf
vim my.cnf
改完my.cnf檔案,一定要將檔案屬主改為mysql,否則啟動不了。
chown mysql:mysql my.cnf
根據my.cnf的配置,如上圖,建立mysqld_safe所需的目錄及授權。
mkdir /var/log/mysqld
mkdir /var/run/mysqld
chown -R mysql:mysql /var/log/mysqld
chown -R mysql:mysql /var/run/mysqld
在 mysqld.service ,把預設的pid檔案指定到了 /var/run/mysqld/ 目錄,把預設的log檔案指定到/var/log/mysql/目錄(可自定義),而並沒有事先建立該目錄,因此要手動建立該目錄並把許可權賦給 mysql 使用者。
對資料庫的初始化。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/mydata
詳細過程:
[[email protected] support-files]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/mydata
2017-11-10T17:27:54.190490Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-11-10T17:27:56.972612Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-11-10T17:27:57.535329Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-11-10T17:27:57.807244Z 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: 7e5736cd-c63c-11e7-925d-000c29b8cbd5.
2017-11-10T17:27:57.849665Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-11-10T17:27:57.853497Z 1 [Note] A temporary password is generated for [email protected]: oldLEIN+P6Xi
注意:[Note] A temporary password is generated for [email protected]: oldLEIN+P6Xi
此處的oldLEIN+P6Xi是資料庫root的密碼(請注意自己的密碼,可以在日誌中找到,或者使用跳過資料庫授權,然後重置密碼),第一次進入mysq將使用到。
測試是否能正常啟動:
[[email protected] support-files]# pwd
/usr/local/mysql/support-files
[[email protected] support-files]# ./mysql.server start
檢視埠是否在監聽:
說明已經編譯成功了。
開始進入資料庫:
剛才提到的oldLEIN+P6Xi要使用啦。
檢視databases時,出現了問題:
提示已經告知我們要先修改root密碼
mysql> set password = password('000000');
修改完畢即可正常使用了,剩下的就是設定systemd啦
四、mysql5.7支援原生的systemd
我是比較喜歡systemctl的啟動方式,排錯方便,簡單明瞭。
1、systemd是所有主要Linux發行版中可用的管理和配置平臺。它提供了服務啟動,停止,重新啟動和其他一些新功能來管理服務的基礎設施。
2、systemd是不是在init守護的不僅僅是名字,但也指它周圍的整個軟體包,其中,除了systemd的init守護程序,包括守護程序journald,logind和networkd,以及許多其他低級別的元件。
3、systemd的核心元件包括以下內容:
(1)systemd是Linux作業系統的系統和服務管理器。
(2)systemctl可用於反思和控制系統和服務管理器的狀態。
(3)systemd-analysis可用於確定系統啟動效能統計資訊,並從系統和服務管理器中檢索其他狀態和跟蹤資訊。
4、systemd提供的主要功能之一是整合過程監控,並在發生服務故障/終止時自動重啟。從MySQL 5.7開始,程序監視和自動重啟現在由systemd在有系統的系統上處理。如果mysqld由於崩潰等可重啟故障而失敗,則systemd會自動重新啟動mysqld。這就棒棒棒的。
5、mysqld.service:這是systemd服務定義檔案,告訴它什麼服務啟動,指定自動重新啟動設定,服務型別和所有各個單位之間的依賴關係,等等。這裡是mysqld的內容。現在已經安裝在Fedora 21的/ usr / lib / systemd / system下的服務檔案:
6、mysql.conf:該檔案描述配置設定,如tmp檔案的位置,許可權模式和所有權,與mysqld服務相關的tmpfiles的時代等等。例如,這個檔案安裝在Fedora 21上的/usr/lib/tmpfiles.d中
7、mysqld_pre_systemd:這是一個bash指令碼檔案,當mysqld第一次通過systemctl啟動時,生成資料目錄。這個指令碼在啟動mysqld之前由systemd執行,以檢查指定的資料目錄位置內是否存在正確的data / mysql目錄。如果data / mysql目錄不存在,那麼systemd將執行mysqld並--initialize建立資料目錄(這個檔案通常安裝在/ usr / bin中)。
檢視是否存在mysqld.service,這是systemd的原生支援檔案。
[[email protected] mysql-5.7.20]# find / -name mysqld.service
/usr/local/src/mysql-5.7.20/scripts/mysqld.service
/usr/local/mysql/usr/lib/systemd/system/mysqld.service
[[email protected] mysql]# pwd
/usr/local/mysql
[[email protected] mysql]# cd usr/lib/systemd/system/
[[email protected] system]# ls
mysqld.service [email protected]
檢視mysqld.service
[[email protected] system]# cat mysqld.service
# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# systemd service file for MySQL forking server
#
[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
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
將檔案複製到/usr/lib/systemd/system/目錄並授權
[[email protected] system]# cp mysqld.service /usr/lib/systemd/system/
[[email protected] system]# chown 775 /usr/lib/systemd/system/mysqld.service
使用systemctl啟動mysql:
大功告成,嘻嘻!!!
五、編譯遇到的報錯
1、啟動mysql失敗
[[email protected] support-files]# ./mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/mydata/node4.err'.
...... ERROR! The server quit without updating PID file (/usr/local/mysql/mydata/node4.pid).
如果直接將這個問題貼google或者百度,是沒用的,最實在的還是檢視日誌。
[[email protected] backup]# cat /var/log/mysqld/mysqld.log
171108 22:18:39 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/mydata
171108 22:18:40 [Note] /usr/libexec/mysqld (mysqld 5.7.20.) starting as process 2413 ...
171108 22:18:40 InnoDB: The InnoDB memory heap is disabled
171108 22:18:40 InnoDB: Mutexes and rw_locks use GCC atomic builtins
171108 22:18:40 InnoDB: Compressed tables use zlib 1.2.7
171108 22:18:40 InnoDB: Using Linux native AIO
171108 22:18:40 InnoDB: Initializing buffer pool, size = 128.0M
171108 22:18:40 InnoDB: Completed initialization of buffer pool
171108 22:18:40 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
171108 22:18:41 mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended
重點來了:
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
解決方法:
將mysql的dasedir、datadir、conf等目錄檢查一遍,檢視裡面的檔案是否都授權給mysql使用者。
2、使用systemctl啟動失敗
檢視系統日誌
忘記建立目錄了。所以檢視系統日誌,找ERROR就行啦。
解決方法:
mkdir /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
以上是我碰到的問題,其他都沒什麼大問題。相關推薦
centos 7 編譯安裝mysql5.7.20支援systemd及報錯事項
一、MYSQL的新特性及環境 1、效能更快3倍 2、新的優化器 3、原生的JSON支援 4、多源複製 5、GIS空間擴充套件 本次部署環境 Linux:CentOS Linux release 7.3.1611 (Core) MYSQL版本:mysql-5.7.20 二、b
Centos7系統編譯安裝Mysql5.7.21
mysql centos7環境說明 :centos7.4 64位虛擬機 mysql5.7.21.tar.gz 編譯安裝需要虛擬機2G內存[root@localhost ~]# uname -aLinux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tu
源碼編譯安裝Mysql5.7版本
源碼編譯 Mysql5.7版本1、源碼編譯安裝mysql(5.7版本) 下載地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.18.tar.gz#(MySQL從5.7版本之後,boost是必須的,建議把系統自帶的boost庫卸載,源碼編
centos7.2編譯安裝mysql5.7.21報錯解決
initial mem ext ava gin onf 改密 依賴 document 編譯安裝mysql 安裝環境安裝包[root@ecs-adfa ~]# ls /root/tools/app.tar.gz mysql-5.7.21 mysql-5.7.21.tar.
在CentOS7中手工編譯安裝Mysql5.7
可能 文件 lac val mysql5.7 welcome hole 開啟 names 在CentOS7中手工編譯安裝Mysql5.7 實驗介紹:由於Mysql自從5.5之後,都需要安裝boost的函數庫,所以和LAMP中編譯安裝Mysql略有不同,配置文件也不一樣,下面
手工編譯安裝Mysql5.7
設置環境變量 存儲 esp grep dem gis 添加 啟動 mua MySQL是一個多線程、多用戶的SQL數據庫服務,具有高性能、高可靠和易於使用的特性,為了確保MySQL數據庫的完整性、可定制性,這裏我會采用手工編譯的方式來安裝。 MySQL5.7源碼包鏈接:htt
Ubuntu18.04編譯安裝mysql5.7.23
size https tst 源碼 don 解析 truncate 保存 compiler 本博客為源碼安裝mysql5.7.23案例全過程 環境ubuntu18.04 安裝規劃: 配置文件:/etc/my.cnf 數據目錄:/r2/mysqldata 安裝目錄:/usr/
CentOS7編譯安裝MySQL5.7.24
目錄 安裝依賴 安裝boost 編譯安裝MySQL 配置 登入MySQL,修改密碼 安裝依賴 (1)cmake是新版MySQL的編譯工具 sudo yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel s
centos 6 yum 安裝 mysql5.7
下載配置mysql yum源 wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm rpm -Uvh mysql57-community-release-el6-9.noarch.rpm 安裝
CentOS7 離線編譯安裝Mysql5.7
First 下載Mysql-5.7的rpm-bundle版本,並使用xftp或者flashftp等工具上傳到CentOS上 Second tar xvf mysql-5.7.23-1.el7.x86
centos下RPM安裝mysql5.7.13
1、檢視已有mysql rpm -qa | grep mysql 2、解除安裝 #yum -y remove mysql-libs-5.1.66-2.el6_3.x86_64 檢查並刪除老版本mysql的開發標頭檔案和庫 命令:#rm -fr /usr/
編譯安裝mysql5.7.24踩的坑
#The MySQL client [client] port=3306 socket=/mysqldata/3306/mysql.sock #default-charcter-set=utf8 #The MySQL server [mysqld] port=3306 user=mys
CentOS 7.5安裝MySQL5.7.24
本文適用CentOS 7.5 1、下載mysql 5.7 的rpm wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2、 yum -y install mysql57-communit
RHEL7 編譯安裝mysql5.7
1、安裝基本服務 yum -y install gcc-c++ ncurses-devel cmake 2、將boost軟
在CentOS中編譯安裝VIM 7.3
在 CentOS 中編譯安裝 VIM 7.3 預設安裝的 Vim 不帶有多字元支援,所以不支援中文。無論是將 CentOS 本來的語系改為中文還是將 Vim 的語系設定改為中文,都不能正常顯示中文。為了在 Vim 中能夠正常處理中文,我們需要在編譯時指定 —enable-
Centos6編譯安裝Mysql5.7.18, rpm 安裝mysql5.7.18,ubuntu apt安裝mysql
關鍵字: centos 編譯安裝mysql5.7.18 rpm安裝5.7.18,ubuntu apt -get 安裝mysql 一. 編譯安裝前的準備 1.1 解除安裝原有的Mysql 在root使用者下操作 找出mysql的相關目錄
centos6.9編譯安裝mysql5.7.19
廢話不多說,先直接來完全操作命令 yum install cmake gcc gcc-c++ ncurses-devel wget wget http://downloads.sourceforge.net/project/boost/boost/1.59
ubuntu上編譯安裝mysql5.7.x【多次錯誤之後總結的方法】
1.進入mysql官網->Downloads->MySQL Community Edition->MySQL Community Server->Select Platform
CentOS6.7中安裝mysql5.7.23(rpm方式)(遠端連線,注意關閉防火牆:chkconfig iptables off)
1、 查以前是否裝過Mysql(以前裝過,注意將之前的檔案刪除,見檔案最後列表) rpm -qa|grep -i mysql 2、 發現有的話就都解除安裝 rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
CentOS 7.4下使用yum安裝MySQL5.7.20 最簡單的 (引用)
沒有 添加 下使用 href https user ogg where size 引用 https://blog.csdn.net/z13615480737/article/details/78906598 CentOS7默認數據庫是mariadb, 但是 好多用的都是my