@
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主從復制的簡單搭建就全部完成了