MySql 主從複製

1、環境準備html

  系統:CentOS 6.5node

  防火牆已關閉:service iptables stopmysql

  MySql:已安裝配置MySql 具體方法:MySQL手動安裝方法:點擊查看sql

  主從服務器:     數據庫

    192.168.244.11 node1 主
    192.168.244.12 node2 從vim

2、配置主 從服務器的MySql配置文件bash

  一、主節點   服務器

$ vim /etc/my.cnf
[mysqld]
#設置不一樣的id 主節點和從節點的不能同樣
server-id=11
#啓用二進制日誌(主節點必須,從節點非必須)
log-bin=master-bin
sync_binlog=1
#注意:下面這個參數須要修改成服務器內存的70%左右
innodb_buffer_pool_size= 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
#設置大小寫不敏感
lower_case_table_names=1
log_bin_trust_function_creators=1
#不須要同步的庫
replicate-ignore-db=mysql,information_schema,db3
#須要記錄二進制日誌的數據庫
binlog-do-db=db1,db2
#不須要記錄日誌的數據庫
binlog-ignore-db=mysql
#須要同步的數據庫
replicate-do-db=db1
#默認值3600s
slave-net-timeout=60

  

  二、從節點spa

$ vim /etc/my.cnf
[mysqld]
#設置不一樣的id 主節點和從節點的不能同樣
server-id=12
#啓用二進制日誌(主節點必須,從節點非必須)
log-bin=master-bin
sync_binlog=1
#注意:下面這個參數須要修改成服務器內存的70%左右
innodb_buffer_pool_size= 512M
innodb_flush_log_at_trx_commit=1
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
#設置大小寫不敏感
lower_case_table_names=1
log_bin_trust_function_creators=1
#不須要同步的庫
replicate-ignore-db=mysql,information_schema,db3
#須要記錄二進制日誌的數據庫
binlog-do-db=db1,db2
#不須要記錄日誌的數據庫
binlog-ignore-db=mysql
#須要同步的數據庫
replicate-do-db=db1
#默認值3600s
slave-net-timeout=60

  配置完成之後重啓兩臺節點的MySql 日誌

  binlog-do-db=mysql1 #須要備份的數據庫名,若是備份多個數據庫,重複設置這個選項 便可
  binlog-ignore-db=mysql2 #不須要備份的數據庫名,若是備份多個數據庫,重複設置這 個選項便可
  log-slave-updates=1 #這個參數必定要加上,不然不會給更新的記錄些到二進制文件 裏
  slave-skip-errors=1 #是跳過錯誤,繼續執行復制操做(可選)

 

3、指定同步位置

  一、首先分別在主節點和從節點上鎖定表

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status ;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |      106 | db1          | mysql            |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

  記錄在上面查詢狀態中的File和Position

  二、而後在主節點和從節點上指定同步位置 

mysql> change master to master_host='192.168.244.11',master_user='root',master_password='111111',master_log_file='master-bin.000
001',master_log_pos=106;Query OK, 0 rows affected (0.04 sec)

  三、解鎖主從節點  

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

  四、啓動從節點並查看從節點的狀態 

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.244.11
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 106
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 252
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: db1
          Replicate_Ignore_DB: mysql,information_schema,db3
# 若是  Slave_IO_Running 和 Slave_SQL_Running狀態都是Yes那說明配置成功了

   注:要同步的數據庫必須在從節點上存在!

4、牛刀小試

  在主節點上插入一條數據之後,再到從節點上查看就會發現數據已經同步到了節點從節點上。

-- 主節點
mysql> insert into tb_test values(1,'tom');
Query OK, 1 row affected (0.01 sec)

mysql> select * from tb_test;
+------+------+
| id   | name |
+------+------+
|    1 | tom  |
+------+------+
1 row in set (0.00 sec)

-- 從節點
mysql> select * from tb_test;
+------+------+
| id   | name |
+------+------+
|    1 | tom  |
+------+------+
1 row in set (0.00 sec)

  而沒有設置同步的數據庫,則沒有同步數據。

相關文章
相關標籤/搜索