MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
一、主从复制的作用
1、如果主服务器出现问题,可以快速切换到从服务器。
2、对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降低主服务器的访问压力。将数据的读写进行分离从而达到负载的效果。
3、可以在从服务器进行数据备份操作,以避免备份期间对主服务器的影响。
主从复制原理:
原理解析:一旦配置好主从复制,主服务器master开启二进制日志(binlog)将自己的数据改变存到二进制日志中,主从复制配置好,从服务器就会有两个线程,i/o线程、sql线程,从服务器(slave)通过master服务器授予的用户将master服务器产生的二进制日志(binlog)通过i/o线程读到本地并转为中继日志(relaylog),然后通过sql线程读取中继日志(relaylog)再将改变反应到从服务器。
二、搭建主从复制环境
master:192.168.6.224
slave:192.168.6.222
1、开启主服务器的bin-log日志并开设置server-id的值。
修改主服务器的/etc/my.cnf配置文件:
[mysqld] #开启mysql的bin-log日志(必须启用二进制日志) log-bin=mysql-bin #主服务器该值设置为1 server-id = 1
2、开启从服务器的bin-log日志并开设置server-id的值。
修改从服务器的/etc/my.cnf配置文件:
[mysqld] #开启mysql的bin-log日志(不是必须启用二进制日志)
log-bin=mysql-bin
#从服务器该值设置为2
server-id = 2
3、重启主从mysql
service mysqld restart (mariadb)centos7数据库
4、在主服务器上建立账户并授权slave
mysql -uroot -p(密码)
mysql>grant replication slave on *.* to backup@'%' identified by '123456';
三、测试
1、在master服务器查看bin-log日志状态 记录日志文件名及位置 备用 执行此步骤 不要再操作 防止状态值变化
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 656 | | | +------------------+----------+--------------+------------------+
2、接下来让slave连接master 在从服务器上登录mysql
mysql> change master to master_host='192.168.6.224',master_user='backup',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=656; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 656 | | | +------------------+----------+--------------+------------------+
2、启动slave复制功能
mysql>start slave;
查看slave同步状态
mysql> show slave statusG; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.6.224 Master_User: user2 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 656 Relay_Log_File: localhost-relay-bin.000002 Relay_Log_Pos: 802 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes
在这里可以看到主服务器的Postion与从服务器的Read_Master_Log_Pos值相等且Slave_IO_Running,Slave_SQL_Running值都是 Yes 。在主服务器创建个新的数据库,能在从服务器中查看到这个新数据库,这样mysql的主从配置成功。
四、主从复制常用命令
1、start slave #启动复制线程
2、stop slave #停止复制线程
3、show slave status #查看从数据库状态
4、show master logs;#查主数据库有哪些bin-log日志
5、change master to #动态改变到主服务器的配置
6、show processlist;#查看从数据库的运行进程