最近在增强数据库方面的知识,这篇文章就记录一下
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_running
和slave_io_running
同时为yes
时,就大功告成~