MySQL主从复制配置

摘要:复制原理:Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(INSERT,UPDATE,DELETE,ALTER TABLE,GRANT等等)。主从复制...

复制原理:

Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(INSERT,UPDATE,DELETE,ALTER TABLE,GRANT等等)。

主从复制的原理其实就是

主服务器将改变记录到二进制日志(binlog)中,从服务器将主服务器的binlog拷贝到它的中继日志(relaylog),然后重做中继日志中的事件,在本服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

环境说明:

两台服务器,192.168.1.1(当做master),192.168.1.2(当做slave)

一、配置二进制日志文件:

在master服务器上:

1:编辑主节点配置文件

vim /etc/my.cnf

2.启用二进制日志文件,添加以下配置

server-id = 1
log-bin = mysql-bin
binlog-format = mixed

server-id = 1 //给服务器起一个独特的ID

log-bin = mysql-bin //声明 二进制日志文件为 mysql-bin.XXXX

binlog-format = mixed //设置二进制复制模式,可选值有(mixed/statement/row)

在slave服务器上:

1:编辑主节点配置文件

vim /etc/my.cnf

2.启用二进制日志文件,添加以下配置

server-id = 2
log-bin = mysql-bin
binlog-format = mixed
relay-log = relay-log

server-id = 2 //给服务器起一个独特的ID

log-bin = mysql-bin //声明 二进制日志文件为 mysql-bin.XXXX

binlog-format = mixed //设置二进制复制模式,可选值有(mixed/statement/row)

relay-log = relay-log //声明 relay-log日志文件为 relay-log.XXXX

3重启mysql:

service mysqld start

二、建立主从连接

1、在master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中,命令如下:

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*  TO backup@'192.168.1.2' IDENTIFIED BY '1234';

说明:建立一个帐户backup,并且只能允许从192.168.1.2这个地址上来登陆,密码是1234。

主服务器配置完成.

注意:确保主服务器的iptables没有阻断3306的访问端口。

2.在slave服务器上执行以下命令,连接master服务器:

CHANGE MASTER TO MASTER_HOST='192.168.1.1',
MASTER_USER='backup',MASTER_PASSWORD='1234',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=4;

说明:MASTER_LOG_FILE是指定读取主服务器的哪个binlog日志文件,MASTER_LOG_POS是指定从该日志的哪个位置开始读,这两个选项要从master服务器上运行命令:SHOW MASTER STATUS; 查看

查看slave的设置是否正确:

SHOW SLAVE STATUS
Slave_IO_State:
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
 ...omitted...
Seconds_Behind_Master: NULL

Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No,表明slave还没有开始复制过程。

在slave上启动复制线程 :

START SLAVE;

可以运行 SHOW SLAVE STATUS 查看输出结果:

Slave_IO_State: Waiting for master to send event
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 164
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 164
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...omitted...
Seconds_Behind_Master: 0

当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常。

至此,mysql的主从复制配置完成。

3.实际测试

登录192.168.1.1主MySQL,添加一张数据表,并添加数据,然后登陆192.168.1.2从MySQL,发现刚才新建的表和数据都出现了,主从复制的配置就是如此的简单。

本文分享自微信公众号 - Java帮帮(javahelp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL主从复制配置

    Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(INSERT,UPDATE,DELETE,ALTER TABL...

    Java帮帮
  • Java案例-判断给定年份是闰年

    Java案例-判断给定年份是闰年 案例描述 编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整...

    Java帮帮
  • Java在游戏服务器开发中应用【面试+提高】

    Java在游戏服务器开发中的应用 随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户...

    Java帮帮
  • MySQL主从复制配置

    Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(INSERT,UPDATE,DELETE,ALTER TABL...

    Java帮帮
  • 杰和科技郑茹冰:2018服务器市场的新动能与新机遇

    至顶网报道 当今的服务器市场正在迎来“新时代”的变革期,云计算、大数据、人工智能等技术对于服务器的产品形态产生了巨大的影响。在低迷一段时间后,服务器市场在迎来新...

    企鹅号小编
  • vue3.0 Composition API 上手初体验 普通组件的开发与使用

    通过前面的章节的讲解,我相信大家对于 vue 3.0 的新特性的基本使用,已经没有问题了。但是新的问题来了,组件是怎么玩的呢?

    FungLeo
  • 登录服务器是不是总要输入密码,了解一下免密登录吧

    我们登录服务器,不管你是通过ssh,还是通过工具登录,总是需要输入用户名和密码,频繁操作太浪费时间了,这个时候就要了解一下免密登录了。

    石燕平
  • Python速查宝典-GitHub共享

    先前在天善智能那儿得到了一些翻译版的DataCamp,于是也抽空过一遍内容,把一些觉得常用的内容给记录下来,主要围绕着建模相关的资料内容,所以主要还是Panda...

    Sam Gor
  • 内存数据库Redis 主从复制

    image.png 原理 ? 不管是在第一次链接还是重新链接master的时候,slave会发送一个同步命令sync,进行一次完全同步 配置 编辑从服务器的r...

    dys
  • HTTP数据包头部格式解读1

    HTTP协议的大部分功能其实通过其协议包头来实现。因为HTTP协议包头作用如此重要,因此需要单独列出一节来详细讲解。协议包头大体上分为4类,分别为通用包头,请求...

    望月从良

扫码关注云+社区

领取腾讯云代金券