因為是第一次搭建mysql主從複制是以也是困難重重啊一不小心就會遇到莫名其妙的問題,一連串的元素遇到了三個問題啊。
問題一. /usr/local/mysql/bin/mysqld (mysqld 5.7.34-log) starting as process 2038 …
/usr/local/mysql/bin/mysqld (mysqld 5.7.34-log)
starting as process 2038 ...
mysqld: File '/var/lib/mysql/mysqlbin.index'
not found (Errcode: 2 - No such file or directory)
這個是在剛剛開始在mysql配置檔案中配置出錯了,配置如下,因為是和視訊教程上面的一樣配置,我就直接複制過來了。
#mysql binlog 日志的存儲路徑和檔案名
log-bin=/var/lib/mysql/mysqlbin
然後再啟動mysql服務的時候就啟動不起來,于是我去檢視mysql錯誤日志時發現了報了以上問題。于是我就在該路徑下建立了該檔案,并且把權限也修改了,但是依舊沒有解決問題。于是我就去csdn上找了另外一個主從複制搭建的文章,
MySQL主從複制讀寫分離,看這篇就夠了!
我按照他的步驟其實也就是把
log-bin=/var/lib/mysql/mysqlbin
//修改為
log-bin=mysql-bin
最後成功的啟動了MySQL服務。然後我就按照文章上面的操作一通配置後,然後啟動從機,結果發現
error connecting to master '[email protected]:3306' - retry-time: 60 retries: 1
問題二 .error connecting to master ‘[email protected]:3306’ - retry-time: 60 retries: 1
檢視了錯誤日志後報了以下錯誤,發現這并不是什麼有用資訊,然後就又是接着去百度上一通亂找亂試,結果都不行,突然想起來是不是可能因為防火牆沒有關閉,因為在昨天搭建MyCat的時候也是防火牆沒有關閉導緻一直連不上,然後我去看了看結果一看還真是防火牆,然後把防火牆關閉了,問題就解決啦。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yNjZmYzATMlVzMiV2MyIGZ2EzYkVTYxEjNygDOiRTN58CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
#檢視防火牆狀态
firewall-cmd --state
#關閉防火牆
systemctl stop firewalld.service
防火牆坑了我兩次了。
本以為問題總算全部解決了于是又遇到了第三個問題。
問題三.Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’
原因是:我把
CHANGE MASTER TO
MASTER_HOST='192.168.114.132',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154,
master_port=3306;
寫到了主機上這肯定是不行的。
于是報了以下錯誤,我才發現複制錯了位置。
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense;
please check the manual before using it).
首先遇到這個是因為binlog位置索引處的問題,不要reset slave;
reset slave會将主從同步的檔案以及位置恢複到初始狀态,一開始沒有資料還好,有資料的話,相當于重新開始同步,可能會出現一些問題;
一般做主從同步,都是要求以後的資料實作主從同步,而對于舊的資料完全可以使用資料庫同步工具先将資料庫同步,完了再進行主從同步;
好了遇到上面的問題,正确做法是:
- 打開主伺服器,進入mysql
- 執行flush logs;//這時主伺服器會重新建立一個binlog檔案;
- 在主服務上執行show master status \G;顯示如下:
MySQL主從複制bug記錄 - 來到從伺服器的mysql;
- stop slave;
- change master to master_log_file=‘mysql-bin.000003’,master_log_pos=154;//這裡的file和pos都是上面主伺服器master顯示的。
- start slave;//這時候就應可以了
- show slave status \G;//結果如下:
MySQL主從複制bug記錄