@

1、MySQL一主一從的簡單搭建

1.1、主從複製簡介

在實際生產中,資料的重要性不言而喻。如果我們的資料庫只有一臺伺服器,那麼很容易產生單點故障的問題,如果伺服器宕機或者損壞了,那麼整個資料庫的資料就丟失了,這是重大的安全事故。所有我們必須部署兩臺或兩臺以上的伺服器來儲存我們的資料。也就是說我們將資料複製多份放在不同的伺服器上。當某臺伺服器宕機後其他伺服器還能提供服務。

1.2、MySQL主從複製簡介

主從複製是指伺服器分為主伺服器和從伺服器,主伺服器負責讀和寫,從伺服器只負責讀,主從複製也叫 master/slave,master是主,slave是從,但是並沒有強制,也就是說從也可以寫,主也可以讀,只不過一般我們不這麼做。主從複製可以實現對資料庫備份和讀寫分離。

1.3、主從複製的架構

1.4、前期準備

  1. 需要兩臺或者兩臺以上的伺服器或者虛擬機器
  2. 保證每臺伺服器上已經安裝好了mysql並且能正常啟動

1.5、主要配置實現

1.5.1、測試環境

主伺服器ip:176.20.92.71

從伺服器ip:176.20.92.73

MySQL版本:5.7.18

Linux版本:centos7

1.5.2、配置my.cnf檔案

注意:如果沒有這個配置檔案的話可以自己在資料庫的data目錄下新建一個這個檔案然後新增如下配置

[client]
port = 3306
socket = /usr/local/mysql-5.7.18/data/mysql.sock
default-character-set=utf8 [mysqld]
port = 3306
socket = /usr/local/mysql-5.7.18/data/mysql.sock
datadir = /usr/local/mysql-5.7.18/data
log-error = /usr/local/mysql-5.7.18/data/error.log
pid-file = /usr/local/mysql-5.7.18/data/mysql.pid character-set-server=utf8
lower_case_table_names=1
autocommit = 1

注意 /usr/local/mysql-5.7.18/data 是自己伺服器資料庫的的data路徑

1.5.3、啟動mysql測試

這裡不是正常啟動,而是通過my.cnf這個配置檔案啟動mysql

./mysqld_safe --defaults-file=/usr/local/mysql-5.7.18/data/my.cnf &

主從兩邊啟動都成功後,需要登入mysql進行測試

./mysql -uroot -h127.0.0.1 -p

主從兩邊都登入成功後再進行下面的配置

1.5.4、配置主從結構

1.5.4.1、主伺服器配置

在my.cnf檔案中加入如下配置,然後重新啟動mysql

log-bin=mysql-bin   	#表示啟用二進位制日誌
server-id=71 #表示server編號,編號要唯一

登入mysql輸入如下命令

在主伺服器上建立複製資料的賬號並授權

grant replication slave on *.* to 'copy'@'%' identified by '123456';

檢視主伺服器狀態 預設初始值:

File:mysql-bin.000001

Position:154

show master status;



如果不是初始值,是因為設定了copy使用者導致Position資料增加 需要重置一下狀態

重置狀態

reset master;

重置之後再次檢視狀態



到這裡主伺服器的配置就完成了,下面來進行從伺服器的配置

1.5.4.2、從伺服器配置

在my.cnf檔案中加入如下配置,然後重新啟動mysql

server-id=73 		#表示server編號,編號要唯一

登入mysql輸入如下命令

檢視伺服器狀態 初始狀態:Empty set

show slave status;

如果不是初始狀態,建議重置一下

重置命令如下

stop slave; 	#停止複製,相當於終止從伺服器上的IO和SQL執行緒
reset slave;

設定從伺服器的master

change master to master_host='176.20.92.71',master_user='copy',

master_port=3306,master_password='123456',

master_log_file='mysql-bin.000001',master_log_pos=154;

執行開始複製

start slave;

檢視主從複製是否搭建完成

show slave status \G



如果 Slave_IO_Running: 為no 執行如下命令

stop slave;
reset slave;
start slave;

在此mysql的主從複製搭建就完成了,下面來進行測試

1.6、主從複製測試

在主伺服器中建立一個testdb資料庫



在主伺服器的testdb中建立一個t_user表



可以發現主伺服器建立t_user表從伺服器也會自動建立t_user表

在主伺服器中新增值



可以發現主伺服器的表中添加了值,從伺服器中的表中也會新增一模一樣的值

在此mysql主從複製的簡單搭建就全部完成了