如何設置Mysql同步(Replication) 分享修改刪除

------------------------------------------------------------------------------------------
MySQL提供了數據庫的同步功能,這對我們實現數據庫冗災、備份、恢復、負載均衡等都是有極大幫助的。
一、準備服務器
   由於MySQL不同版本之間(二進制日誌)binlog格式可能會不一樣,因此最好的搭配組合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高於Slave版本
假設同步Master的主機名爲rep1,Slave主機名爲rep2,2個MySQL的basedir目錄都是/usr/local/mysql,datadir都是/usr/local/mysql/var.
二、設置同步服務器
1、設置同步Master
每個同步服務器都必須設定一個唯一的編號,否則同步不能正常運行。接下來開始修改my.cnf,增加以下幾行:
    server-id = 1
    log-bin
    binlog-ignore-db=mysql
然後再Master上增加一個賬號專門用於同步,如下:
    mysql>grant replication slave on *.* to rep@rep2 identified by 'rep';
如果想要在Slave上有權限執行"Load table from master" 或者"Load data from master"語句的話,必須授予全局的FILE和SELECT權限:
    mysql>GRANT FILE,SELECT,REPLICATION SLAVE on *.* TO rep@rep2 IDENTIFIED BY 'rep';
第三行表示不記錄數據庫mysql的更新日誌,這就避免了Master上的權限設置等被同步到Slave上,如果對這方面沒有限制,就可以不設置這個參數。
 
接下來備份Master上的數據,首先執行:
    mysql>FLUSH TABLES WITH READ LOCK;
不要退出這個終端,否則鎖失效;導出數據,可以直接打包壓縮數據文件,也可以使用mysqldump工具來做,推薦前者,這樣更爲便捷簡便。
    root$cd /usr/local/mysql
    root$ tar zcf var.tar.gz ./var
然後將這些數據拷貝到Slave服務器上,解開,設置好正確的權限及屬主,之後,執行"UNLOCK TABLES"語句釋放鎖
2、設置Slave
修改my.cnf,增加:
    server-id = 2
    master-host = rep1
    master-user = rep
    master-password = rep
    master-port = 3306
    replicate-ignore-db = mysql #略過同步的數據庫名,如果有多個,請設置多次
    replicate-do-db = hrj #想要同步的數據庫名,如果有多個,請設置多次
在Slave上檢驗一下是否能正確連接Master,並具備相應權限
    root$mysql -hrep1 -urep -prep
    mysql>SHOW GRANTS;
    
現在,啓動Slave。登錄Slave,查看一下同步狀態:
    mysql -hlocalhost -uroot
    mysql>SHOW SLAVE STATUS\G
可以看到,Slave_IO_Running和Slave_SQL_Running兩列爲'Yes',表明Slave的I/O和SQL線程都在正常運行。
 
至此,同步設置成功。
三、同步FAQ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章