@
1、MySQL一主一從的簡單搭建
1.1、主從複製簡介
在實際生產中,資料的重要性不言而喻。如果我們的資料庫只有一臺伺服器,那麼很容易產生單點故障的問題,如果伺服器宕機或者損壞了,那麼整個資料庫的資料就丟失了,這是重大的安全事故。所有我們必須部署兩臺或兩臺以上的伺服器來儲存我們的資料。也就是說我們將資料複製多份放在不同的伺服器上。當某臺伺服器宕機後其他伺服器還能提供服務。
1.2、MySQL主從複製簡介
主從複製是指伺服器分為主伺服器和從伺服器,主伺服器負責讀和寫,從伺服器只負責讀,主從複製也叫 master/slave,master是主,slave是從,但是並沒有強制,也就是說從也可以寫,主也可以讀,只不過一般我們不這麼做。主從複製可以實現對資料庫備份和讀寫分離。
1.3、主從複製的架構
1.4、前期準備
- 需要兩臺或者兩臺以上的伺服器或者虛擬機器
- 保證每臺伺服器上已經安裝好了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主從複製的簡單搭建就全部完成了