1. 程式人生 > 實用技巧 >mysql主從複製配置,mysql主從複製教程

mysql主從複製配置,mysql主從複製教程

mysql主從複製配置,mysql主從複製教程

================================

©Copyright 蕃薯耀 2020-10-27

https://www.cnblogs.com/fanshuyao/

一、修改配置檔案

Linux修改/etc/my.cnf檔案,Windows修改my.ini檔案,下面以Linux為例

主庫配置:

# =====主從複製 主庫 開始=====
# 設定需要同步的資料庫
binlog-do-db=rw_slave
#遮蔽系統庫同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog
-ignore-db=performance_schema binlog-ignore-db=test #=====主從複製 主庫 結束=====

從庫配置:

# =====主從複製 從庫 開始=====
relay-log=mysql-relay
#設定需要同步的資料庫
replicate_do_db=rw_slave
#遮蔽系統庫同步
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=test
#replicate_wild_ignore_table
=mysql.% #replicate_wild_ignore_table=information_schema.% #replicate_wild_ignore_table=performance_schema.% #replicate_wild_ignore_table=test.% # =====主從複製 從庫 結束=====

從庫需要注意,server-id預設是1,從庫需要修改成2或者其它的,不能設定成一樣。

二、主從複製配置

1、主庫設定

設定同步的賬號和密碼:都設定成rwuser,然後重新整理許可權

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON 
*.* TO 'rwuser'@'%' IDENTIFIED BY 'rwuser';
-- 重新整理許可權
FLUSH PRIVILEGES;

確認位點,記錄下檔名以及位點,在從庫設定時需要用到

-- mysql-bin.000004

-- 533

SHOW MASTER STATUS;

2、從庫設定

先停止同步:

STOP SLAVE;

重置從庫(一般可以省略,也可以重置)

解決: Slave failed to initialize relay log info structure from the repository

RESET SLAVE;

配置同步的主庫地址和賬號密碼,以及讀取的檔案和位置(就是上面SHOW MASTER STATUS;的資料)

-- 修改同步的資訊

-- 其中 MASTER_LOG_FILEMASTER_LOG_POSSHOW MASTER STATUS;中的filePosition

CHANGE MASTER TO MASTER_HOST='192.168.132.11',MASTER_USER='rwuser',MASTER_PASSWORD='rwuser',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=533;

啟動從庫同步

START SLAVE;

檢視從庫的狀態:

-- slave_io_running,slave_sql_running都為Yes時,表示同步設定成功,如果不為Yes,請檢查error.log排查異常。

SHOW SLAVE STATUS;

如果出現下面的錯誤,就是主、從庫的server-id設定成相同的,修改從庫的server-id,然後重啟mysql(service mysql restart)。

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).

可以通過mysql查詢server-id

SHOW VARIABLES LIKE 'server_id';

或者通過命令直接修改:

此處的數值和my.cnf裡設定的一樣就行

 SET GLOBAL server_id=12; 

需要注意的是:

Linux一般有埠限制,可以開放相應的埠,如3306

================================

©Copyright 蕃薯耀 2020-10-27

https://www.cnblogs.com/fanshuyao/