MySQL主從複製以及在本地環境搭建

MySQL主從複製原理:


master(主服務器),slave(從服務器)html

  1. MySQL master 將數據變動寫入二進制日誌( binary log, 其中記錄叫作二進制日誌事binary log events,能夠經過 show binlog events 進行查看)
  2. MySQL slave 將 master 的 binary log events 拷貝到它的中繼日誌(relay log)
  3. MySQL slave 重放 relay log 中事件,將數據變動反映它本身的數據

1.MySQL下載安裝

2.本地搭建主從複製

  • 首先須要在本地安裝至少兩個MySQL服務器,爲了不端口衝突,能夠把mysql的服務器的端口設置不一樣,這裏我設置一個爲3306,另外一個服務器的端口號爲3307,端口號在mysql的配置文件my.ini中配置。
  • 主服務器配置mysql

    [mysqld]
    port=3306
    basedir="D:/master/MySQL/"
    datadir="D:/master/MySQL/data/"
    character-set-server=utf8
    server_id=1
    log-bin=mysql-bin#要生成的二進制日記文件名稱
    binlog-do-db=test#同步的數據庫
    binlog-ignore-db=mysql#不參與同步的數據庫 ,例如mysqlsql

  • 從服務器配置數據庫

    [mysqld]
    port=3307
    basedir=D:\slave\mysql2
    datadir=D:\slave\mysql2\data
    server-id=2 
    log-bin=mysql-bin#開啓了二進制文件
    binlog_do_db=follow#主從複製的數據庫
    binlog_ignore_db=mysql#不參與主從複製的數據庫,例如mysql服務器

  • 接下來在主服務器登陸mysql,建立用於主從複製的用戶並受權
    create user 'xiao'@'127.0.0.1' identified by 'password';
    grant replication slave on . to xiao@'127.0.0.1';ide

  • 在從服務器上用建立的用戶登陸主服務器,看能不能成功,成功繼續下面的步驟線程

  • 在主服務器上執行命令:
    show master status;(此命令查看主服務器的bin-log日誌文件名稱和position點)日誌

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)server

  • 在從服務器上執行如下命令:

在從庫設置它的master:htm

mysql> change master to

master_host='127.0.0.1',master_port=3306,master_user='xiao',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=107;

Query OK, 0 rows affected (0.19 sec)

這裏的master_log_file和master_log_pos對應剛纔show master status記下的參數。

  • 在從庫開啓從數據庫複製功能。

mysql>start slave;

Query OK, 0 rows affected (0.00 sec)

  • 在從庫能夠經過show slave status\G來查看一些參數。

當Slave_IO_Running和Slave_SQL_Running線程都爲yes是主從複製配置成功!

  • 此時在主庫建立表或插入數據,在從庫就會很快也能看到了。

-- 主庫

mysql> create table tianyc_02(b int);

Query OK, 0 rows affected (0.16 sec)

mysql> insert into tianyc_02 values(2013);

Query OK, 1 row affected (0.13 sec)

-- 從庫

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tianyc_01 |
| tianyc_02 |
+----------------+
2 rows in set (0.00 sec)

mysql> select * from tianyc_02;
+------+
| b |
+------+
| 2013 |
+------+
1 row in set (0.00 sec)

同理,能夠搭建第2、第三個從節點。

備註:兩個服務的serve_id必須不一樣,不然在開啓複製功能時會提示錯誤

mysql> slave start;

ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

我這裏設置的主節點id爲1,從節點id爲2。也能夠按照ip或端口進行設置,好用來區分。 注意: 主從同步,只是在創建同步後,以後主的修改會同步到從上。 但主上之前有的數據庫內容須要在創建同步前先導出並導入到從上,不然因爲主從原始數據不一致,當主上進行刪除新增的操做,在從上由於沒有對應數據庫,會報錯,致使同步中斷,失去同步效果了。

相關文章
相關標籤/搜索