mysql主從複製

GRANT REPLICATION SLAVE ON *.* TO 'root'@'10.10.243.179' IDENTIFIED BY '123';php

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY '123';html

MySQL主從複製配置

Mysql的主從複製至少是須要兩個Mysql的服務,固然Mysql的服務是能夠分佈在不一樣的服務器上,也能夠在一臺服務器上啓動多個服務。mysql

(1)首先確保主從服務器上的Mysql版本相同ios

(2)在主服務器上,設置一個從數據庫的帳戶,使用REPLICATION SLAVE賦予權限,如:sql

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BYshell

'123456';數據庫

Query OK, 0 rows affected (0.13 sec)安全

 

(3)修改主數據庫的配置文件my.cnf,開啓BINLOG,並設置server-id的值,修改以後必須重啓Mysql服務服務器

 

[mysqld]網絡

log-bin = /home/mysql/log/mysql-bin.log

server-id=1

 

(4)以後能夠獲得主服務器當前二進制日誌名和偏移量,這個操做的目的是爲了在從數據庫啓動後,從這個點開始進行數據的恢復

 

mysql> show master status\G;

*************************** 1. row ***************************

File: mysql-bin.000003

Position: 243

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

 

(5)好了,如今能夠中止主數據的的更新操做,並生成主數據庫的備份,咱們能夠經過mysqldump處處數據到從數據庫,固然了,你也能夠直接用cp命令將數據文件複製到從數據庫去

注意在導出數據以前先對主數據庫進行READ LOCK,以保證數據的一致性

 

mysql> flush tables with read lock;

Query OK, 0 rows affected (0.19 sec)

 

以後是mysqldump

 

mysqldump -h127.0.0.1 -p3306 -uroot -p test > /home/chenyz/test.sql

 

最好在主數據庫備份完畢,恢復寫操做

 

mysql> unlock tables;

Query OK, 0 rows affected (0.28 sec)

 

(6)將剛纔主數據備份的test.sql複製到從數據庫,進行導入

(7)接着修改從數據庫的my.cnf,增長server-id參數,指定複製使用的用戶,主數據庫服務器的ip,端口以及開始執行復制日誌的文件和位置

 

[mysqld]

server-id=2

log_bin = /var/log/mysql/mysql-bin.log

master-host =192.168.1.100

master-user=test

master-pass=123456

master-port =3306

master-connect-retry=60

replicate-do-db =test 

 

(8)在從服務器上,啓動slave進程

 

mysql> start slave;

 

(9)在從服務器進行show salve status驗證

 

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: localhost

Master_User: root

Master_Port: 3306

Connect_Retry: 3

Master_Log_File: mysql-bin.003

Read_Master_Log_Pos: 79

Relay_Log_File: gbichot-relay-bin.003

Relay_Log_Pos: 548

Relay_Master_Log_File: mysql-bin .003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

(10)好了,如今能夠在咱們的主服務器作一些更新的操做,而後在從服務器查看是否已經更新

mysql主從複製(超簡單) - 系統網絡運維 - 51CTO技術博客

mysql主從複製(超簡單)

2012-02-27 15:31:02

 

原創做品,容許轉載,轉載時請務必以超連接形式標明文章  原始出處 、做者信息和本聲明。不然將追究法律責任。 http://369369.blog.51cto.com/319630/790921

 

mysql主從複製

(超簡單)

怎麼安裝mysql數據庫,這裏不說了,只說它的主從複製,步驟以下:

一、主從服務器分別做如下操做

  1.一、版本一致

  1.二、初始化表,並在後臺啓動mysql

  1.三、修改root的密碼



二、修改主服務器master:

   #vi /etc/my.cnf

       [mysqld]

       log-bin=mysql-bin   //[必須]啓用二進制日誌

       server-id=222       //[必須]服務器惟一ID,默認是1,通常取IP最後一段



三、修改從服務器slave:

   #vi /etc/my.cnf

       [mysqld]

       log-bin=mysql-bin   //[必須]啓用二進制日誌

       server-id=226       //[必須]服務器惟一ID,默認是1,通常取IP最後一段



四、重啓兩臺服務器的mysql

   /etc/init.d/mysql restart



五、在主服務器上創建賬戶並受權slave:

   #/usr/local/mysql/bin/mysql -uroot -pmttang   

   mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //通常不用root賬號,「%」表示全部客戶端均可能連,只要賬號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,增強安全。



六、登陸主服務器的mysql,查詢master的狀態

   mysql>show master status;

   +------------------+----------+--------------+------------------+

   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

   +------------------+----------+--------------+------------------+

   | mysql-bin.000004 |      308 |              |                  |

   +------------------+----------+--------------+------------------+

   1 row in set (0.00 sec)

   注:執行完此步驟後不要再操做主服務器MYSQL,防止主服務器狀態值變化



七、配置從服務器Slave:

   mysql>change master to aster_host='192.168.145.222',master_user='tb',master_password='q123456',

         master_log_file='mysql-bin.,000004',master_log_pos=308;   //注意不要斷開,「308」無單引號。



   Mysql>start slave;    //啓動從服務器複製功能



八、檢查從服務器複製功能狀態:



   mysql> show slave status\G



   *************************** 1. row ***************************



                Slave_IO_State: Waiting for master to send event



                   Master_Host: 192.168.2.222  //主服務器地址



                   Master_User: myrync         //受權賬戶名,儘可能避免使用root



                   Master_Port: 3306           //數據庫端口,部分版本沒有此行



                 Connect_Retry: 60



               Master_Log_File: mysql-bin.000004



           Read_Master_Log_Pos: 600        //#同步讀取二進制日誌的位置,大於等於>=Exec_Master_Log_Pos



                Relay_Log_File: ddte-relay-bin.000003



                 Relay_Log_Pos: 251



         Relay_Master_Log_File: mysql-bin.000004



              Slave_IO_Running: Yes       //此狀態必須YES



             Slave_SQL_Running: Yes       //此狀態必須YES

                    ......



注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,不然都是錯誤的狀態(如:其中一個NO均屬錯誤)。



以上操做過程,主從服務器配置完成。

  

九、主從服務器測試:



主服務器Mysql,創建數據庫,並在這個庫中建表插入一條數據:



  mysql> create database hi_db;

  Query OK, 1 row affected (0.00 sec)



  mysql> use hi_db;

  Database changed



  mysql>  create table hi_tb(id int(3),name char(10));

  Query OK, 0 rows affected (0.00 sec)

 

  mysql> insert into hi_tb values(001,'bobu');

  Query OK, 1 row affected (0.00 sec)



  mysql> show databases;

   +--------------------+

   | Database           |

   +--------------------+

   | information_schema |

   | hi_db              |

   | mysql              |

   | test               |

   +--------------------+

   4 rows in set (0.00 sec)



從服務器Mysql查詢:



   mysql> show databases;



   +--------------------+

   | Database           |

   +--------------------+

   | information_schema |

   | hi_db              |          //I'M here,你們看到了吧

   | mysql              |

   | test               |

   +--------------------+

   4 rows in set (0.00 sec)



   mysql> use hi_db

   Database changed

   mysql> select * from hi_tb;    //能夠看到在主服務器上新增的具體數據

   +------+------+

   | id   | name |

   +------+------+

   |    1 | bobu |

   +------+------+

   1 row in set (0.00 sec)

 

十、完成:

    編寫一shell腳本,用nagios監控slave的兩個「yes」,如發現只有一個或零個「yes」,就代表主從有問題了,發短信警報吧。

本文出自 「系統網絡運維」 博客,請務必保留此出處http://369369.blog.51cto.com/319630/790921

相關文章
相關標籤/搜索