下面演示的主從案例皆以mysql5.7.30版本爲主,親測有效
1)首先準備兩臺服務器:
主服務器:192.168.124.38
從服務器:192.168.124.39
2)在主服務器上創建我們演示的數據庫
mysql -uroot -p -e"create database mycat_db"
3)將提前準備好的數據庫文件導入到我們的數據庫中
mysql -uroot -p mycat_db < mycat_db.sql
4)開啓我們主從的配置,找到mysql的配置文件
vim /etc/my.cnf
開啓主從配置,(這裏主庫和從庫都需要配置一下,主庫:server-id=1;從庫:server-id=2)
log-bin=mysql-bin server-id=1
5)備份我們的數據庫
mysqldump --master-data=2 --single-transaction --routines --triggers --events -uroot -p mycat_db > bak_mycat_db.sql
6)將我們的備份sql遠程傳到我們的從數據庫節點的root目錄下
scp bak_mycat_db.sql [email protected]:/root
7)從服務器上創建我們的數據庫
mysql -uroot -p -e"create database order_db"
8)導入我們之前主庫備份下來的數據
mysql -uroot -p order_db < bak_mycat_db.sql
9)回到主庫,我們創建一個用來主從同步複製的賬號
create user 'im_repl'@'192.168.124.%' identified by '123456';
10)對我們創建的賬號進行授權
grant replication slave on *.* to 'im_repl'@'192.168.124.%';
11)在從庫上創建我們主從同步的鏈路
change master to MASTER_HOST="192.168.124.38",
MASTER_USER ="im_repl",
MASTER_PASSWORD ="123456",
MASTER_LOG_FILE ="mysql-bin.000001",
MASTER_LOG_POS =625;
我們可以使用命令在主庫查看上面配置的MASTER_LOG_FILE ="mysql-bin.000001",MASTER_LOG_POS =625;的位置
show master status
12)查看我們創建的鏈路
show slave status \G
13)因爲我們主從庫的名字現在是不一樣的,所以需要添加一個鏈路的過濾
change replication filter replicate_rewrite_db=((mycat_db,order_db));
這樣我們就可以將主庫mycat_db的數據同步到從庫order_db上了
再次查看我們的鏈路狀態
show slave status \G
14)啓動我們的主從複製的從庫鏈路
start slave;
再次查看我們的從節點
show slave status \G
【Slave_IO_Running】沒有啓動成功
其實下面也提示了錯誤的信息
意思是我們兩臺主從服務器的UUIDs是相同的,出現這種情況也是因爲本地在安裝mysql的時候,安裝好一臺系統之後,直接將整個操作系統又克隆了一份,避免了第二次的安裝,所以纔會重複,這才導致
15)解決
既然相同那麼我們找到從服務器的做一下修改就可以了
cd /var/lib/mysql
vim auto.cnf
隨意更改一下這個id
重啓一下mysql
service mysqld restart
再次查看我們主節點的 日誌位置:
show master status \G
修改我們從節點:
change master to MASTER_LOG_FILE ="mysql-bin.000004",MASTER_LOG_POS =468;
因爲我們的兩個庫名不同,需要再次創建 一下鏈路過濾
change replication filter replicate_rewrite_db=((mycat_db,order_db));
然後啓動我們的slave節點
start slave;
啓動成功
16)校驗
分別用客戶端來連接兩個數據庫
修改主庫表中的任意一條數據,從庫直接刷新一下便可以看到數據已經同步過來了
至此我們的主從數據庫的配置成功