標籤:
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的使用者,並授權給從伺服器
[[email protected] ~]# 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 )查詢主要資料庫的狀態,並記下File和Position的值,這個在配置從資料庫的時候用的到
二:從伺服器上
(1) 修改設定檔/etc/my.cnf 將service-id=1修改為server-id=2
(2) 並重啟mysql伺服器
[[email protected] ~]# mysqladmin -p123456 shutdown
[[email protected] ~]# mysqld_safe --user=mysql &
(3)登入mysql伺服器
[[email protected] ~]# 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_Running和Slave_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;
MySQL主從複製配置