CentOS7.3 部署兩個實例 MySQL


描述

在同一台服務器中安裝兩個MySQL數據庫。目的是為了配置主從分離,所以需要多安裝一台用於從數據庫。使用mysqld_multi啟動多個實例。
mysql官網下載 需要安裝的版本。

下載與安裝

/usr/local/下創建mysqltemp(用於臨時下載數據庫安裝包)。

[root@localhost local]# cd /usr/local
[root@localhost local]# mkdir mysqltemp
[root@localhost local]# cd mysqltemp
[root@localhost mysql3307]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-i686.tar.gz
[root@localhost mysql3307]# tar -xvf mysql-5.7.28-linux-glibc2.12-i686.tar.gz

//  重命名解壓的文件為mysql,並移動mysql到/usr/local/mysql
[root@localhost mysql3307]# mv mysql-5.7.28-linux-glibc2.12-i686 /usr/local/mysql

下載、解壓和重命名之后,完整路徑是/usr/local/mysql。接下來進入mysql文件夾,創建data文件夾,並在data文件夾中創建3306、3307、log文件夾備用。在3306和3307文件夾中分別創建data、log、tmp文件夾備用。

[root@localhost mysql]# mkdir data
[root@localhost mysql]# cd data
[root@localhost data]# mkdir {3306,3307,log}
[root@localhost data]# cd 3306
[root@localhost 3306]# mkdir {data,log,tmp}
[root@localhost 3306]# cd ../3307
[root@localhost 3307]# mkdir {data,log,tmp}

配置

配置/etc/my.cnf文件

# vim /etc/my.cnf

使用以下配置

# 啟動多個mysql實例
[client] 
default-character-set = utf8mb4

[mysqld_multi] 
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /usr/local/mysql/data/log/mysqld_multi.log

[mysqld3306] 
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/usr/local/mysql/data/3306/data
port=3306
user=mysql
performance_schema = off
server_id=3306
socket=/tmp/mysql_3306.sock
MyISAM_buffer_pool_size = 32M         #設置MyISAM 緩存大小
bind_address = 0.0.0.0                  #設置監聽IP地址
skip-name-resolve = 0                 #關閉DNS反向解析 
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/data/3306/log/slow.log
log-error = /usr/local/mysql/data/3306/log/error.log
binlog_format = mixed
log-bin = /usr/local/mysql/data/3306/log/mysql3306_bin
explicit_defaults_for_timestamp=true
lower_case_table_names = 1
  
[mysqld3307] 
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/usr/local/mysql/data/3307/data
port=3307
user=mysql
server_id=3307
performance_schema = off
MyISAM_buffer_pool_size = 32M         #設置MyISAM 緩存大小
bind_address = 0.0.0.0                  #設置監聽IP地址
skip-name-resolve = 0                 #關閉DNS反向解析 
socket=/tmp/mysql_3307.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/data/3307/log/slow.log
log-error = /usr/local/mysql/data/3307/log/error.log
binlog_format = mixed
log-bin = /usr/local/mysql/data/3307/log/mysql3307_bin
explicit_defaults_for_timestamp=true
lower_case_table_names = 1

添加好配置文件之后,需要添加mysql用戶(如果沒有該用戶的話)

# groupadd mysql
# useradd -g mysql mysql
# chown -R mysql:mysql /usr/local/mysql

初始化數據庫

添加好配置之后,就可以初始化3306和3307的數據庫了。執行命令之后,會出現臨時密碼,這個密碼需要記住,用來首次登錄mysql數據庫。

# cd /usr/local/mysql

# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/3306/data

# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/3307/data

執行初始化命令,如果出現以下錯誤,則執行相應的安裝命令即可。

./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

// 根據相應的提示,選擇對應的安裝命令
yum install -y libaio.so.1
yum install -y libnuma.so.1
yum install --setopt=protected_multilib=false libnuma.so.1

初始化數據庫沒有出現異常,最后會看到以下信息,說明初始化數據庫成功,這也就是數據庫的臨時密碼。

[Note] A temporary password is generated for root@localhost: 3/MasxQll5u

[Note] A temporary password is generated for root@localhost: 8tqGMruu8d?l

可以進入到data里面看看數據庫有沒有初始化成功。

# cd /usr/local/mysql/data/3306/data/
# cd /usr/local/mysql/data/3307/data/

啟動

mysqld_multi多實例管理的基本命令

啟動全部實例
# /usr/local/mysql/bin/mysqld_multi start

查看全部實例狀態
# /usr/local/mysql/bin/mysqld_multi report

啟動單個實例
# /usr/local/mysql/bin/mysqld_multi start 3306
# /usr/local/mysql/bin/mysqld_multi start 3307
停止單個實例
# /usr/local/mysql/bin/mysqld_multi stop 3306
# /usr/local/mysql/bin/mysqld_multi stop 3307
查看單個實例狀態
# /usr/local/mysql/bin/mysqld_multi report 3306
# /usr/local/mysql/bin/mysqld_multi report 3307

使用命令,啟動兩個數據庫實例

# /usr/local/mysql/bin/mysqld_multi start

執行命令沒有報錯,我們可以看一下日志有沒有錯誤。

[root@localhost log]# cat /usr/local/mysql/data/log/mysqld_multi.log 
mysqld_multi log file version 2.16; run: 二 4月  7 13:04:42 2020

Starting MySQL servers

為了確保兩個數據庫實例已經啟動,可以通過命令查看相應端口是否有進程。

# ps -ef | grep 3306
# ps -ef | grep 3307

或者查看相應的實例中的日志信息

# cat /usr/local/mysql/data/3307/log/error.log
# cat /usr/local/mysql/data/3307/log/error.log

登錄

以上都沒有錯誤,我們就可以登錄mysql進行修改密碼等配置了。

直接使用mysql -u root -p會報以下錯誤。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

所以要使用在配置文件中配置的sock地址mysql -S /tmp/mysql_3306.sock -p密碼,加上剛剛生成的臨時密碼。(其他配置可參考 CentOS7 環境配置(持續更新)

mysql -S /tmp/mysql_3306.sock -p3/MasxQll5u

// 設置密碼
mysql> set password=password('Root@123');
// 設置允許遠程登錄
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
mysql> flush privileges;

mysql> show variables like '%character%';
mysql> show variables like "%case%";

3307數據庫同樣跟3306操作一樣。

mysql -S /tmp/mysql_3307.sock -p8tqGMruu8d?l

// 設置密碼
mysql> set password=password('Root@123');
// 設置允許遠程登錄
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
mysql> flush privileges;

mysql> show variables like '%character%';
mysql> show variables like "%case%";

關閉數據庫,發現使用/usr/local/mysql/bin/mysqld_multi stop不能關閉。可以先查詢端口進程,然后用kill命令關閉。

# ps -ef | grep 3306
# kill -9 進程ID

以上,兩個數據庫實例已經配置並啟動成功。可以通過客戶端連接操作。如果需要配置讀寫分離,可以參考: SpringBoot 整合 MyCat 實現讀寫分離


參考文章:

首發地址: https://muycode.com/article/mysql20200407.html

centos下mysql多實例安裝3306、3307實例(2014-10-15)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM