mysql雙機熱備

參考資料:winyee先生,謝謝

Redhat5,mysql 6.0

實驗環境:mysql主服務器A 192.168.0.2 從服務器:192.168.0.3 搭建雙機熱備的mysql集羣

①    分別在主機A,B上面建立用於Replication的用戶.給予REPLICATION SLAVE權限即可
shell>mysqld_safe -user=mysql&
shell>mysql -uroot -ppassword
mysql>GRANT REPLICATION SLAVE ON *.*
    -> TO 'repl'@'192.168.0.%' IDENTIFIED BY 'repl';
mysql>quit;
##停止mysql Server.
shell>mysqladmin shutdown -uroot -ppassword
②如若兩臺機器的數據庫不一致,則將某一臺的數據轉移到另外一臺,例如將A數據庫備份到B.主機A打包要複製的數據庫,轉移到B機器.否則,直接執行步驟③即可..
shell> cd /usr/local/mysql/
/usr/local/mysql/#shell#> tar -zcvf var.tar.gz var
這樣,我們得到一個mysql數據庫的打包文件var.tar.gz
在B機器上刪除以前的數據庫文件,將var.tar.gz複製到此處,修改權限
shell> cd /usr/local/mysql/
/usr/local/mysql/#shell#>rm -fr var
/usr/local/mysql/#shell#>tar -zxvf var.tar.gz
/usr/local/mysql/#shell#>cd var
/usr/local/mysql/var/#shell#>chown -R root .
/usr/local/mysql/var/#shell#>chown -R mysql .
③分別修改A,B主機的mysql 配置文件.均如下操作
shell>vi /etc/my.cnf
          ##找到[mysqld],添加一行'log-bin',並且設置A,B主機的server-id爲兩個不同的整數即可.例如##
          ## A主機修改爲
[mysqld]
log-bin
server-id=1
          ## B主機修改爲
[mysqld]
log-bin
server-id=2
          ##保存退出
④A主機用如下方式啓動mysql.
shell>mysqld_safe --skip-slave-start --user=mysql&
          ##登陸mysql
shell>mydql -uroot -ppassword
mysql>change master to
    ->MASTER_HOST='192.168.0.3', ##主機B的ip
    ->MASTER_USER='repl',
    ->MASTER_PASSWORD='repl';
mysql> start slave;
⑤B主機也用如下方式啓動mysql.
shell>mysqld_safe --skip-slave-start --user=mysql&
          ##登陸mysql
shell>mydql -uroot -ppassword
mysql>change master to
    ->MASTER_HOST='192.168.0.2', ##主機A的ip
    ->MASTER_USER='repl',
    ->MASTER_PASSWORD='repl';
mysql> start slave;
⑥現在已基本完成了操作,在任意一臺運行如下命令查看master/slave狀態
mysql> show master status;  ##如果Server-id沒有設置,此處將會有警告信息
+----------------------+--------------+--------------+------------------+
| File                | Position    | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+--------------+--------------+------------------+
| localhost-bin.000003 | 98          |              |                  |
+----------------------+--------------+--------------+------------------+
1 row in set (0.03 sec)  
****************************************
mysql> show slave status;
-----+--------------------+-----------------+-------------------+----------------+-----------------------+
| Slave_IO_State                            | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File      | Read_Master_Log_Pos | Relay_Log_File            | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table
-----+--------------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.3 | repl                | 3306              | 60                       | localhost-bin.000003 | 98                  | localhost-relay-bin.000008 | 239          | localhost-bin.000003 | Yes              | Yes              |                |                    |                    |                        |                        |                            | 0          |            |  0          | 98                  | 239            |
......
1 row in set (0.01 sec)
*****************************************
mysql> show processlist;
+---+-------------+-------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| Id| User        | Host              | db  | Command    | Time | State                                                                | Info |
+---+-------------+-------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
| 1 | system user |                  | NULL | Connect    | 2073 | Waiting for master to send event                                      | NULL            |
| 2 | system user |                  | NULL | Connect    | 1426 | Has read all relay log; waiting for the slave I/O thread to update it | NULL            |
| 5 | repl        | 192.168.0.3:48356 | NULL | Binlog Dump | 832  | Has sent all binlog to slave; waiting for binlog to be updated        | NULL            |
| 6 | root        | localhost        | NULL | Query      | 0    | NULL                                                                  | show processlist |
+----+-------------+-------------------+------+-------------+------+----------------------------------------------------------------------+------------------+
4 rows in set (0.00 sec)
***此處應該有3個以上的id才正確.
****************************************************************************************************************************************

 

爲了方便,AB主機都添加了repl熱備用戶,此處用戶名,密碼等你可以任意選擇,只要在change master 的時候,添加正確即可.初次做這個的時候,你也可以給予all privileges. mysql並

不贊同這麼給予權限,說是因爲安全的原因.  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'repl';這個語句授權的前提是兩臺主機位於同一

個網段.其實,隨你怎麼設置,只要主機A能在主機B上用repl用戶訪問,主機B能在主機A上用 repl用戶訪問即可. 

        配置文件:按照官方手冊,添加log-bin即表示當前主機將作爲master. log-bin也可以帶參數:log-bin=sql-bin (用與記錄操作的二進制文件名). 初次做這個的朋友,最好不要帶

參數,否則會比較麻煩的.在任何時候,你都可以用

mysql> CHANGE MASTER TO 
    ->    MASTER_HOST='master_host_name',
    ->    MASTER_USER='replication_user_name',
    ->    MASTER_PASSWORD='replication_password';
後重啓來更改master.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章