mysql主從配置

1.主機從機說明

master主機A:192.168.200.132

slave從機B   :192.168.200.130

2.主機上配置
  • 打開配置文件my.cnf修改以下內容:

server-id = 1log-bin = mysql-bin

修改完畢重啓數據庫:service mysqld restart

  • 進入到數據庫,創建一個專門傳輸binlog的用戶:

  • grant replication slave on *.* to'repl'@'192.168.200.130' identified by '123';

用戶名字叫做repl,密碼是123。

接下來執行:

flush tables with read lock;
flush privileges;
show master status;

解釋:


第一句:把表的讀鎖死,一般都是用在數據庫聯機備份,這個時候數據庫的寫操作將被阻塞,讀操作順利進行。解鎖用unlock tables;
第二句:刷新權限;
第三句:一定要用筆記住File和Position列的內容,一會要用到。

3.備份數據庫
  • 把主機A的所有數據庫備份出來,假設A有4個database,分別是mysql,test,db1,z,那麼通過命令mysqldump一個個的全部備份出來,比如:

    mysqldump -uroot -p123 db1  > /test/db1.sql

    mysqldump -uroot -p123 mysql  > /test/mysql.sql

    mysqldump -uroot -p123 test > /test/test.sql

    mysqldump -uroot -p123 z > /test/z.sql

  • 通過rsync把數據庫的備份數據傳輸到從機B:

rsync -av /testA/  192.168.200.130:/testB/

  • 在從機B的mysql創建和主機A的mysql相同的database,既然主機A的database有mysql,test,db1,z,那就去創建好

  • 然後把主機A傳輸過來的數據分別導入對應的database中

    mysql db1 < /testB/db1.sql 

    mysql mysql < /testB/mysql.sql  

    mysql test < /testB/test.sql  

    mysql z < /testB/z.sql   

4.從機上配置
  • 打開配置文件my.cnf修改以下內容

server-id = 2              //這個數不用管值不能和主一樣
log-bin=mysql-bin

可選參數(2選1,或者不寫那就整體的同步):replicatedo_wild_do_table=test.%,test2.% 和 replicatedo_wild_ignore_table=test.%,test2.% 

修改完畢重啓數據庫:service mysqld restart

  • 登陸從的mysql

     slave stop;      
     change master to master_host='192.168.200.132',
     master_port=3307, master_user='repl', master_password='123', 
     master_log_file='mysql-bin.000010', master_log_pos=319; 
     slave start;

解釋:slave stop停掉數據庫 (爲了配置以下參數)            注意,第二個語句最後的兩個值就要看主的實際的File和Position列的內容

從上查看從的狀態: show slave status\G;

有2個yes就表示成功了

5.測試

記得解除主機A的mysql鎖頭:unlock tables;


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