MySQL 單向同步復制


1 . 介紹

MySQL 支持單向、異步復制,復制過程中一個服務器充當主服務器,而一個或多個其

它服務器充當從服務器。主服務器將更新寫入二進制日志文件,並維護文件的一個索

引 以跟蹤日志循環。這些日志可以記錄發送到從服務器的更新。當一個從服務器連接

主服務器時,它通知主服務器從服務器在日志中讀取的最后一次成功更新的位置。 從

服務器接收從那時起發生的任何更新,然后封鎖並等待主服務器通知新的更新。

請注意當你進行復制時,所有對復制中的表的更新必須在主服務器上進行。否則,你

必須要小心,以避免用戶對主服務器上的表進行的更新與對從服務器上的表所進行的

更新之間的沖突。

單向復制有利於健壯性、速度和系統管理:

· 主服務器/從服務器設置增加了健壯性。主服務器出現問題時,你可以切換到

從服務器作為份。

· 通 過在主服務器和從服務器之間切分處理客戶查詢的負荷,可以得到更好的

客戶響應時間。SELECT查詢可以發送到從服務器以降低主服務器的查詢處理負

荷。但 修改數據的語句仍然應發送到主服務器,以便主服務器和從服務器保持同

步。如果非更新查詢為主,該負載均衡策略很有效,但一般是更新查詢。

· 使用復制的另一個好處是可以使用一個從服務器執行備份,而不會干擾主服務

器。在備份過程中主服務器可以繼續處理更新。

MySQL 提供了數據庫的同步功能,這對我們實現數據庫的冗災、備份、恢復、負載均

衡等都是有極大幫助

2. 環境

RHEL 6.5

master   172.25.49.1

slave   172.25.49.2


配置安裝

mysql的配置安裝 上一篇博客中已經講述過了

在server1上 源碼編譯安裝MySQL

1、將server1上的mysql發送到server2,以下操作在server1上進行。

 scp -r mysql/ root@172.25.23.2:/usr/local/lnmp/

2、 /etc/init.d/mysqld start         #開啟服務

3mysql -pwestos

create database test;

use test

create table westos ( 

   username varchar(25) not null,

   password varchar(35) not null

   );

(3)select * from westos;

(4)insert into westos value('lalalala','654321');

(5)insert into westos value('wangjing','123456');

(6) select * from westos;

(7)show master status;

(8)desc westos;

(9) GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO zty@'172.25.49.%' IDENTIFIED BY 'westos';  ##創建同步帳戶,並給予權限

4、 vim /etc/my.cnf

 57 server-id       = 1 #必須為12321之間的一個正整數值

 58 binlog_do_db=test #二進制需要同步的數據庫名

 59 binlog_ignore_db=mysql #避免同步 mysql 用戶配置,以免不必要的麻煩


mysql> show master status;
+------------------+---------  -+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+---------  -+--------------+------------------+
| mysql-bin.000017  |      107 | test         | mysql            |
+------------------+----------+--------------+------------------+


 ###########################################################################

以下操作在server2 上進行。

1、查看server1mysql用戶的ID,在server2上創建。

groupadd -g 27 mysql

useradd -u 27 -g  mysql -d /usr/local/lnmp/mysql/data/ -M mysql

2、將/usr/local/lnmp/mysql/下目錄用戶組改為mysql

chgrp mysql * -R

chown mysql data/ -R

3、 cd support-files/

cp my-medium.cnf /etc/my.cnf

cp mysql.server /etc/init.d/mysqld

4vim /root/.bash_profile 

  PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin

 #添加環境變量

   source /root/.bash_profile

 

5、 vim /etc/my.cnf

 57 server-id       = 2   ###每台服務器的id不能相同,從服務器 ID ,不要和主 ID 相同,如果設置多個從服務器,每個從服務器必須有一個唯一的server-id,必須與主服務器的以及其  它從服務器的不相同。可以認為server-id值類似於IP地址:這些ID值能唯一識別復制服務器群集中的每個服務器實例。

mysql -pwestos                     #登陸數據庫


mysql> change master to master_host='172.25.49.1',master_user='zty',master_password='westos',master_log_file='mysql-bin.000017',master_log_pos=107;


mysql> slave start

mysql> show slave status\G                                                     *************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.25.49.1
                  Master_User: zty
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000017
          Read_Master_Log_Pos: 107
               Relay_Log_File: server2-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes                  #當出現兩個yes時 說明配置成功

              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 411
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1






















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM