MySQL5.7.27主從同步配置詳細記錄

#### MySQL 安裝配置部分

1)下載解壓版,解壓到指定目錄,如C:\mysql-5.7.27-winx64

2)設置系統環境變量

鍵名:MYSQL_HOME

值爲:C:\mysql-5.7.27-winx64

3)在Path中添加:%MYSQL_HOME%\bin

4)解壓目錄下創建my.ini文件並配置如下:

[mysqld] 

port = 3306 

basedir=C:/mysql-5.7.27-winx64 

datadir=C:/mysql-5.7.27-winx64/data 

max_connections=200 

character-set-server=utf8 

default-storage-engine=INNODB 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysql] 

default-character-set=utf8

5)MySQL的安裝(先CMD到C:\mysql-5.7.27-winx64\bin)

mysqld -install 

提示:Service successfully installed. 表示安裝成功

6)MySQL初始化(生成data目錄&獲取初始密碼)

mysqld  --initialize

在解壓目錄下生成一個data文件夾, 在這個文件夾下有一個.err結尾的文件,打開可以找到隨機生成的默認密碼。

7)啓動MySQL服務

net start mysql

8)使用隨機密碼登錄並修改密碼

mysql -u root -p   

9)修改登陸密碼

alter user user() identified by '新密碼';

至此,MySQL就可以正常運行並使用了。


#### 開啓遠程連接

1)首先CMD到C:\mysql-5.7.27-winx64\bin

2)輸入mysql  -uroot -p 按回車鍵,輸入密碼後登錄MySQL

3)開啓遠程連接,輸入命令GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;

4)刷新權限:FLUSH PRIVILEGES;

5)重啓MySQL服務


#### 主從複製配置

前提:

1-最好找兩個機器測試,能相互拼通,測試時可以關閉防火牆;兩臺機器最好裝同樣版本的MySQL以避免亂七八糟的未知問題 。

2-執行命令時,請使用命令行登錄到相應的數據庫:mysql -uroot -p 回車後輸入你的密碼。

先說Master配置

1)修改Master的my.ini文件,添加以下配置信息:

[mysqld]
server-id=1
#開啓binlog 日誌  
log_bin= master-bin
log-bin-index=master-bin.index
#日誌的緩存時間
expire_logs_days= 10
#日誌的最大大小
max_binlog_size=200M
#忽略同步的數據庫  除了忽略的,其他的都同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#mysql複製模式,三種:SBR(基於sql語句複製),RBR(基於行的複製),MBR(混合模式複製)
binlog_format=MIXED #混合模式複製,可靠性更高

2)配置文件修改以後,重啓MySQL服務

3)查看主庫二進制日誌文件的狀態

show global variables like '%log_bin%';

如果log_bin 的值爲OFF則配置文件有問題 ,正常爲ON,則表示配置成功;

4)爲Slave創建用戶,即授權給Slave

grant replication slave,replication client on *.* to 'slave'@'%' identified by "123456";

說明:

%:表示除了本地可以訪問,還可以遠程訪問

replication slave:表示只授予slave的權限

slave:從庫使用的用戶名;123456爲密碼

5)看看有沒有我們創建的賬號

select user from mysql.user;

6)查看主庫狀態

show master status; 

正常情況下可以看到一個表格:File:master-bin.000001  Postition: 123456等信息,說明正常


再來看Slave配置

1)同樣的,修改my.ini配置文件,如下:

[mysqld]
.......
relay-log=relay-log
relay-log-index=relay-log.index
server-id=2

2)命令行登錄slave節點的MySQL

3)主從同步設置

CHANGE MASTER TO MASTER_HOST='192.168.0.100',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_LOG_FILE=master-bin.000001',MASTER_LOG_POS=145;

說明:

192.168.0.100:Master IP

slave&123456:主庫設置好的賬號信息供Slave使用的

master-bin.000001與145:對應主庫配置信息,這裏注意,如果主庫有多個這樣的數據,請選最後一個。

4)啓動複製線程

mysql> start slave;

5)執行以下命令查看主從是否設置成功?

mysql> show slave status \G;   

\G帶上,格式化信息,好看一點。

正常情況下我們關注兩個信息:

Slave_IO_Running和Slave_SQL_Running狀態均爲YES;主從複製環境已經OK。

如果一切正常,那麼可以測試了,在主庫上創建一個數據庫,可以看到馬上同步到從庫上了,繼續建表,添加測試數據,發現從庫同步正常。


但,也許我們沒有那麼順利,我遇到的情況:

1)數據庫安裝的時候,沒有使用my.ini結果造成怎麼修改這個配置文件都不生效,後來重裝數據庫,問題 解決;

2)主從設置時,誤把Master的設置拷貝到Slave裏去了,看似都對就是同步不了數據,早上起來突然發現這個問題 ,故重新配置;但要先幹掉從庫上以前的配置,你可以刪了從庫,也可以使用文末的命令;

3)都設置好了,檢查不出任何的問題 了,發現依然不同步,後來在主庫上查看從庫是否連接上來發現,從庫的計算機名爲亂碼,改了之後,再測,一切正常。


####  常用命令(摘錄)

主庫上

1)查看二進制日誌是否開啓

mysql>SHOW GLOBAL VARIABLES LIKE '%log%';

如果正常開啓,則log_bin爲ON

2)查看主節點二進制日誌列表

mysql>SHOW MASTER LOGS;

3)查看主節點的server id

mysql>SHOW GLOBAL VARIABLES LIKE '%server%';

4)查看從庫是否正常連接到主庫

show processlist \G;

從庫上

1)查看中繼日誌是否開啓

mysql>SHOW GLOBAL VARIABLES LIKE "%log%";

2)查看server相關信息

mysql>SHOW GLOBAL VARIABLES LIKE '%server%';

3)開啓Relay日誌

查看是否開啓,show variables like '%relay%';

4)遠程連接主庫嘗試

mysql>mysql -u主庫分配的賬號 -p -h 192.168.0.100

5)使用Master分配的賬號登錄主庫

mysql>show databases; //查看授權過了的數據庫

6)查看從庫是否同步上主庫

show slave status;

當Slave_IO_Running: Yes  Slave_SQL_Running: Yes 都爲yes說明是正常的


#### 其他調試語句(摘錄)

1)查看錯誤

mysql>show warnning;

2)查看主庫狀態

mysql>show master status \G;

3)查看從庫狀態

mysql>show slave status \G;

4)重置主記錄信息

mysql>reset master;

5)重置從記錄信息

mysql>reset slave;

6)停止同步線程

mysql>stop slave;

7)開始同步線程

mysql>start slave;

8)清空從所有連接、信息記錄

mysql>reset slave all;

9)刪除從

mysql>change master to master_host=' ';


最後:公司內外網隔離的,截不了圖,對不起大家了。接下來準備寫MySQL自身的主從同步機制結合Mycat實現讀寫分離,可能包括的內容:Mycat集羣,MySQL一主多從,讀寫分離,以後再搞多主多從,在這裏吐槽一下,技術適合當下的就是最好的,最簡單的就是最穩定的,MySQL一般是單表達到800萬數據就要考慮數據拆分,多如牛毛的一些個小公司到死可能都沒有那麼多業務數據,倒是面試時天天談大數據,高併發,數據庫集羣,簡直CD。

如果有小夥伴感興趣,可以加Q38095589交流。

也請大牛多指點,感謝!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章