centos安装mysql8主从复制docker

 安装docker centos安装docker_小青蛙呱呱跳的博客-CSDN博客

#查询MySQL
docker search mysql
#下载mysql镜像
docker pull mysql

1、在opt下创建文件夹

#存master信息
mkdir master

#存slave信息
mkdir slave

2、启动mysql容器

maser

docker run --name master  -d -p 3307:3306 -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -v $PWD/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

slave

docker run --name slave  -d -p 3308:3306 -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -v $PWD/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

3、进入mysql容器,并登陆mysq

docker exec -it master bash

 4、开启远程访问权限(master和slave都执行)

mysql -uroot -p
use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

 创建复制账号

CREATE USER 'slave'@'%' IDENTIFIED with mysql_native_password by '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

flush privileges;

5、配置信息

 宿主主机

#如果在容器里面操作,则需要安装vim
apt-get update
apt-get install vim
#修改master
vim opt/master/conf/my.cnf

[mysqld]
#同一局域网内注意要唯一
server-id=3307

## 开启二进制日志功能,可以随便取(关键)
log-bin=master-bin

#二级制日志格式,有三种 row,statement,mixed
binlog-format=ROW

#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
binlog-do-db=test

#将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中                
log-slave-updates  
                      
#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失) 
sync_binlog = 1 
                   
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1
           
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 1 

#从机复制时,忽略的数据库,也就是说这里配置的数据库不会被从机同步
binlog-ignore-db = mysql,information_schema,performance_schema,sys

#修改slave配置
vim opt/slave/conf/my.cnf

[mysqld]
## 设置server_id,注意要唯一
server-id=3308
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=mysql-relay-bin
read_only=1  ## 设置为只读,该项如果不设置,表示slave可读可写

 重启docker容器

docker restart $(docker ps -aq)

6、开启Master-Slave主从复制

1)进入Master库mysql客户端:输入show master status查看Master状态:

docker exec -it master bash

centos安装mysql8主从复制docker_第1张图片

 2)进入slave库mysql客户端

docker exec -it slave bash

CHANGE MASTER TO MASTER_HOST = '192.168.31.27',master_port=3307,
MASTER_USER = 'slave',
MASTER_PASSWORD = '123456',
MASTER_LOG_FILE = 'master-bin.000001',
MASTER_LOG_POS = 157;

start slave;
show slave status\G;


#常用命令
reset master;
show master status;

stop slave;
reset slave;
start slave;

centos安装mysql8主从复制docker_第2张图片

 centos安装mysql8主从复制docker_第3张图片

 恭喜你,安装成功。现在可以在master库新建test库测试。

如果SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,应该是下面原因:

1、网络不通:检查ip,端口
2、密码不对:检查是否创建用于同步的用户和用户密码是否正确
3、pos不对:检查Master的 Position

你可能感兴趣的:(数据库,mysql)