二、docker配置mysql主从复制

1、新建文件夹data  和主数据库数据文件夹mysql3308,从数据库数据文件夹mysql3307

两个my.cnf文件放在conf文件夹下

1.配置文件主数据库

docker run -d -p 3308:3306 --privileged=true -v /data/mysql3308/log:/var/log/mysql -v /data/mysql3308/data:/var/lib/mysql -v /data/mysql3308/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql-master mysql

主MySQL配置文件my.cnf

## 默认编码格式
[client]
default_character_set=utf8 
[mysqld] 
## 设置服务端编码格式
collation_server = utf8_general_ci 
## 设置编码格式
character_set_server = utf8 
## 设置server_id,同一局域网中需要唯一 
server_id=102 
## 指定不需要同步的数据库名称 
binlog-ignore-db=mysql   
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用 
log-bin=mall-mysql-slave1-bin   
## 设置二进制日志使用内存大小(事务) 
binlog_cache_size=1M   
## 设置使用的二进制日志格式(mixed,statement,row) 
binlog_format=mixed   
## 二进制日志过期清理时间。默认值为0,表示不自动清理。 
expire_logs_days=7   
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。 
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 
slave_skip_errors=1062   
## relay_log配置中继日志 
relay_log=mall-mysql-relay-bin   
## log_slave_updates表示slave将复制事件写进自己的二进制日志 
log_slave_updates=1   
## slave设置为只读(具有super权限的用户除外) 
read_only=1 

 CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

会遇到问题

 Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

解决:

ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

show master status;

2、从数据库

docker run -d -p 3307:3306 --privileged=true -v /data/mysql3307/log:/var/log/mysql -v /data/mysql3307/data:/var/lib/mysql -v /data/mysql3307/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql-slave mysql

从MySQL配置文件my.cnf

## 默认编码格式
[client]
default_character_set=utf8 
[mysqld] 
## 设置服务端编码格式
collation_server = utf8_general_ci 
## 设置编码格式
character_set_server = utf8 
## 设置server_id,同一局域网中需要唯一 
server_id=102 
## 指定不需要同步的数据库名称 
binlog-ignore-db=mysql   
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用 
log-bin=mall-mysql-slave1-bin   
## 设置二进制日志使用内存大小(事务) 
binlog_cache_size=1M   
## 设置使用的二进制日志格式(mixed,statement,row) 
binlog_format=mixed   
## 二进制日志过期清理时间。默认值为0,表示不自动清理。 
expire_logs_days=7   
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。 
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 
slave_skip_errors=1062   
## relay_log配置中继日志 
relay_log=mall-mysql-relay-bin   
## log_slave_updates表示slave将复制事件写进自己的二进制日志 
log_slave_updates=1   
## slave设置为只读(具有super权限的用户除外) 
read_only=1 

里的ip地址是你环境里的局域网ip
change master to master_host='127.0.0.1', master_user='slave', master_password='123456', master_port=3308, master_log_file='mall-mysql-bin.000003', master_log_pos=995, master_connect_retry=30;
Query OK, 0 rows affected, 10 warnings (0.02 sec)

show slave status \G;

mysql> start slave;

测试一下

主数据库新建

#创建db01库
CREATE DATABASE test;
#进入db01库
use test;
#创建表t1
CREATE table bools(id int ,book varchar(20),price decimal(10,2));
#新增数据
INSERT into bools VALUES (1,"aa",33);
#新增数据

#查询t1表
SELECT * from bools;

从数据库查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值