運維筆記32 (mysql的主從複製)

概述:前面一直講高可用集羣,但是沒有講高可用集羣所真正服務的主角--數據庫。互聯網的基礎之基礎就是數據,數據庫的高可用技術也正是一個運維人員必不可少的技能。

本次集羣拓撲:


內核版本:2.6.32-431.el6.x86_64

發行版:Red Hat Enterprise Linux Server release 6.5 (Santiago)

mysql版本:mysql  Ver 14.14 Distrib 5.1.71, for redhat-linux-gnu (x86_64) using readline 5.1

1.修改mysql配置文件

我們的拓撲爲三臺服務,但是slave2是爲了演示從slave1複製出數據庫的,現在只是做一個雙機備份。

master my.cnf:(最後三行爲添加的參數)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
slave1 my.cnf:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

重啓master和slave1的mysql服務


2.進入mysql創建複製用戶

mysql> create user repl_user;
mysql> grant all privileges on *.* to 'repl_user'@'172.25.3.%' identified by 'redhat';
可能有的同學會問這樣豪放的給複製用戶權限是不是不太妥當呀,其實是因爲我一開始只給了(REPLICATION和SLAVE權限)但是發現主從複製不成功最後只能暫時先妥協,等我研究明白主從複製用戶到底明確需要哪幾個參數,並且那幾個參數的具體作用時,再回來進行補充。

3.配置slave上的mysql

mysql> CHANGE MASTER TO MASTER_HOST='172.25.3.60',MASTER_USER='repl_user',MASTER_PASSWORD='redhat',MASTER_PORT=3306;
上面命令確定了master的位置(ip),端口號,連接mysql的用戶,密碼。配置了這些數據後,再開啓slave的複製,mysql主從複製就可以正常進行了。

現在啓動slave

mysql> start slave
tips:如果你的master和slave1是剛裝好的mysql,建議清一下master的日誌使用RESET MASTER,然後再啓動slave。

4.觀察主從複製的狀態。

master狀態:

mysql> show master status\G
*************************** 1. row ***************************
            File: master-bin.000001
        Position: 185
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)
第一行:是正在寫入的日誌,目前是master-bin.000001

第二行:寫入的位置

slave狀態:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.25.3.60
                  Master_User: repl_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 185
               Relay_Log_File: slavse-relay-bin.000002
                Relay_Log_Pos: 331
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
主要看兩個參數,一個是Slave_IO_Running,另一個是Slave_SQL_Running,這兩個都爲yes的話,主從複製就是正常的狀態。


現在實際測試下

master:

創建一個test數據庫

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| MO                 |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
slave:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| MO                 |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)














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