一.环境
基于docker搭建环境。
使用mysql版本5.7.4
二.搭建mysql主
docker run \
--name mysqlmaster \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/config:/etc/mysql/conf.d \
-p 5132:3306 \
-d mysql:5.7.4
2.在主服务器创建slave用户并且给权限
-- 创建用户
create user 'user_slave'@'%'
-- 设置密码
ALTER USER 'user_slave'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass513122!';
-- 赋复制权限
GRANT REPLICATION SLAVE ON *.* TO 'user_slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
3.设置主服务器配置(my.cnf)
[mysqld]
#设置服务器id(确保唯一)
server-id=1
#设置日志个数默认ROW
binlog_format=STATEMENT
#开启binlog日志(mysql-bin 日志名称)
log-bin=mysql-bin
#设置需要复制的数据库,默认复制全部
binlog-do-db=mydb
4.查询binlog文件
SHOW MASTER STATUS;
binlog.000001 154
三.搭建mysql从
docker run \
--name mysqlslave \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /docker/mysqls/data:/var/lib/mysql \
-v /docker/mysqls/config:/etc/mysql/conf.d \
-p 5232:3306 \
-d mysql:5.7.4
2.设置主服务器配置(my.cnf)
[mysqld]
#设置服务器id(确保唯一)
server-id=2
3.在从机设置主从关系
CHANGE MASTER TO
MASTER_HOST = '主服务器的 IP 地址',
MASTER_PORT = 主服务器的端口号,
MASTER_USER = '用于复制的用户',
MASTER_PASSWORD = '用于复制的用户的密码',
MASTER_LOG_FILE = '主服务器的二进制日志文件名',
MASTER_LOG_POS = 主服务器的二进制日志位置;
4.查询状态
-- 开启从服务
START SLAVE;
-- 查看状态
SHOW SLAVE STATUS
看到YES就是成功!