mysql服务器主从_MySQL主从服务器的原理和设置

一 主从配置的原理

mysql的Replication是一个异步的复制过程,从一个mysql

instance(Master)复制到另一个mysql instance(Slave),

在master与slave之间的整个复制过程主要由三个线程完成,分别为Master端得IO线程和Slave端得IO线程和Sql线程。整

个过程如下:

1 Slave上的IO线程连接上Master,并请求从指定日志的指定位置之后的日志内容

2 Master收到来自Slave的IO线程请求后,通过Master上的IO线程根据请求信息读取日志信息返回给Slave端IO线程。

除了日志所包含的信息之外,还包含本次返回信息在Master端得Binary Log文件的名称以及位置

3 Slave的IO线程接收到信息后,将接收到的日志内容依次写到Slave端得RelayLog文件末尾,并读取Master端得Binary

Log文件名和位置记录到master-info中,以便下次的IO请求

4 Slave的Sql线程检测到Relay Log中有新增内容后,马上解析可执行的Sql语句,并在本机上执行

二 设置过程

1 首先准备两台服务器:主服务器wwwlinuxidc.com 从服务器www.linuxidc.net

2 在主数据库服务器中为从服务器添加一个拥有访问主库的用户,其命令为:

GRANT REPLICATION SLAVE ON *.* TO ‘username’@’www.linuxidc.net’ IDENTIFIED BY 'password'

注: username是你创建的可以访问主库的用户名,IP为从机IP,password为用户登录密码

添加后在从服务器上用 mysql -hwwwlinuxidc.com -uusername -ppassword 来测试下是否可以访问主数据库

3 修改主服务器的配置文件

vi /etc/my.cnf

server-id = 1  ##数据库服务器都有唯一的server-id,通常主服务器制定为1,www.linuxidc.com默认的配置文件中已经存在,特别注意从服务器配置中要将此行注释掉

log-bin=mysql-bin ##mysql进行主从复制是通过二进制的日志文件来进行的,所以必须开启mysql的日志功能

以上两行配置都已经存在,还需额外添加如下配置:

log_bin = /home/mysql/mysql/log/mysql-bin.log #二进制文件存放目录,www.linuxidc.com可自行定义,但需注意目录有写权限

read-only = 0 #主机读写都可以

binlog-do-db = test1 #设定同步的数据库,多库可以多行设置

binlog-do-db = test2

binlog-ignore-db = test3 #设定不用同步的数据库,多库可以多行设置

binlog-ingore-db = test4 17jquery.com

4 修改从服务器的配置文件

vi /etc/my.cnf

首先找到server-id = 1 这行,用#将这行注释掉,不然会和主机冲突,然后添加

server-id = 2

replicate-do-db = test1 #允许同步的数据库,多库可以多行设置

replicate-do-db = test2

replicate-ignore-db = test3 #不需同步的数据库,多库可以多行设置

replicate-ignore-db = test4

master-connect-retry=30

master-host= wwwlinuxidc.com #主服务器地址

master-user=username #刚刚添加访问主服务器的用户名

master-password=password #主机密码

master-port=3306

read-only=1 #只允许读操作(连接用户不能有SUPER权限,否则无效)

5 重启主服务器和从服务器

在主服务器上登录mysql 输入

show master status\G

可查看主服务器状态

在从服务器上登录

mysql start slave

(启动从机) 然后show slave  status \G ,如果以下两项都为yes即是从机配置成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

从数据库服务器的通常操作命令有:

start slave;  ####启动复制线程

stop slave;   ####停止复制线程

reset slave;  ####重置复制线程

change master to; ###动态改变到主服务器的配置 如change master to master_user='username';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值