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)
而沒有設置同步的數據庫,則沒有同步數據。