MySQL主從同步設置和同步錯誤處理

注意:

1、兩臺服務器數據庫版本應一致,如果不一致,從服務器的版本要高於主服務器的版本。

2、MySQL進行實時數據同步,本質上是將mysql動作同步到Slave服務器,而不是對實質的數據進行同步。所以同步開始前,兩端的數據要保持一致。

 

Master服務器:192.168.0.1

Slave服務器:192.168.0.2

 

===  Master停止運行時,Mysql同步配置===

 

一、主服務器設置:

 

1、修改/etc/my.cnf 

在[mysqld]區段內加入參數 

server-id=1

log-bin 

sql-bin-update-same

 

2、爲Slave服務器創建連接賬戶,用於同步

mysql>GRANT FILE ON *.* TO [email protected] IDENTIFIED BY '1234'; mysql>grant all privileges on *.* to 'wan'@'%' identified by 'xxx'; mysql>FLUSH PRIVILEGES;

3、重啓mysql服務:service mysqld restart

此時因爲有加入log-bin參數,因此開始有index產生了,在/var/lib/mysql目錄下有.index檔案紀錄數據庫的異動log.

 

 

二、Slave服務器設置:

 

1、修改/etc/my.cnf 

在[mysqld]區段加入 

 

master-host=192.168.0.1  master-user=backup  master-password=1234  master-port=3306  server-id=2  master-connect-retry=60 預設重試間隔60秒  replicate-do-db=vbb 告訴slave只做vbb數據庫的更新 replicate-ignore-db=mysql #不同步的數據庫 replicate-ignore-table=vbb.users #不同步vbb數據庫的users表

2、重啓Slave服務器mysql服務

 

三、Slave服務器從主服務器讀取數據,並開啓同步

 

mysql>FLUSH TABLES WITH READ LOCK; #首先執行這個,對主服務器加鎖

mysql>LOAD DATA FROM MASTER  #語句的話,必須授予全局的 FILE 和 SELECT 權限,僅針對MyISAM引擎,對InnoDB表無用。

 

如果數據是InnoDB的,需要在服務器上將表結構和數據分開導出,然後拷貝至Slave服務器。

 

導出整個數據庫結構和數據:mysqldump -u用戶名 -p密碼 -h主機 database > filename.sql

導出某個表的數據和結構:mysqldump -u用戶名 -p密碼 -h主機 database table > filename.sql

只導出數據庫中表的數據:mysqldump -u用戶名 -p密碼 -h主機 -T database table > filename.sql

只導出數據庫中表的結構:mysqldump -u用戶名 -p密碼 -h主機 -d database table > filename.sql

 

4、確保兩端數據一致後,開啓同步

mysql>slave start;

 

5、查看Slave服務器同步信息

 

mysql>show slave status\G;

 

可以看到,Slave_IO_Running 和 Slave_SQL_Running 兩列的值都爲 "Yes",這表明 Slave 的 I/O 和 SQL 線程都在正常運行。

 

6、對Master服務器釋放鎖

 

mysql>UNLOCK TABLES;

 

 

=== Master還在運行中,如何在不停止它的情況下配置Slave ===

 

注:主從服務器的配置同上。

 

1、首先在Master服務器查看同步日誌信息

 

mysql>show master status;

 

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000054 | 680 |                     | mysql |

+------------------+----------+--------------+------------------+

 

可以看到日誌文件是:mysql-bin.000054,同步點是680

 

 

2、在Slave服務器配置同步

mysql>slave stop; # mysql默認同步開始 mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='backup',MASTER_PASSWORD='1234',MASTER_LOG_FILE='mysql-bin.000054',MASTER_PORT='3306',MASTER_LOG_POS=690;  #配置同步點 mysql>slave start; #開啓同步

 

3、查看同步信息

mysql>show slave status\G;

 

可以看到,Slave_IO_Running 和 Slave_SQL_Running 兩列的值都爲 "Yes",這表明 Slave 的 I/O 和 SQL 線程都在正常運行。

 

4、配置完成


博主仍從事運維行業,擁有10年+ 一線運維經驗,技術上靠得住(還行吧),生活不容易,純粹補貼家用,時間充裕,與有需要的朋友 互相幫助。

業務範圍:網站、服務器、系統(linux|windows)、架構、部署、調優、排錯、安全方案、低成本解決中小量攻雞、業務上雲(所有公有云)

合作形式:代維、兼職、臨時技術支持

合作理念:誠信第一、信任是基石、不解決問題不收錢、完工才收

職業操守:講誠信和絕不影響用戶數據安全,您信任後再合作

客戶監督:本博文評論一直開放,合作的朋友們可自由發表合作後對我的評價(壞朋友請放過我吧0_0)

聯繫方式:QQ:278566109

自評:我的技術不是很好也不是很差,自信能解決絕大多數問題。截止目前合作過的項目20個左右。相信合作後不會讓您失望。

鑑於運維的敏感性,信任是很重要的,有需要的朋友們可以聯繫我,謝謝照顧與支持,感恩~~


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