實驗環(huán)境
??? ubuntu-16.04.1
??? mysql 5.7.16
??? xshell_5.0.0.37
??? VirtualBox 5.0.24.8355
??? Navicat 9
實驗步驟
??? 1.首先創(chuàng)建一個mysql的用戶,用戶、密碼都為ubuntu,并且允許遠(yuǎn)程訪問隙咸。
GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'%'IDENTIFIED BY 'ubuntu' WITH GRANT OPTION;
FLUSH PRIVILEGES;
??? 2.在mysql的配置文件中加入配置,目錄為/etc/mysql/my.cnf
#master節(jié)點
[mysqld]
#mysql的數(shù)據(jù)目錄
#datadir=/mydata/data
#主服務(wù)器二進(jìn)制日志文件前綴名
log-bin=master-bin
# 索引文件
log-bin-index=master-bin.index
# 開啟innodb的一表一個文件的設(shè)置
innodb_file_per_table=1
# 必須是唯一的
server-id=112
#slave節(jié)點
[mysqld]
#mysql的數(shù)據(jù)目錄
#datadir=/mydata/data
#禁用二進(jìn)制日志,從服務(wù)器不需要二進(jìn)制日志文件
#log-bin=mysql-bin
#設(shè)置中繼日志
relay-log=relay-log
#中繼日志索引
relay-log-index=relay-log.index
# 開啟innodb的一表一個文件的設(shè)置
innodb_file_per_table=1
#id不要和主服務(wù)器的一樣
server-id=113
??? 注意:server-id要為唯一
??? 3.進(jìn)入用戶名為ubuntu的master節(jié)點mysql,輸入下面命令查看抖剿。
show master status\G
????? 注意:我們這里需要記下File,Position的指之后再slave節(jié)點中需要進(jìn)行配置角虫。
? ? 4.進(jìn)入用戶名為ubuntu的slave節(jié)點mysql,輸入下面命令查看。
show slave status;
????? 查看slave節(jié)點的狀態(tài)
change master to master_host='192.168.3.112',master_user='ubuntu',master_password='ubuntu',master_log_file='master-bin.000001',master_log_pos=154;
? ? ? 添加復(fù)制數(shù)據(jù)的主服務(wù)器ip、用戶和密碼茬故。以及二進(jìn)制日志名和復(fù)制位置
start slave;#運行
stop slave;#停止
??? 5.一般的來說上述操作就能完成主從復(fù)制,但是,我這里還是沒有成功,Slave_IO_Running:NO
并且下方有報錯:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work
????? 這里它說UUID重復(fù),網(wǎng)上一般說server-id要求唯一,沒有注意server-uuid,因為他們大多都是自己在每一臺機(jī)器上面獨立安裝mysql的,我偷懶在虛擬機(jī)中克隆了一下,并且是在克隆之前安裝完成了的mysql,所有生成的uuid會一樣蚁鳖。
??? 6.那么我們就需要將server-uuid搞成不一樣的,但是我一開始并沒有設(shè)置datadir,原來的配置文件也找不到這個選項磺芭。
????? 可以進(jìn)入mysql中查找datadir,類似server-id,server-uuid的值也都能找到
show variables like 'server_id';
show variables like 'server-uuid';
show variables like 'datadir';
??? 7.找到datadir的位置為/var/lib/mysql/,查看auto.cnf文件,他們的server-uuid的配置文件果然一樣
?
??? 8.將其中的一臺機(jī)器的auto.cnf文件備份一份,以防萬一。
mv auto.cnf auto.cnf.bk
????? 之后重啟mysql
sudo service mysql restart
????? 那么隨著mysql的重啟原來的auto.cnf沒有了,mysql就會將它重新生成一個新的auto.cnf醉箕。
??? 9.進(jìn)入slave查看slave status
??? 10.測試一下是不是能實現(xiàn)主從復(fù)制
create database test;
????? 這樣就實現(xiàn)了主從復(fù)制了钾腺。