运维笔记32 (mysql的主从复制)

    xiaoxiao2021-03-25  86

    概述:前面一直讲高可用集群,但是没有讲高可用集群所真正服务的主角--数据库。互联网的基础之基础就是数据,数据库的高可用技术也正是一个运维人员必不可少的技能。

    本次集群拓扑:

    内核版本: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 slavetips:如果你的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)

    转载请注明原文地址: https://ju.6miu.com/read-14357.html

    最新回复(0)