MySQL主从复制

最近在增强数据库方面的知识,这篇文章就记录一下MySQL主从复制的一些步骤。mysql

正题sql

MySQL 主从复制的基本原理是靠Binlog日志实现的,主服务器将写操做都记录在该日志中,而创建关系的从数据库便会去读取里面的内容。数据库

废话少说,进入正题:bash

首先须要三个数据库,这边我用Docker启动了三个数据库服务:服务器

对应容器的名字为该数据库的角色定位,先要在主服务器的 MySQL的配置文件添加以下配置:

server_id=1  # 服务id标识,须要与其余服务器不一样
log-bin=mysql-bin # 开启binlog日志
read-only=0  # 是否只读
# 须要同步的库
binlog-do-db=数据库名字
binlog-do-db=数据库名字
....

# 忽略同步的库 忽略数据库自带的几个库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
复制代码

从机数据库配置也和主服务器相似,主写从读:ui

server_id=2  # 服务id标识,须要与其余服务器不一样
log-bin=mysql-bin # 开启binlog日志
read-only=1  # 是否只读
# 须要同步的库
binlog-do-db=数据库名字
binlog-do-db=数据库名字
....

# 忽略同步的库 忽略数据库自带的几个库
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
复制代码

另外一台从机配置同样,只须要更对应的服务id标识便可,修改完记得须要重启MySQL服务,接下来就须要在主服务器中设置一个对外开放的帐号,提供给从机使用:spa

# 建立用户
CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 受权
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';
复制代码

能够查看主机状态,把File属性和Position记录下来,后续须要使用:日志

show master status;  # 查看主机状态
复制代码

接下来就能够去配置从机了,在从机的MySQL中直接输入一下语句:code

CHANGE MASTER TO 
MASTER_HOST='主机IP',
MASTER_USER='建立的用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='主机的File属性值',
MASTER_LOG_POS=Position属性值,
master_port=主机端口;
复制代码

在使用start slave;进行主从同步orm

执行完以上语句能够使用show slave status\G;查看从机状态,当看到slave_sql_runningslave_io_running同时为yes时,就大功告成~

相关文章
相关标签/搜索