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