在Docker中配置mysql主从复制

在Docker中配置mysql主从复制

1.创建文件夹和配置文件

mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/{master,slave}

# 主库配置
mkdir /docker/mysql/master/data
vim /docker/mysql/master/my.cnf

# 下面的内容填入my.cnf
[mysqld]
user=mysql
log-bin=mysql-bin
server-id=1
character-set-server=utf8
default_authentication_plugin=mysql_native_password
table_definition_cache=400
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

# 从库配置
mkdir /docker/mysql/master/data
vim /docker/mysql/master/my.cnf

# 下面的内容填入my.cnf
[mysqld]
user=mysql
server-id=2
character-set-server=utf8
default_authentication_plugin=mysql_native_password
table_definition_cache=400
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

2.创建docker 桥接网络,用于MySQL主从容器之间互联

docker network create mysql

3.创建mysql容器

# 创建mysql主数据库容器
docker run -d --privileged=true -p 3307:3306 -v /docker/mysql/master/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/master/data:/var/lib/mysql -v /docker/mysql/master/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master --network mysql --network-alias mysql-master mysql:latest

# 创建mysql从数据库容器
docker run -d --privileged=true -p 3308:3306 -v /docker/mysql/slave1/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/slave1/data:/var/lib/mysql -v /docker/mysql/slave1/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave1 --network mysql --network-alias mysql-slave1 mysql:latest

4.配置mysql主从复制

(1)配置主服务器:

docker exec -it mysql-master bash

mysql -uroot -p
// 输入密码

# 我这里用root用户来进行主从复制,也可以自己创建新用户来替换掉
# '%' 代表所有ip都能来复制,可以改成从自己的ip来提高安全性
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';

# 刷新权限
flush privileges;

# 查看主服务器状态
show master status;
# 记住其中的File Position 列的内容

# 退出mysql
exit;

# 退出mysql容器
exit

(2)配置从服务器:

# 进入MySQL从数据库容器
docker exec -it mysql-slave1 bash

mysql -uroot -p
# 输入密码

change master to master_host='mysql-master',master_user='root',master_password='root密码',master_log_file='刚才记住的File列的内容',master_log_pos=position的内容(不用加引号),master_port=3306;

# 启动slave
start slave;

# 查看slave状态
show slave status\G;

当 Slave_IO_Running , Slave_SQL_Running 都为yes时代表配置成功

5.验证

去主库做一些操作,看看从库是否会同步更新,如果用的是一些图形化管理工具,记得点一下刷新

6.关于非docker环境下的主从复制配置

只需不执行关于docker的命令就可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值