在這篇文章中我們將了解關(guān)于 Percona 服務(wù)器,一個(gè)開源的MySQL,MariaDB的替代品。InnoDB的數(shù)據(jù)庫引擎使得Percona 服務(wù)器非常有吸引力,如果你需要的高性能,高可靠性和高性價(jià)比的解決方案,它將是一個(gè)很好的選擇。
在下文中將介紹在CentOS 7上 Percona 服務(wù)器的安裝,以及備份當(dāng)前數(shù)據(jù),配置的步驟和如何恢復(fù)備份。
1.什么是Percona,為什么使用它
Percona是一個(gè)MySQL,MariaDB數(shù)據(jù)庫的開源替代品,它是MySQL的一個(gè)分支,相當(dāng)多的改進(jìn)和獨(dú)特的功能使得它比MYSQL更可靠,性能更強(qiáng),速度更快,它與MYSQL完全兼容,你甚至可以在Oracle的MySQL與Percona之間使用復(fù)制。
在Percona中獨(dú)具特色的功能
分區(qū)適應(yīng)哈希搜索
快速校驗(yàn)算法
緩沖池預(yù)加載
支持FlashCache
MySQL企業(yè)版和Percona中的特有功能
從不同的服務(wù)器導(dǎo)入表
PAM認(rèn)證
審計(jì)日志
線程池
現(xiàn)在,你肯定很興奮地看到這些好的東西整合在一起,我們將告訴你如何安裝和對Percona Server做基本配置。
2. 備份你的數(shù)據(jù)庫
接下來,在命令行下使用SQL命令創(chuàng)建一個(gè)mydatabases.sql文件,來重建或恢復(fù)salesdb和employeedb數(shù)據(jù)庫,根據(jù)你的設(shè)置替換數(shù)據(jù)庫名稱,如果沒有安裝MySQL則跳過此步:
mysqldump -u root -p --databases employeedb salesdb > mydatabases.sql
復(fù)制當(dāng)前的配置文件,如果你沒有安裝MYSQL也可跳過:
cp my.cnf my.cnf.bkp
3.刪除之前的SQL服務(wù)器
停止MYSQL/MariaDB,如果它們還在運(yùn)行:
systemctl stop mysql.service
卸載MariaDB和MYSQL:
yum remove MariaDB-server MariaDB-client MariaDB-shared mysql mysql-server
移動(dòng)重命名放在/var/lib/mysql當(dāng)中的MariaDB文件。這比僅僅只是移除更為安全快速,這就像2級即時(shí)備份。:)
mv /var/lib/mysql /var/lib/mysql_mariadb
4.使用二進(jìn)制包安裝Percona
你可以在眾多Percona安裝方法中選擇,在CentOS中使用Yum或者RPM包安裝通常是更好的主意,所以這些是本文介紹的方式,下載源文件編譯后安裝在本文中并沒有介紹。
從Yum倉庫中安裝:
首先,你需要設(shè)置Percona的Yum庫:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
接下來安裝Percona:
yum install Percona-Server-client-56 Percona-Server-server-56
上面的命令安裝Percona的服務(wù)器和客戶端、共享庫,可能需要Perl和Perl模塊,以及其他依賴的需要,如DBI::MySQL。如果這些尚未安裝,可能需要安裝更多的依賴包。
使用RPM包安裝:
我們可以使用wget命令下載所有的rpm包:
wget -r -l 1 -nd -A rpm -R "*devel*,*debuginfo*" \
http://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-5.5.42-37.1/binary/redhat/7/x86_64/
使用rpm工具,一次性安裝所有的rpm包:
rpm -ivh Percona-Server-server-55-5.5.42-rel37.1.el7.x86_64.rpm \
Percona-Server-client-55-5.5.42-rel37.1.el7.x86_64.rpm \
Percona-Server-shared-55-5.5.42-rel37.1.el7.x86_64.rpm
注意在上面命令語句中最后的反斜杠'\'(只是為了換行方便)。如果您安裝單獨(dú)的軟件包,記住要解決依賴關(guān)系,在安裝客戶端之前要先安裝共享包,在安裝服務(wù)器之前請先安裝客戶端。
5.配置Percona服務(wù)器
恢復(fù)之前的配置
當(dāng)我們從MariaDB遷移過來時(shí),你可以將之前的my.cnf的備份文件恢復(fù)回來。
cp /etc/my.cnf.bkp /etc/my.cnf
創(chuàng)建一個(gè)新的my.cnf文件
如果你需要一個(gè)適合你需求的新的配置文件或者你并沒有備份配置文件,你可以使用以下方法,通過簡單的幾步生成新的配置文件。
下面是Percona-server軟件包自帶的my.cnf文件
# Percona Server template configuration/p>
p>[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=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock/p>
p># Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0/p>
p>[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
根據(jù)你的需要配置好my.cnf后,就可以啟動(dòng)該服務(wù)了:
systemctl restart mysql.service
如果一切順利的話,它已經(jīng)準(zhǔn)備好執(zhí)行SQL命令了,你可以用以下命令檢查它是否已經(jīng)正常啟動(dòng):
mysql -u root -p -e 'SHOW VARIABLES LIKE "version_comment"'
如果你不能夠正常啟動(dòng)它,你可以在/var/log/mysql/mysqld.log中查找原因,該文件可在my.cnf的[mysql_safe]的log-error中設(shè)置。
tail /var/log/mysql/mysqld.log
你也可以在/var/lib/mysql/文件夾下查找格式為[主機(jī)名].err的文件,就像下面這個(gè)例子:
tail /var/lib/mysql/centos7.err
如果還是沒找出原因,你可以試試strace:
yum install strace systemctl stop mysql.service strace -f -f mysqld_safe
上面的命令挺長的,輸出的結(jié)果也相對簡單,但絕大多數(shù)時(shí)候你都能找到無法啟動(dòng)的原因。
6.保護(hù)你的數(shù)據(jù)
好了,你的關(guān)系數(shù)據(jù)庫管理系統(tǒng)已經(jīng)準(zhǔn)備好接收SQL查詢,但是把你寶貴的數(shù)據(jù)放在沒有最起碼安全保護(hù)的服務(wù)器上并不可取,為了更為安全最好使用mysqlsecureinstall來安裝,這個(gè)工具可以幫助你刪除未使用的默認(rèn)功能,并設(shè)置root的密碼,限制使用此用戶進(jìn)行訪問。只需要在shell中執(zhí)行該命令,并參照屏幕上的說明操作。
mysql_secure_install
7.還原備份
如果您參照之前的設(shè)置,現(xiàn)在你可以恢復(fù)數(shù)據(jù)庫,只需再用mysqldump一次。
mysqldump -u root -p mydatabases.sql
恭喜你,你剛剛已經(jīng)在你的CentOS上成功安裝了Percona,你的服務(wù)器已經(jīng)可以正式投入使用;你可以像使用MySQL一樣使用它,你的服務(wù)器與它完全兼容。
總結(jié)
為了獲得更強(qiáng)的性能你需要對配置文件做大量的修改,但這里也有一些簡單的選項(xiàng)來提高機(jī)器的性能。當(dāng)使用InnoDB引擎時(shí),將innodbfileper_table設(shè)置為on,它將在一個(gè)文件中為每個(gè)表創(chuàng)建索引表,這意味著每個(gè)表都有它自己的索引文件,它使系統(tǒng)更強(qiáng)大和更容易維修。
可以修改innodbbufferpool_size選項(xiàng),InnoDB應(yīng)該有足夠的緩存池來應(yīng)對你的數(shù)據(jù)集,大小應(yīng)該為當(dāng)前可用內(nèi)存的70%到80%。
將innodb-flush-method設(shè)置為O_DIRECT,關(guān)閉寫入高速緩存,如果你使用了RAID,這可以提升性能,因?yàn)樵诘讓右呀?jīng)完成了緩存操作。
如果你的數(shù)據(jù)并不是十分關(guān)鍵并且并不需要對數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個(gè)基本要素完全兼容,可以將innodbflushlogattrx_commit設(shè)置為2,這也能提升系統(tǒng)的性能。