小學學校網(wǎng)站模板免費下載蘇州網(wǎng)站建設(shè)開發(fā)公司
運維實戰(zhàn)—多種方式在Linux中部署并初始化MySQL
-
- 前言
- 實驗環(huán)境介紹
- 一、源碼包安裝MySQL
-
- 1、配置MySQL&編譯安裝
- 2、初始化數(shù)據(jù)庫
- 3、配置環(huán)境變量
- 二、yum安裝MySQL
- 三、rpm安裝MySQL
前言
MySQL是常用的關(guān)系型數(shù)據(jù)庫,具有以下特點:
1、開源,不需要支付額外的費用即可使用
2、支持包括Windows/Linux在內(nèi)的多個操作系統(tǒng)
3、支持多種語言,包括中文編碼GB 2312、BIG5,日文的shift_JIS
4、為包括C、C++、java、python、PHP在內(nèi)的多種編程語言提供了API
5、支持多種存儲引擎,例如MyISAM、InnoDB
6、使用標準的SQL語言進行操作
7、支持多線程,充分利用CPU資源
8、存儲數(shù)據(jù)量大,32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)表文件最大可支持8TB
9、可以定制,采用了GPL協(xié)議,通過修改源碼來開發(fā)自己的MySQL系統(tǒng)
基于以上特點,MySQL被廣泛用于學習與實際工作中,本篇文章介紹在Linux系統(tǒng)中使用多種方式部署并初始化MySQL數(shù)據(jù)庫,包括源碼安裝、rpm安裝以及yum安裝
實驗環(huán)境介紹
1、最小化安裝的4核4g Centos7.6 虛擬機
2、XShell遠程連接工具
3、本文章中使用的所有源碼包、rpm包的下載地址:https://www.mysql.com/downloads/
一、源碼包安裝MySQL
相較于其他兩種安裝,源碼安裝較繁瑣,但優(yōu)勢在于可以在安裝時以及初始化階段將需要設(shè)置的參數(shù)一次性設(shè)置到位
以下是安裝過程
1、配置MySQL&編譯安裝
一些版本的Linux系統(tǒng)中默認存在mariadb組件,該組件與安裝MySQL是沖突的,在安裝MySQL之前必須把該組件卸載掉,其中 --nodeps可以指定只刪除mariadb-libs,不刪除其依賴關(guān)系
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
接下來為MySQL安裝依賴,這些依賴包在本地yum源中均存在,無需配置其他網(wǎng)絡(luò)yum源。不會配置本地yum源的同學請看
CentOS7.6配置本地倉庫
yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bisonbison-devel
將依賴包上傳至Linux系統(tǒng)中需要安裝命令lrzsz,該命令可實現(xiàn)Windows拖動文件上傳至Linux系統(tǒng)中
yum -y install lrzsz
之后將在MySQL官網(wǎng)上下載的源碼包拖動上傳至Linux系統(tǒng)
解壓源碼包到指定路徑下,解壓完成后切換到該路徑下
tar -zxf mysql-boost-5.7.37.tar.gz -C /usr/src/
cd /usr/src/mysql-5.7.37/
接著進行預編譯,有別于其他軟件,MySQL的預編譯使用的是cmake命令,復制以下代碼
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DWITH_INNOBASE_STORAGE_ENGINE=ON -DWITH_MYISAM_STORAGE_ENGINE=ON -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DWITH_INNODB_MEMCACHED=ON -DWITH_BOOST=boost/boost_1_59_0
#解釋一下上述代碼
-DCMAKE_INSTALL_PREFIX —指定安裝路徑
-DMYSQL_DATADIR —數(shù)據(jù)目錄,即MySQL的數(shù)據(jù)存放路徑
-DSYSCONFDIR —配置文件所在路徑
-DWITH_INNOBASE_STORAGE_ENGINE/-DWITH_MYISAM_STORAGE_ENGINE —啟用兩種存儲引擎
-DDEFAULT_CHARSET/-DDEFAULT_COLLATION —指定字符集
-DENABLED_LOCAL_INFILE —啟用或禁用LOAD DATA LOCAL INFILE 語句
-DMYSQL_TCP_PORT —指定服務(wù)端口號
-DMYSQL_UNIX_ADDR —指定Unix套接字文件的路徑
-DWITH_INNODB_MEMCACHED —啟用或禁用InnoDB 存儲引擎對 Memcached 的支持
-DWITH_BOOST —指定boost庫
運行完上述代碼
如果出現(xiàn)報錯,檢查一下依賴包是否都齊全
接著進行編譯安裝
make -j4 && make install
其中-j選項表示多個線程進行編譯,這樣可以節(jié)省時間
2、初始化數(shù)據(jù)庫
安裝完成后,運行如下代碼
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local/mysql
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/etc
mkdir -p /usr/local/mysql/tmp
mkdir -p /usr/local/mysql/logs
chown -R mysql:mysql /usr/local/mysql
vim /usr/local/mysql/etc/my.cnf
解釋一下上述代碼
groupadd mysql #為MySQL創(chuàng)建一個組來管理軟件的運行
useradd -r-g mysql -s /bin/false mysql #為MySQL創(chuàng)建一個用戶來管理軟件的運行
cd /usr/local/mysql #切換到MySQL的安裝路徑
mkdir -p /usr/local/mysql/data #創(chuàng)建安裝前指定的數(shù)據(jù)存放目錄
mkdir -p /usr/local/mysql/etc #創(chuàng)建安裝前指定的配置文件所在目錄
mkdir -p /usr/local/mysql/tmp #創(chuàng)建臨時文件目錄
mkdir -p /usr/local/mysql/logs #創(chuàng)建日志文件目錄
vim /usr/local/mysql/etc/my.cnf #創(chuàng)建編輯配置文件,默認也存在配置文件但其中內(nèi)容較少
將以下的配置文件粘貼進去
[client] #客戶端設(shè)置
port=3306 #服務(wù)器監(jiān)聽端口,默認為3306
socket=/usr/local/mysql/tmp/mysql.sock #Unix套接字文件路徑,默認/tmp/mysql.sock[mysqld] #服務(wù)端設(shè)置
## 一般配置選項
port=3306 #服務(wù)器監(jiān)聽端口,默認為3306
basedir=/usr/local/mysql #MySQL安裝根目錄
datadir=/usr/local/mysql/data #MySQL數(shù)據(jù)文件目錄
socket=/usr/local/mysql/tmp/mysql.sock #Unix套接字文件路徑,默認/tmp/mysql.sock
pid-file=/usr/local/mysql/tmp/mysql.pid #服務(wù)進程pid文件路徑
character_set_server=utf8 #默認字符集
default_storage_engine=InnoDB #默認InnoDB存儲引擎
user=mysql## 連接配置選項
max_connections=200 #最大并發(fā)連接數(shù)
table_open_cache=400 #表打開緩存大小,默認2000
open_files_limit=1000 #打開文件數(shù)限制,默認5000
max_connect_errors=200 #最大連接失敗數(shù),默認100
back_log=100 #請求連接隊列數(shù)
connect_timeout=20 #連接超時時間,默認10秒
interactive_timeout=1200 #交互式超時時間,默認28800秒
wait_timeout=600 #非交互超時時間,默認28800秒
net_read_timeout=30 #讀取超時時間,默認30秒
net_write_timeout=60 #寫入超時時間,默認60秒
max_allowed_packet=8M #最大傳輸數(shù)據(jù)字節(jié),默認4M
thread_cache_size=10 #線程緩沖區(qū)(池)大小
thread_stack=256K #線程棧大小,32位平臺196608、64位平臺262144## 臨時內(nèi)存配置選項
tmpdir=/tmp #臨時目錄路徑
tmp_table_size=64M #臨時表大小,默認16M
max_heap_table_size=64M #最大內(nèi)存表大小,默認16M
sort_buffer_size=1M #排序緩沖區(qū)大小,默認256K
join_buffer_size=1M #join緩沖區(qū)大小,默認256K## Innodb配置選項
#innodb_thread_concurrency=0 #InnoDB線程并發(fā)數(shù)
innodb_io_capacity=200 #IO容量,可用于InnoDB后臺任務(wù)的每秒I/O操作數(shù)(IOPS),
innodb_io_capacity_max=400 #IO最大容量,InnoDB在這種情況下由后臺任務(wù)執(zhí)行的最大IOPS數(shù)
innodb_lock_wait_timeout=50 #InnoDB引擎鎖等待超時時間,默認50(單位:秒)innodb_buffer_pool_size=512M #InnoDB緩沖池大小,默認128M
innodb_buffer_pool_instances=4 #InnoDB緩沖池劃分區(qū)域數(shù)
innodb_max_dirty_pages_pct=75 #緩沖池最大允許臟頁比例,默認為75
innodb_flush_method=O_DIRECT #日志刷新方法,默認為fdatasync
innodb_flush_log_at_trx_commit=2 #事務(wù)日志刷新方式,默認為0
transaction_isolation=REPEATABLE-READ #事務(wù)隔離級別,默認REPEATABLE-READinnodb_data_home_dir=/usr/local/mysql/data #表空間文件路徑,默認保存在MySQL的datadir中
innodb_data_file_path=ibdata1:128M:autoextend #表空間文件大小
innodb_file_per_table=ON #每表獨立表空間innodb_log_group_home_dir=/usr/local/mysql/data #redoLog文件目錄,默認保存在MySQL的datadir中
innodb_log_files_in_group=2 #日志組中的日志文件數(shù),默認為2
innodb_log_file_size=128M #日志文件大小,默認為48MB
innodb_log_buffer_size=32M #日志緩沖區(qū)大小,默認為16MB## MyISAM配置選項
key_buffer_size=32M #索引緩沖區(qū)大小,默認8M
read_buffer_size=4M #順序讀緩區(qū)沖大小,默認128K
read_rnd_buffer_size=4M #隨機讀緩沖區(qū)大小,默認256K
bulk_insert_buffer_size=8M #塊插入緩沖區(qū)大小,默認8M
myisam_sort_buffer_size=8M #MyISAM排序緩沖大小,默認8M
#myisam_max_sort_file_size=1G #MyISAM排序最大臨時大小
myisam_repair_threads=1 #MyISAM修復線程
skip-external-locking #跳過外部鎖定,啟用文件鎖會影響性能## 日志配置選項
log_output=FILE #日志輸出目標,TABLE(輸出到表)、FILE(輸出到文件)、NONE(不輸出),可選擇一個或多個以逗>號分隔
log_error=/usr/local/mysql/logs/error.log #錯誤日志存放路徑
log_error_verbosity=1 #錯誤日志過濾,允許的值為1(僅錯誤),2(錯誤和警告),3(錯誤、警告和注釋),默認值為3。
log_timestamps=SYSTEM #錯誤日志消息格式,日志中顯示時間戳的時區(qū),UTC(默認值)和 SYSTEM(本地系統(tǒng)時區(qū))
general_log=ON #開啟查詢?nèi)罩?#xff0c;一般選擇不開啟,因為查詢?nèi)罩居涗浐茉敿?#xff0c;會增大磁盤IO開銷,影響性能
general_log_file=/usr/local/mysql/logs/general.log #通用查詢?nèi)罩敬娣怕窂?# 慢查詢?nèi)罩九渲眠x項
slow_query_log=ON #開啟慢查詢?nèi)罩?slow_query_log_file=/usr/local/mysql/logs/slowq.log #慢查詢?nèi)罩敬娣怕窂?long_query_time=2 #慢查詢時間,默認10(單位:秒)
min_examined_row_limit=100 #最小檢查行限制,檢索的行數(shù)必須達到此值才可被記為慢查詢
log_slow_admin_statements=ON #記錄慢查詢管理語句
log_queries_not_using_indexes=ON #記錄查詢未使用索引語句
log_throttle_queries_not_using_indexes=5 #記錄未使用索引速率限制,默認為0不限制
log_slow_slave_statements=ON #記錄從庫復制的慢查詢,作為從庫時生效,從庫復制中如果有慢查詢也將被記錄## 復制配置選項
server-id=1 #MySQL服務(wù)唯一標識
log-bin=mysql-bin #開啟二進制日志,默認位置是datadir數(shù)據(jù)目錄
log-bin-index=mysql-bin.index #binlog索引文件
binlog_format=MIXED #binlog日志格式,分三種:STATEMENT、ROW或MIXED,MySQL 5.7.7之前默認為STATEMENT,之后默認為ROW
binlog_cache_size=1M #binlog緩存大小,默認32KB
max_binlog_cache_size=1G #binlog最大緩存大小,推薦最大值為4GB
max_binlog_size=256M #binlog最大文件大小,最小值為4096字節(jié),最大值和默認值為1GB
expire_logs_days=7 #binlog過期天數(shù),默認為0不自動刪除
log_slave_updates=ON #binlog級聯(lián)復制
sync_binlog=1 #binlog同步頻率,0為禁用同步(最佳性能,但可能丟失事務(wù)),為1開啟同步(影響性能,但最安全不會丟失任何事務(wù)),為N操作N次事務(wù)后同步1次relay_log=relay-bin #relaylog文件路徑,默認位置是datadir數(shù)據(jù)目錄
relay_log_index=relay-log.index #relaylog索引文件
max_relay_log_size=256M #relaylog最大文件大小
relay_log_purge=ON #中繼日志自動清除,默認值為1(ON)
relay_log_recovery=ON #中繼日志自動恢復auto_increment_offset=1 #自增值偏移量
auto_increment_increment=1 #自增值自增量
slave_net_timeout=60 #從機連接超時時間
replicate-wild-ignore-table=mysql.% #復制時忽略的數(shù)據(jù)庫表,告訴從線程不要復制到與給定通配符模式匹配的表
skip-slave-start #跳過Slave啟動,Slave復制進程不隨MySQL啟動而啟動## 其他配置選項
#memlock=ON #開啟內(nèi)存鎖,此選項生效需系統(tǒng)支持mlockall()調(diào)用,將mysqld進程鎖定在內(nèi)存中,防止遇到操作系統(tǒng)導致mysqld交換到磁盤的問題[mysqldump] #mysqldump數(shù)據(jù)庫備份工具
quick #強制mysqldump從服務(wù)器查詢?nèi)〉糜涗浿苯虞敵?#xff0c;而不是取得所有記錄后將它們緩存到內(nèi)存中
max_allowed_packet=16M #最大傳輸數(shù)據(jù)字節(jié),使用mysqldump工具備份數(shù)據(jù)庫時,某表過大會導致備份失敗,需要增大該值(大>于表大小即可)[myisamchk] #使用myisamchk實用程序可以用來獲得有關(guān)你的數(shù)據(jù)庫表的統(tǒng)計信息或檢查、修復、優(yōu)化他們
key_buffer_size=32M #索引緩沖區(qū)大小
myisam_sort_buffer_size=8M #排序緩沖區(qū)大小
read_buffer_size=4M #讀取緩區(qū)沖大小
write_buffer_size=4M #寫入緩沖區(qū)大小
初始化最后一步,按照配置文件的內(nèi)容來創(chuàng)建數(shù)據(jù)庫
bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize --user=mysql
3、配置環(huán)境變量
為MySQL數(shù)據(jù)庫配置環(huán)境變量
echo export MYSQL_HOME=/usr/local/mysql >> /etc/profile #軟件的路徑
echo export PATH=$MYSQL_HOME/bin:$PATH >> /etc/profile #命令的路徑
source /etc/profile #重新加載系統(tǒng)環(huán)境變量配置文件
復制配置文件到init.d目錄使系統(tǒng)能夠使使用systemctl命令管理MySQL
cp /usr/src/mysql-5.7.37/support-files/mysql.server /etc/init.d/mysql
cd /etc/init.d/
chmod +x mysql
systemctl daemon-reload
systemctl start mysql
chkconfig mysql on
systemctl status mysql
設(shè)置軟鏈接,把MySQL的命令都放在默認的命令里面,使得可以在系統(tǒng)的任何地方使用MySQL的命令
ln -s /usr/local/mysql/bin/* /usr/local/bin/
自MySQL5.7版本起,MySQL初始有默認密碼,存放在日志文件當中
cat /usr/local/mysql/logs/error.log
將冒號之后的內(nèi)容復制
mysql -uroot -p
粘貼回車
進入之后的第一條命令只能修改密碼,其他命令均無效
set password=password('123456');
語法 set password=password(‘新密碼’);
至此,源碼包安裝MySQL完成,可以開始使用數(shù)據(jù)庫了
二、yum安裝MySQL
yum安裝和rpm安裝較簡單
安裝lrzsz命令,使文件能上傳到Linux中
yum -y install lrzsz
將在MySQL官網(wǎng)上下載的適合自己系統(tǒng)版本的yum源上傳
安裝yum源
rpm -ivh mysql84-community-release-el7-1.noarch.rpm
查看可用的rpm包
yum list | grep mysql
安裝mysql-community-servr即可,會自動解決依賴關(guān)系
yum -y install mysql-community-server
開啟數(shù)據(jù)庫服務(wù)
systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld
查看mysql默認密碼
cat /var/log/mysqld.log | grep password
進入MySQL
mysql -uroot -p
修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword!123';
FLUSH PRIVILEGES;
至此yum安裝完成,可以開始使用
三、rpm安裝MySQL
同樣上傳rpm包
yum -y install lrzsz
由于rpm包的互相依賴關(guān)系,必須按照如下順序安裝
rpm -e mariadb-libs --nodeps
rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.37-1.el7.x86_64.rpm
下載完成之后啟動
systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld
cat /var/log/mysqld.log | grep password
mysql -uroot -p
rpm安裝方式默認密碼策略為8位大小寫、數(shù)字、符號
set password=password('Aa12345&');
至此安裝完成
本篇文章到處結(jié)束