標籤:mysql 主從
搭建環境:
master 192.168.127.131
slave 192.168.127.128
主從配置的前提:兩個資料庫的資料需要一模一樣所以我們:
在主上面建立一個資料庫 在這裡我們用mysql備份一下
mysqldump db1 >123.sql (備份)
在主上面建立一個資料庫db1需要登入資料庫才可以執行這個: (create database db1;)
mysql db1 <123.sql (恢複到db1庫)
同樣的在從上面也執行此操作,保持兩個資料庫一模一樣
主:
更改設定檔/etc/my.cnf
[mysqld]server-id=1log-bin=mysql-bin (可以自訂名字)binlog-do-db=db1(指定要同步的資料庫名字)
登入資料庫然後:
grant replication slave on *.* to ‘repl‘@‘192.168.75.128‘ identified by ‘123123‘; (從的主機ip,並且建立一個同步的使用者repl)
flush privileges; 重新整理許可權
flush tables with read lock; (鎖住read)讓資料不變)
show master status;(查看之前記得重啟mysql服務)
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/80/58/wKioL1c-dxnzazW6AAAeQNuDSp0781.png" title="主.png" alt="wKioL1c-dxnzazW6AAAeQNuDSp0781.png" />
從:設定檔更改:
server-id=2不要跟主一樣)
重啟mysqld服務
登陸從的mysql
slave stop; 停止從的服務
登入從的mysql寫上如下命令:
change master to master_host=‘192.168.75.131‘, master_port=3306, master_user=‘repl‘, master_password=‘123123‘, master_log_file=‘mysql-bin.000018‘, master_log_pos=106; (粗體的這兩個需要跟上面的主一致見圖,每次重啟一次Mysql服務,mysql-bin.000018這項就會增加1,ip是主的ip地址)
slave startshow slave status\G; 當出現下面這兩個,則表示主從同步正確
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
然後登陸到主要資料庫上面 解鎖
mysql -e "unlock tables" (不用登陸mysql執行解鎖) unlock tables; (需要登陸mysql)
最後可以在主上面做一些操作,來測試了
測試: 主上清空db1庫的db表 :use db1;
主上刪除表db: drop table db;
主上看db表不存在了 show tables;
然後再去從上查看:show tables;
注意:不用在從上面做任何操作,否則主從會停止
MySQL主從機制比較脆弱,謹慎操作。如果重啟master,務必要先把slave停掉,也就是說需要在slave上去執行 slave stop 命令,然後再去重啟master的mysql服務,否則很有可能就會中斷了。當然重啟完後,還需要把slave給開啟 slave start.
本文出自 “漸行漸遠” 部落格,請務必保留此出處http://825536458.blog.51cto.com/4417836/1775299
mysql主從配置