运维笔记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)














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