默认前期的准备工作已做好 linux 跟msyql的安装已安装好
参考文档:https://blog.csdn.net/u013068184/article/details/107691389
(一)基于二进制日志文件的方法
## 主从数据库配置核心部分
# 设置同步的binary log二进制日志文件名前缀,默认为binlog
log-bin=mysql-bin
# 服务器唯一id,默认为1 主数据库和从数据库的server-id不能重复
server-id=1
###可选配置
# 需要主从复制的数据库 这个地方也可以不配置 默认就是所有的数据库
binlog-do-db=test
# 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
**重新启动数据库 systemctl restart mysqld**
启动主数据库,创建一个同步复制用户(非必需,也可以用root用户):
create user 'slave2'@'%' identified by '123456'
- MySQL创建用户命令说明:create user ‘username’@‘host’ identified by ‘password’;
- username:指定创建的用户名
- host:指定用户登录的主机ip,% 表示任意主机都可远程登录,localhost 表示本地才能登录
- password:指定该用户的登录密码
接着给创建的用户授权同步复制权限:
grant replication slave on *.* to 'slave2'@'%'
MySQL创建授权命令说明:grant privilege on database.table to ‘username’@‘host’;
privilege :指定授权的权限,比如create、drop等权限,具体有哪些权限,可查看官网文档
database:指定哪些数据库生效,*表示全部数据库生效
table:指定所在数据库的哪些数据表生效,*表示所在数据库的全部数据表生效
username:指定被授予权限的用户名
host:指定用户登录的主机ip,%表示任意主机都可远程登录
最后刷新权限生效:
flush privileges
接着执行命令查看并记下binary log二进制日志文件名 File 以及位置 Position的值,需要在从数据库用到:
show master status
**
配置从数据库的my.cnf配置文件(只贴核心部分):
**
###主从数据库配置核心部分
# 设置同步的binary log二进制日志文件名前缀,默认是binlog
log-bin=mysql-bin
# 服务器唯一ID 主数据库和从数据库的server-id不能重复
server-id=4
###可选配置
# 需要主从复制的数据库 因为主机没有配置 这也就不用配置
#replicate-do-db=test
# 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
重新启动从数据库,执行以下命令设置与主数据库的联系:
先执行:
stop slave;
再执行
change master to MASTER_HOST='192.168.190.130',MASTER_PORT=3306,MASTER_USER='slave2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=120;
说明:
MASTER_HOST:主数据库的主机ip
MASTER_PORT:主数据库的端口,不设置则默认是3306
MASTER_USER:主数据库被授予同步复制权限的用户名MASTER_PASSWORD:对应的用户密码
MASTER_LOG_FILE:在主数据库执行命令show master status 查询到的二进制日志文件名称
MASTER_LOG_POS:在主数据库执行命令show master status 查询到的位置 Position的值
最后开启主从复制工作
start slave
可执行命令查看详细信息以及状态:
show slave status
假如需要停止主从复制工作,则执行以下命令:
stop slave
假如重新配置主机
stop slave
reset master
测试:在主机创建一个数据库 一个表 插入几条数据 看下从库是否有对应的数据库 表 以及数据 这里就不写了