centos7單機上搭建mysql5.7一主多從模式


雖然只是一名擼碼小哥,但是畢竟常常和數據庫要打交道,免不了多少得知道些數據庫的配置和架構只是,所以自己參考官方文檔在單機上搭了個mysql的主從,當作筆記,避免年紀大了不記事兒。

 

本文只寫如何搭建主從的結構,不涉及原理和應用場景,內容淺顯,不喜勿噴。

 

基本環境:

centos7 x64

mysql 5.7.20(壓縮版)

 

下載mysql 5.7.20(去官網下載了傳到linux或直接wget),如圖

 

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

 

 

添加用戶組mysql:

groupadd mysql

 

添加用戶mysql且該用戶不能登陸:

useradd -g mysql mysql -s /bin/false

 

創建用戶組和用戶非強制性要求,可以直接用root搞,不過還是養成良好習慣,不同用戶干不同事兒,免得一直用着root為所欲為,稍微手滑一切go die...

 

新建一個文件夾,待下載完成后解壓到里面,並復制兩份,做一主兩從用,新建data目錄,conf目錄,logs目錄,sock目錄(建立這四個目錄非強制要求,這里僅僅是為了區分各文件,便於管理),如圖:

 

進入conf目錄,新建3306.cnf,3307.cnf,3308.cnf,如圖:

 

進入logs目錄,新建3306_err.log,3307_err.log,3308_err.log,如圖:

這一步可以跳過,這一步是為新的啟動方式mysqld_safe做的異常日志輸出,如果用老的mysqld啟動,則可以不用配置

 

 

現在開始搞配置文件,這里我們擬定3306為主庫(master),3307,3308為從庫(slave),

首先配置master,即conf目錄下的3306.cnf,如圖(這里只配置了mysqld組和mysqld_safe,沒有配置client),

 

配置說明:

[mysqld]
user=mysql #mysql啟動用戶
character-set-server=utf8 #服務字符集
port=3306 #端口
socket=/usr/local/mysql/sock/3306.sock #用於通訊的套接字,由於是一台機多實例,所以區分開
basedir=/usr/local/mysql/mysql5720_3306 #mysql安裝目錄
datadir=/usr/local/mysql/data/3306 #數據存放目錄
server-id=1 #本機唯一標識
log-bin=master-bin #bin-log前綴
log-bin-index=master-bin.index #bin-log-index前綴
binlog_format=ROW #binlog格式 (STATEMENT,ROW,FIXED),這里主要為了后續要測試canal,所以用到了ROW,具體格式區別,自行搜索
binlog-ignore-db=mysql #不需要同步給從庫的庫
binlog-ignore-db=sys #不需要同步給從庫的庫
binlog-ignore-db=information_schema #不需要同步給從庫的庫
binlog-ignore-db=performance_schema #不需要同步給從庫的庫

[mysqld_safe]
log-error=/usr/local/mysql/logs/3306_err.log #啟動錯誤日志輸出地址

 

配置完成后,進入mysql安裝目錄(basedir指向路徑)初始化實例

執行命令:

./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf --initialize-insecure

其中-insecure作用是不設置密碼,如果不帶則mysql會隨機生成一個密碼出現在控制台,需要記下來

 

初始化不報錯則啟動mysql服務,運行mysqld或mysqld_safe命令啟動mysql:

./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf

 

啟動不報錯后為mysql root用戶設置一個密碼:

./bin/mysqladmin -u root password "123456" --socket=/usr/local/mysql/sock/3306.sock(注意后面的 --socket參數必須帶上,與配置文件中的socket配置值一致

 

登陸mysql控制台(由於配置文件中沒有配置client組,所以登陸命令同樣需要添加--socket參數):

./mysql -uroot -p123456 --socket=/usr/local/mysql/sock/3306.sock

 

登陸后查看master狀態,如圖:

show master status;

 

每個人的file和position可能不一樣,請務必記錄下來

 

新建一個復制帳戶,用於從庫復制binlog使用:

create user 'slavedb'@'%' identified by '123456';

GRANT REPLICATION SLAVE ON *.* TO 'slavedb'@'%';

 

master主庫就ok了,現在開始配置slave從庫,這里以3307.cnf為例子,3308.cnf僅需把3307.cnf內容中所有的3307替換成3308即可,如圖:

 

 

[mysqld]
user=mysql
character-set-server=utf8
port=3307
socket=/usr/local/mysql/sock/3307.sock
basedir=/usr/local/mysql/mysql5720_3307
datadir=/usr/local/mysql/data/3307
server-id=2 #server_id 每個實例不一樣
read_only=1 #只讀庫

[mysqld_safe]
log-error=/usr/local/mysql/logs/3307_err.log

 

配置完成后,重復初始化,啟動,設置密碼步驟(注意指向所屬的配置文件和socket

 

然后登陸mysql,執行如下命令:

stop slave; #停止slave

change master to master_host =’127.0.0.1’,master_port=3306,master_user=’slaveuser’,master_password=’123456’,master_log_file=’mysql-bin.000008’,master_log_pos=331; // 指向主庫設置,其中最后兩個參數為master中查詢出來的值

start slave; #啟動slave

 

然后查看slave狀態,如圖,看到紅圈內的值則啟動成功(另外一台機器重復上述步驟):

show slave status\G; 

 

最后登陸master庫進行建表,寫入操作,而后去slave機查看,即可發現同步成功。

 


免責聲明!

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



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