MySQL 主从复制原理及配置教程

发布于 2019-12-08

MySQL 主从复制原理及配置教程

MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。MySQL 的主从复制是一个异步操作的过程,数据在 master 与 slave 之间实现整个主从复制是三个线程参与完成的。其中两个线程在 slave 端(SQL线程和I/O线程),另一个线程在 master 端(I/O线程)。

MySQL 主从复制原理

主从同步过程中主服务器有一个工作线程I/O dump thread,从服务器有两个工作线程I/O thread和SQL thread。

主库把外界接收的SQL请求记录到自己的binlog日志中,从库的I/O thread去请求主库的binlog日志,并将binlog日志写到中继日志中,然后从库重做中继日志的SQL语句。主库通过I/O dump thread给从库I/O thread传送binlog日志。

配置 MySQL 主从复制

主和从的身份可以自己指定,我们将使用虚拟机 CenterOS 中的两台机器分别作为 MySQL 主服务器和 MySQL从服务器。 在主从设置前,要保证服务器间的网络连通,具体操作可参考 MySQL 修改 root 帐号密码及授权局域网环境访问 这篇文章。

本文以 192.168.0.103(主) 和 192.168.0.106(从) 这两台机器为例,来介绍 MySQL 主从复制的配置方法。

MySQL实例部署情况:
db1-M1,IP:192.168.0.103,Port:3306 (主)
db1-S1,IP:192.168.0.106, Port:3306 (从)

配置主服务器 master

编辑主服务器的配置文件 my.cnf,添加如下内容

[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1

创建日志目录并赋予权限

mkdir /var/log/mysql
chown mysql.mysql /var/log/mysql

重启mysql服务

systemctl restart mysqld

应该创建一个专门用于复制数据的用户

# CREATE USER 'slave'@'%' 
grant all privileges on *.* to slave@'192.168.0.106' identified by 'slave'
flush privileges;

获取主服务器的二进制日志信息

SHOW MASTER STATUS;

File为使用的日志文件名字,Position为使用的文件位置,记下这两个参数,待会会用到。

配置从服务器 slave

编辑从服务器的配置文件 my.cnf,添加如下内容

[mysqld] 
server-id=2

重启mysql服务

systemctl restart mysqld

连接mysql

mysql -h 192.168.0.106 -uroot -p

输入密码,并回车

 use mysql;

设置连接到主服务器

change master to master_host='192.168.0.103', master_user='slave', master_password='slave',master_log_file='mysql-bin.000018', master_log_pos=1387;

注:

  • master_host:主服务器Ubuntu的ip地址
  • master_log_file: 前面查询到的主服务器日志文件名
  • master_log_pos: 前面查询到的主服务器日志文件位置

开启同步,查看同步状态

mysql>start slave;

喜欢 2
奋楫笃行,臻于至善!

相关文章

MySQL 添加用户对指定库有权限

MySQL添加用户对指定库有权限 1、创建数据库并设定字符集 create database dbname default character set utf8; 2、创建用户和密码 create u...
阅读全文

MySQL 修改 root 帐号密码及授权局域网环境访问

MySQL是最流行的开源数据库之一,我们在本地操作MySQL时,经常会因为不小心忘记了root帐号的密码,或者其他的原因,而导致无法正常连接数据库。另外,在局域网环境内,如何授权其他的服务器或主机连接...
阅读全文

MySQL 无法存储 emoji 表情解决方法

MySQL的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情...
阅读全文

MySQL 易混淆 sql 语法

MySQL是最流行的开源数据库之一,我们在操作数据库的时候,经常有一些修改表名、列名、列类型的需求,这其中涉及三个关键字,分别是rename、modify和change,特别容易混淆,简单记录一下。 ...
阅读全文

MySQL5.6 无法导入数据到 MySQL5.5 的解决办法

数据迁移是我们平时工作中经常会遇到的事情,大部分情况下是跨数据库进行操作的,比如数据从 Oracle 迁移至 MySQL,但是有时候也会出现同一种数据库不同版本之间数据迁移的情况,比如数据库版本升级,...
阅读全文

如何让mysql数据库允许被远程连接访问

错误提示: ERROR 1130: Host '192.168.1.2' is not allowed to connect to this MySQL server 的解决方法: 1、改表法 更改 ...
阅读全文

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注