一、原理

mysql主从配置的流程大体如图:

1)master会将变动记录到二进制日志里面;

2)master有一个I/O线程将二进制日志发送到slave;

3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;

4)slave有一个SQL线程,按照relay日志处理slave的数据;

二、操作步骤

按照原理,我们开启mysql主从复制,我们大体需要做以下操作:

1)开启master的二进制日志

2)开启slave的二进制日志

3)将slave指向master

4)开始复制

三、开启master二进制日志

1)编辑mysql的配置文件,使用命令:

vim /etc/my.cnf

2)添加二进制日志配置,开启二进制(master-bin只是日志文件名称,可以自己指定)

log-bin=master-bin

server-id=1

注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符

四、授权

我们需要给slave配置一个用户/密码的权限

mysql>GRANT REPLICATION SLAVE ON *.* TO '用户名'@'slave数据库的IP地址' IDENTIFIED BY '密码';

这行命令的意思是:允许在某个IP地址的某个用户以某个密码对当前数据库的所有库和所有表进行复制操作

注意:以上配置了权限,我们需要刷新以下权限使用命令:

mysql>flush privileges;

或者直接重启mysql服务:

service mysql restart;

五、查看以下master的状态

其实主要是查看以下master的日志文件名字,以及文件所在的位置,使用命令:

show master status;

可以看到类似如下信息:

+-------------------+----------+--------------+------------------+-------------------+

| File| Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------+----------+--------------+------------------+-------------------+

| master-bin.000001 | 1516 ||| |

+-------------------+----------+--------------+------------------+-------------------+

File: 日志文件名称

Position: 日志所在位置

六、开启slave的二进制日志

进入slave的服务器

1)编辑mysql的配置文件,使用命令:

vim /etc/my.cnf

2)添加二进制日志配置,开启二进制(relay-bin只是日志文件名称,可以自己指定)

log-bin=relay-bin

server-id=2

注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符

七、将slave指向master

mysql>CHANGE MASTER TO

>MASTER_HOST='master所在服务器的IP',

>MASTER_USER='master授权的账号',

>MASTER_PASSWORD='master授权的密码',

>MASTER_LOG_FILE='master的日志文件名',

>MASTER_LOG_POS=master的日志所在位置;

八、开始主从复制

在slave上执行

mysql>start slave;

我们可以查看slave的运行状态:

show slave status\G;

可以看到类似如下内容:

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: master的IP地址

Master_User: root

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000001

Read_Master_Log_Pos: 1516

Relay_Log_File: slave-bin.000004

Relay_Log_Pos: 1117

Relay_Master_Log_File: master-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

......

注意:

Slave_IO_Running: YES 表示slave的日志读取线程开启

Slave_SQL_Running: YES 表示SQL执行线程开启

如果有主从复制有错误信息其实也可以看到

九、测试

以上我们就将主从复制功能设置完毕了,我们可以通过在master里面创建数据库,或者表,插入数据等来测试一下

十、注意点

1)开启了主从复制,slave库如果写入数据的话,可能导致数据回滚从而主从复制线程中断,可以通过以下方式解决:

mysql> stop slave;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> start slave;

2)如果要停止slave的复制可以使用命令:

mysql>stop slave;

3)由于主从复制是基于I/O的日志,所以会存在一定延时,如果对数据一致性要求非常高的话,简单的主从复制在实际环境中会存在问题

参考文章:

linux mysql 主从数据库_linux mysql数据库的主从配置相关推荐

  1. linux 版本mysql 数据乱码_linux mysql 数据库乱码

    mysql中文乱码 mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1. ...

  2. linux 修改mysql root密码_Linux mysql如何更改root密码

    说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...

  3. linux mysql开启事务_linux mysql 相关操作命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  4. linux mysql博客_linux mysql

    一 数据库安装查看: [root@localhost info Mariadb #包组 mariadb-server #服务器端 [root@localhost ~]# yum groupinfo M ...

  5. 阿里云 linux mysql数据库_Linux Mysql数据库安全配置

    Linux Mysql数据库安全配置 目录: 1.修改mysql管理员账号root的密码(2种方法) 2.修改mysql管理员账号root 3.mysql管理员root账号密码遗忘解决办法(2种方法) ...

  6. linux mysql 白名单_linux mysql数据库 3306 端口 白名单

    linux使用PolarDB和ECS搭建门户网站 注:熟练使用百度会提高你的效率 安装与使用 1.在 阿里云控制台首页 左侧导航栏,依次单击 产品与服务 > 云数据库PolarDB ,进入 云数 ...

  7. linux mysql csv文件_Linux MySQL数据库如何导出数据文件?导出csv语句命令

    广告 2017年11月13日 MySQL中你可以使用SELECT ... INTO OUTFILE语句来简单的导出数据到文本文件上. 使用SELECT ... INTO OUTFILE语句导出数据 以 ...

  8. linux把mysql变为服务器_linux mysql服务器迁移

    服务器即将过保,重新申请了一台虚机,折腾了一下数据库的迁移.以下是主要步骤: 1.在windows上用navicat把数据和结构转储成sql文件 2.在mysql官网上下载rpm的压缩包 3.使用se ...

  9. linux mysql 查询慢_linux – MySQL非常简单的SELECT查询速度极慢

    我们有一个在虚拟机上运行的简单Web应用程序,它使用InnoDB引擎将其数据保存在 MySQL 5.5数据库中.一切都运作良好大约三年,但突然变得非常缓慢. 例如,我有一个非常简单的表保存地址: CR ...

最新文章

  1. Git中.gitignore忽略文件(maven项目)
  2. ThinkPHP源码学习 data_to_xml函数 数据转成xml格式
  3. halcon知识:图标对象如何存盘和读入
  4. pycharm如何调试函数中的断点?找出操作对应的代码部分
  5. systemd教程推荐
  6. SAP Spartacus的user id
  7. Java代码服务器上下载图片_Java如何从服务器中下载图片
  8. 向mysql中添加更新时间_mysql 实现添加时间自动添加更新时间自动更新操作
  9. Ajax应用简单实例
  10. Objective-c的内存管理MRC与ARC
  11. Unity调用打印机打印图片
  12. 超硬核!数据结构学霸笔记,考试面试吹牛就靠它
  13. 整理出Android逆向系列学习进阶视频,全网疯传
  14. VOC数据集介绍及构建自己的VOC格式目标检测数据集
  15. 计算机或可编程控制器,浅谈可编程控制器的应用
  16. 关于C语言中有符号的整数值范围为什么是从-32768~32767以及有符号和无符号区别
  17. 墨尔本大学计算机科学博士怎么样,墨尔本大学计算机科学专业怎么样?成为IT大牛的不二之选...
  18. 优雅写代码的45个小技巧
  19. 风控策略分析师日常--代码、数据、策略
  20. 优秀网页设计的七条基本准则

热门文章

  1. Data truncation: Data truncated for column/Data too long for column
  2. 第二轮冲刺-Runner站立会议03
  3. 学点 C 语言(9): if 语句
  4. 牛客网(剑指offer) 第二十一题 栈的压入、弹出序列
  5. iOS之性能优化·优化App的启动速度
  6. Python之将彩色图片批量转化为黑白图片
  7. Metal之MTLBuffer批量加载顶点数量较多的图形渲染
  8. iOS之自定义封装tabBar
  9. 完美的项目从完美的表开始
  10. 1130:找第一个只出现一次的字符