mysql主从复制实验

Mysql主从架构技术说明

  Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机(Master)的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

 

一、环境准备:

centos系统服务器2台、一台用户做Mysql主服务器,一台用于做Mysql从服务器,配置好yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信

  

二、准备步骤:

1iptables -F && setenforce 0清空防火墙策略,关闭selinux

2、拿两台服务器都使用yum方式安装Mysql服务,要求版本一致

3、分别启动两台服务器mysql服务,确保服务正常

iptables -F

setenforce 0

yum install mariadb-server -y

systemctl start mariadb先启动再开启二进制日志,否则二进制日志会多很多初始化内容

  

三、实现步骤:

1、配置master主服务器

master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件加入如下值

vim /etc/my.cnf

server-id=1 #配置server-id,让主服务器有唯一ID

log-bin=mysql-bin #打开Mysql日志,日志格式为二进制

skip-name-resolve #关闭名称解析,(非必须)

systemctl restart mariadb

2.创建复制帐号

Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'172.17.%.%' IDENTIFIED BY 'magedu';

MariaDB [(none)]> grant replication slave,replication client on *.* to slave @'172.17.%.%' identified by 'magedu';

查看授权是否成功

select host,user,password from mysql.user;

select * from mysql.user\G;

mysql主从复制实验_第1张图片

  

3.查看主服务器状态

Master的数据库执行show master status,查看主服务器二进制日志状态

  

4、配置slave从服务器

slave进行配置,打开中继日志,指定唯一的servr ID,设置只读权限。在配置文件加入如下值

vim /etc/my.cnf

server-id=2 #配置server-id,让从服务器有唯一ID

relay_log = mysql-relay-bin #打开Mysql日志,日志格式为二进制

read_only = 1 #设置只读权限

log_bin = mysql-bin #开启从服务器二进制日志

log_slave_updates = 1 #使得更新的数据写进二进制日志中

  

systemctl start mariadb

  

5.启动从服务器复制线程

slave连接master,并开始重做master二进制日志中的事件。

CHANGE MASTER TO MASTER_HOST='172.17.251.117',

MASTER_USER='slave',

MASTER_PASSWORD='magedu',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=245;

  

执行start slave#启动复制线程。

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G;

  

  

  

6、查看从服务器状态

可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程正常运行

Slave_SQL_Running: Yes #SQL线程正常运行

  

四、添加新slave服务器:

  

假如master已经运行很久了,想对新安装的slave进行数据同步,甚至它没有master的数据。

此时,有几种方法可以使slave从另一个服务开始,例如,从master拷贝数据,从另

一个slave克隆,从最近的备份开始一个slave。为了加快Slavemaster同步,可

用以下方式先进行数据同步:

(1)master的某个时刻的数据快照;

(2)数据库的备份数据

(3)master的二进制日志文件。

  

  

五、测试:

主服务器:

create database magedu;

use magedu;

create table magedu.m26(id int not null,name char(20));

show tables;

  

在从服务器上观察是否创建了magedu数据库和m26这个表,如果看到了,就说明实验成功了。

  

你可能感兴趣的:(数据库)