一臺(tái)服務(wù)器部署兩個(gè)獨(dú)立的mysql數(shù)據(jù)庫操作實(shí)例
1 背景
公司進(jìn)行壓測和業(yè)務(wù)測試時(shí)候資源有限,兩個(gè)環(huán)境都部署在一臺(tái)服務(wù)器上,但是需要為了做業(yè)務(wù)測試不影響到壓測測試,所有業(yè)務(wù)測試調(diào)用數(shù)據(jù)庫要和壓測的庫分開。
這個(gè)時(shí)候就需要在這臺(tái)服務(wù)器上部署兩個(gè)mysql實(shí)例,然后分別有不同的配置文件,調(diào)用不同的數(shù)據(jù)文件。這樣頂多需要考慮服務(wù)器的性能問題而已,兩組測試互不干擾。
2 安裝MySQL
先看看是否已安裝過(自帶),如果已安裝過,先卸載干凈;然后檢查安裝環(huán)境是否支持,重新安裝;
# 先查找一下系統(tǒng)有沒有mysql包,以免影響后續(xù)安裝使用 [root@xiaopeng ~]# rpm -qa | grep mysql #沒有輸出任何內(nèi)容說明沒有mysql包 [root@xiaopeng ~]# rpm -qa | grep mariadb #我的系統(tǒng)輸出了如下兩個(gè)包,那么就需要清理掉 mariadb-libs-5.5.68-1.el7.x86_64 mariadb-5.5.68-1.el7.x86_64 [root@xiaopeng ~]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps [root@xiaopeng ~]# rpm -e mariadb-5.5.68-1.el7.x86_64 --nodeps [root@xiaopeng ~]# rpm -qa | grep mariadb #刪除之后再查看就沒有任何mariadb的包了 [root@xiaopeng ~]# [root@xiaopeng ~]# chmod -R 755 /tmp # 增加文件操作權(quán)限,安裝MySQL后MySQL會(huì)用戶在/tmp目錄下新建tmp_db文件,需要給/tmp目錄較大的權(quán)限操作 ? # 檢查系統(tǒng)中是否存在一些安裝MySQL時(shí)需要的依賴庫 [root@xiaopeng ~]# rpm -qa|grep libaio #我的系統(tǒng)檢查發(fā)現(xiàn)有l(wèi)ibaio依賴包 libaio-0.3.109-13.el7.x86_64 [root@xiaopeng ~]# rpm -qa|grep net-tools #我的系統(tǒng)檢查發(fā)現(xiàn)有net-tools依賴包(就是netstat命令) net-tools-2.0-0.25.20131004git.el7.x86_64 # 如果不存在則執(zhí)行yum -y install libaio net-tools安裝即可
2 進(jìn)行mysql安裝
# 首先創(chuàng)建mysql用戶和用戶組 [root@xiaopeng ~]# groupadd mysql #創(chuàng)建一個(gè)組,組名叫mysql [root@xiaopeng ~]# useradd -r -g mysql -s /bin/false mysql # 創(chuàng)建一個(gè)名為mysql的系統(tǒng)用戶,該用戶屬于mysql組,但不能登錄系統(tǒng)。主要用來安裝和配置MySQL數(shù)據(jù)庫服務(wù)時(shí)使用。 [root@xiaopeng ~]# cd /usr/local/ #進(jìn)入安裝目錄 [root@xiaopeng local]# rz # rz命令可以將windows的包上傳到linux的當(dāng)前目前 #如果沒有這個(gè)命令的話執(zhí)行yum -y install lrzsz就能安裝上這個(gè)命令了
進(jìn)行解壓縮
[root@xiaopeng local]# tar -zxf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz #解壓縮這個(gè)包 [root@xiaopeng local]# mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql #改名叫mysql
mysql服務(wù)安裝完畢
3 配置搭建3306、3307實(shí)例
創(chuàng)建3306、3307不同實(shí)例的數(shù)據(jù)存放路徑和配置等文件存放位置。
# 分別創(chuàng)建數(shù)據(jù)文件存放路徑 [root@xiaopeng local]# mkdir -p mysql/3306/data [root@xiaopeng local]# mkdir -p mysql/3307/data ? # 分別創(chuàng)建日志存放路徑 [root@xiaopeng local]# mkdir -p mysql/3306/log [root@xiaopeng local]# mkdir -p mysql/3307/log ? # 分別創(chuàng)建兩個(gè)mysql的配置文件 [root@xiaopeng local]# vim mysql/3306/my.cnf [mysqld] port=3306 #實(shí)例1的服務(wù)端口為3306 user=mysql #用戶名mysql basedir=/usr/local/mysql #mysql服務(wù)安裝路徑 datadir=/usr/local/mysql/3306/data #實(shí)例1的數(shù)據(jù)存放路徑 lower_case_table_names=1 innodb_buffer_pool_size=128M socket=/tmp/mysql_3306.sock #sock文件最后放在此目錄下,否則連接mysql的時(shí)候還需要--socket=路徑來指定sock文件的位置,很麻煩 explicit_defaults_for_timestamp=true symbolic-links=0 log-error=/usr/local/mysql/3306/log/mysqld.log pid-file=/usr/local/mysql/3306/run/mysqld.pid character_set_server=utf8mb4 init_connect='SET NAMES utf8mb4' ? [root@xiaopeng local]# vim mysql/3307/my.cnf [mysqld] port=3307 #實(shí)例1的服務(wù)端口為3307 user=mysql #用戶名mysql basedir=/usr/local/mysql #mysql服務(wù)安裝路徑 datadir=/usr/local/mysql/3307/data #實(shí)例1的數(shù)據(jù)存放路徑 lower_case_table_names=1 innodb_buffer_pool_size=128M socket=/tmp/mysql_3307.sock #sock文件最后放在此目錄下,否則連接mysql的時(shí)候還需要--socket=路徑來指定sock文件的位置,很麻煩 explicit_defaults_for_timestamp=true symbolic-links=0 log-error=/usr/local/mysql/3307/log/mysqld.log pid-file=/usr/local/mysql/3307/run/mysqld.pid character_set_server=utf8mb4 init_connect='SET NAMES utf8mb4' ? # 修改整個(gè)目錄及子文件的所有者所屬組為mysql [root@xiaopeng local]# chown -R mysql:mysql /usr/local/mysql [root@xiaopeng local]# ll
[root@xiaopeng local]# cd mysql [root@xiaopeng mysql]# tree 3306 #想用tree命令查看一下目錄結(jié)構(gòu),顯示沒有這個(gè)命令 -bash: tree: 未找到命令 [root@xiaopeng mysql]# yum -y install tree #那就下載一個(gè) [root@xiaopeng mysql]# tree 3306 #再查看一下就顯示了,配置文件和數(shù)據(jù)存放目錄都完全隔離了 3306 ├── data └── my.cnf [root@xiaopeng mysql]# tree 3307 3307 ├── data └── my.cnf
4 設(shè)置mysql系統(tǒng)環(huán)境變量
# 設(shè)置系統(tǒng)環(huán)境變量 [root@xiaopeng mysql]# vim /etc/profile # 在文件末尾添加下面信息 export PATH=/usr/local/mysql/bin:$PATH ? [root@xiaopeng mysql]# source /etc/profile #加載一下使環(huán)境變量生效
5 分別初始化兩個(gè)mysql數(shù)據(jù)庫:
# 初始化3306實(shí)例數(shù)據(jù)庫 # 指定配置文件的位置、安裝目錄、數(shù)據(jù)存放路徑 # 注意,初始化結(jié)束的最后一行記錄了root的密碼,復(fù)制到記事本 [root@xiaopeng mysql]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3306/data ? [root@xiaopeng mysql]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3307/data ? # 啟動(dòng)數(shù)據(jù)庫實(shí)例3306、3307并放入后臺(tái) [root@xiaopeng mysql]# nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --user=mysql & [root@xiaopeng mysql]# nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --user=mysql &
6 登錄兩個(gè)mysql
[root@xiaopeng mysql]# mysql -uroot -p'7VSb@4FUd^28U2KL' -h127.0.0.1 -p -P3306 #3VSb@4FUd^28U2KL為初始化結(jié)束后復(fù)制的密碼 [root@xiaopeng mysql]# mysql -uroot -p'9dTJylD*4s2ARdtx' -h127.0.0.1 -p -P3307 #9dTJylD*4s2ARdtx為初始化結(jié)束后復(fù)制的密碼
6 擴(kuò)展
1、如果要修改root密碼,使用如下命令
# 先登錄到mysql中,然后執(zhí)行如下命令 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密碼'); # 一定要注意括號(hào)引號(hào)分號(hào)等符號(hào)是英文格式的
2、如果sock文件放在了其他目錄下
mysql -uroot -p'密碼' -h 127.0.0.1 --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3306 # --socket=后面跟上sock文件的絕對(duì)路徑 ? # 備份3306中的xiaopenglinux數(shù)據(jù)庫 mysqldump -uroot -p'密碼' xiaopenglinux > /usr/local/data/mysql/mysqlBackups/xiaopenglinux.sql --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3306 ? # 還原xiaopenglinux數(shù)據(jù)庫到3307數(shù)據(jù)庫中 mysql -uroot -p'密碼' < xiaopenglinux.sql --socket=/usr/local/data/mysql/tmp/mysql.sock --port=3307
3、創(chuàng)建普通用戶并賦予權(quán)限
create user lark_test@'%' identified by '0dAJylD*a3C8Rdtx'; show grants for "username"@"localhost"; # username 用戶名 # localhost 用戶的本地權(quán)限 show grants for "username"@"%"; # % 代表用戶的外部連接權(quán)限 ? # ALL: 允許進(jìn)行任何操作(擁有root權(quán)限) # USAGE: 只允許登錄--無其他任何權(quán)限(一般新創(chuàng)建的用戶是沒有任何權(quán)限的) grant all privileges on *.* to '用戶'@'127.0.0.1' identified by '密碼'; # 賦予新用戶,從本地操作所有數(shù)據(jù)庫,所有數(shù)據(jù)表的所有權(quán)限 grant all privileges on *.* to 'chai'@'%' identified by '666666'; # 賦予新用戶,從外部操作所有數(shù)據(jù)庫,所有數(shù)據(jù)表的所有權(quán)限(沒有外部客戶端的IP限制,但本地有限制) ? flush privileges; #刷新權(quán)限,使權(quán)限立即生效
總結(jié)
到此這篇關(guān)于一臺(tái)服務(wù)器部署兩個(gè)獨(dú)立的mysql數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)服務(wù)器部署兩個(gè)獨(dú)立mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多次執(zhí)行mysql_fetch_array()的指針歸位問題探討
多次執(zhí)行mysql_fetch_array(),在第二次執(zhí)行的時(shí)候,如果不加處理,就不會(huì)輸出任何內(nèi)容,這種情況下只需要對(duì)循環(huán)指針進(jìn)行復(fù)位即可,感興趣的朋友可以了解下啊,或許對(duì)你有所幫助2013-01-01