Linux(Ubuntu)環境MYSQL->master/slave主從同步設定以及注意事項

來源:互聯網
上載者:User

master(192.168.1.2)環境: Linux ubuntu 2.6.28-11-server + mysql 5.1.44, x86_64
slave(192.168.1.3)環境:Linux ubuntu 2.6.27-7-server + mysql 5.1.44, for pc-linux-gnu (i686)

兩台機器mysql的根目錄均為:/usr/local/mysql 資料目錄為:/usr/local/mysql/var

由於MySQL不同版本之間的(二進位日誌)binlog格式可能會不一樣,因此最好的搭配組合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高於Slave版本。

===========================主庫(192.168.1.2)操作==============================
1、 修改my.cnf

  1. roger@ubuntu:~#vim /etc/my.cnf
  2. [mysqld]
  3. server-id =
    1
  4. og-bin=mysql-bin
  5. binlog_format=mixed (保持主從庫的日誌格式一致,如果不一致可能會不成功)

註:
a、下面兩個選項可以制定產生binlog和忽略的庫,如果要同步所有資料庫則下面兩行不要不用寫
b、binlog-ignore-db = mysql 不需要同步的資料庫
c、binlog-do-db = rogerdb 需要同步的庫
d、binlog-ignore-db與binlog-do-db正好相反,如果你有100個庫,只想同步其中幾個,那麼你應該使用binlog-do-db,如果不想同步其中的幾個,就使用binlog-ignore-db
e、在實際測試中發現,如果通過上面兩個命令指定了庫,則master的Position 一直不會變化,google了一下有人說執行sql前要先use rogerdb才行-_-!

2、重啟mysql服務

  1. roger@ubuntu:~# /usr/local/mysql/share/mysql/mysql.server restart

3、建立同步用的資料庫賬戶

  1. mysql>GRANT REPLICATION
    SLAVE ON *.*
    TO slave@192.168.1.3
    IDENTIFIED
    BY '1q2w3e';

如果想要在Slave上有許可權執行 “LOAD TABLE FROM MASTER” 或 “LOAD DATA FROM MASTER” 語句的話,必須授予全域的 FILE 和 SELECT 許可權:

  1. mysql>GRANT RELOAD,SUPER,FILE,SELECT,REPLICATION
    SLAVE ON *.*
    TO backup@192.168.60.132
    IDENTIFIED
    BY '1q2w3e';

4、鎖住主庫表,停止資料更新

  1. mysql>
    flush tables
    with read
    lock;  不要退出這個終端,否則這個鎖就不生效了;

5、顯示主庫資訊並記錄

  1. mysql>
    show master
    status;   記錄前兩框的資料

+—————————–+————-+———————–+—————————+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————————–+————-+———————–+—————————+
| mysql-bin.000016 | 1676483 |                  |                         |
+—————————–+————-+———————–+—————————+

6、備份需要同步庫檔案並複製到從程式庫伺服器上,如果要同步全部庫,則打包/usr/local/msyql/var目錄,如果只同步一個資料rogerdb,則只複製rogerdb

  1. roger@ubuntu:~#cd /use/local/mysql/var
  2. roger@ubuntu:~#tar -zcvf mysql-master-rogerdb.tar.gz rogerdb //將rogerdb資料庫打包
  3. 將檔案mysql-master-rogerdb.tar.gz
    傳到slave機192.168.1.3:/usr/local/mysql/var/

===========================從庫(192.168.1.3)操作==============================

1、登陸從庫,解壓資料

  1. roger@ubuntu:~# cd /usr/local/mysql/var
  2. roger@ubuntu:~# tar -zxvf mysql-master-rogerdb.tar.gz
  3. roger@ubuntu:~# chmod -R mysql:mysql rogerdb

2、修改my.cnf

  1. roger@ubuntu:~#vim /etc/my.cnf
  2. # 日誌的名稱
  3. log-bin=mysql-bin
  4. # 日誌格式
  5. binlog_format=mixed
  6. # 從伺服器ID
  7. server-id=2
  8. # 主伺服器的IP地址或者網域名稱
  9. master-host=192.168.1.2
  10. # 主要資料庫的連接埠號碼
  11. master-port=3306
  12. # 同步資料庫的使用者
  13. master-user=slave
  14. # 同步資料庫的密碼
  15. master-password=1q2w3e
  16. # 如果從伺服器發現主伺服器斷掉,重新串連的時間差
  17. master-connect-retry=60
  18. # 需要備份的庫
  19. # replicate-do-db=rogerdb
  20. # 忽略的資料庫
  21. replicate-ignore-db=mysql
  22. replicate-ignore-db=test

3、重啟mysql服務

  1. roger@ubuntu:~# /usr/local/mysql/share/mysql/mysql.server restart

4、手動同步從庫

  1. mysql>slave 
    stop;
  2. mysql>CHANGE MASTER
    TO
  3. MASTER_HOST='192.168.1.2',
  4. MASTER_USER='slave',
  5. MASTER_PASSWORD='1q2w3e',
  6. MASTER_PORT=3306,
  7. MASTER_LOG_FILE='mysql-bin.000016',(剛才在主庫記錄的資料)
  8. MASTER_LOG_POS=1676483,(剛才在主庫記錄的資料)
  9. MASTER_CONNECT_RETRY=60;
  10. mysql>slave start;

如果此處CHANGE出錯,可以執行 reset slave,來重新設定。

5、檢查從庫是否正常同步

  1. mysql>show slave
    status \G;

當Slave_IO_Running 和 Slave_SQL_Running 兩列的值都為 “Yes”,表明 Slave 的 I/O 和 SQL 線程都在正常運行,如果出現錯誤,可以從Last_Error這個參數中看出哪裡出錯,然後進行排查

6、查看主庫複製進度

  1. mysql>show processlist \G;

7、 解鎖主庫表

  1. mysql>unlock tables;

8、 分別用如下命令查看master和slave狀態

  1. master:
  2. mysql> show master
    status;
  3.  
  4. slave:
  5. mysql> show slave
    status \G

轉貼:http://www.eetag.com/?p=866

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.