Mysql主從複製

                                                 Mysql主從複製

 

Mysql主從複製步驟很簡單,仔細看,你一定懂

環境:

A: 192.168.1.1 作爲master,沒有數據

B: 192.168.1.2  作爲slave,沒有數據

一:主服務器上:

注意:mysql參數

  binlog-do-db = 數據庫名      (你要備份的數據庫)

  binlog-ignore-db = 數據庫名  (你不需要備份的數據庫)

  如果沒有在/etc/my.cnf添加以上2個參數,那就是說明備份所有數據庫

    

    

 (1) 確保/etc/my.cnf 中有如下參數,一般情況下都是都有的,但是以確保實驗的成功率還是檢查一下比較好。假如沒有如下參數,自己手動添加,並重啓mysql服務器

   [mysqld]   

   log-bin=mysql-bin 啓動二進制文件

    server-id=1  (服務器ID

  ( 2 ) :登錄mysql服務器,添加一個叫做beifen的用戶,並授權給從服務器

[root@localhost ~]# mysql -uroot –p123456 登錄mysql 

這裏需要指明一下啊 這個123456是我的mysql的密碼

mysql> grant replication slave on *.* to 'beifen'@'192.168.1.2' identified by '123'; 創建 beifen用戶,密碼設置爲123  並授權給192.168.1.2使用。

   ( 3 )查詢主數據庫的狀態,並記下FilePosition的值,這個在配置從數據庫的時候用的到

 

 

 

二:從服務器上

(1) 修改配置文件/etc/my.cnf service-id=1修改爲server-id=2

(2) 並重啓mysql服務器

[root@localhost ~]# mysqladmin -p123456 shutdown
[root@localhost ~]# mysqld_safe --user=mysql &

3)登錄mysql服務器

[root@localhost ~]# mysql -uroot –p123456

mysql>change master to master_host=192.168.1.1,master_user=beifen,master_password=123,master_log_file=mysql-bin.000010 ,master_log_pos=257;

( 4 ) 啓動slave同步

mysql > start slave;

5檢查主從同步,如果您看到Slave_IO_RunningSlave_SQL_Running均爲Yes,則主從複製連接正常。

mysql > show slave status\G

如下圖:

 

OK! 主從複製完成,現在可以去驗證了

驗證方法:去主服務器上新建一個數據庫,然後登錄從服務器看看剛纔在主服務器新建的數據庫在不在

 

注意:如果master服務器上做主從之前已經有數據了,我們就必須要把數據庫導出來  然後導入從數據庫 (方法多種)

導數據之前:

進行鎖表操作,不讓數據進行寫入動作,這麼做事爲了防止從數據庫的原始數據和主數據庫的原始數據不一致。

mysql> flush tables with read lock;

記住數據導完後要解鎖:

mysql> unloclk tables; 

然後用導出數據,再把導出的數據導入從數據庫

但是大家有沒有想到一個問題,如果從數據庫有很多臺,並且數據庫很大的情況下,這樣做的嚴重影響效率

  

最好的方法是:先將主服務器上面的數據用mysqldump命令導出來備份,然後刪掉那個數據庫,等搭建好主從之後,在主服務器上面新建原來的那個數據庫,然後用mysql命令導入開始備份的數據、這時再去看看從服務器上面是不是有那哥數據庫的數據。

 

 

如果執行

 遇到這種情況

 

可以用這個語句試一下

Mysql > stop slave;

Mysql > set global sql_slave_skip_counter =1 ;讓mysql跳過一次錯誤,繼續執行

Mysql > start slave;

 

 

 

 

 

 

 

 

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