MySQL主從復制配置

jopen 10年前發布 | 13K 次閱讀 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 )查詢主數據庫的狀態,并記下File和Position的值,這個在配置從數據庫的時候用的到

MySQL主從復制配置

二:從服務器上

(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_Running和Slave_SQL_Running均為Yes,則主從復制連接正常。

mysql > show slave status\G

如下圖:

MySQL主從復制配置

OK! 主從復制完成,現在可以去驗證了

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

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

導數據之前:

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

mysql> flush tables with read lock;

記住數據導完后要解鎖:

mysql> unloclk tables;

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

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

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

如果執行MySQL主從復制配置遇到這種情況

可以用這個語句試一下

Mysql > stop slave;

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

Mysql > start slave;

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!