注意:
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個左右。相信合作後不會讓您失望。
鑑於運維的敏感性,信任是很重要的,有需要的朋友們可以聯繫我,謝謝照顧與支持,感恩~~