mysql8主从镜像制作_Docker 搭建 MySQL8.0 主从复制环境

拉取 docker 镜像

docker pull mysql/mysql-server:8.0

创建 docker 网络

docker network create mysql_network

运行 MySQL 主节点

docker run -p 3306:3306 --name mysql_master -h mysql_master --net=mysql_network --restart=always \-v ~/docker/mysql/mysql_master/log:/var/log/mysql \-v ~/docker/mysql/mysql_master/data:/var/lib/mysql \-v ~/docker/mysql/mysql_master/conf:/etc/mysql \-e lower_case_table_names=1\-e MYSQL_ROOT_PASSWORD=root \-d mysql/mysql-server:8.0

编辑主节点配置文件

vi ~/docker/mysql/mysql_master/conf/my.cnf

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

init_connect='set collation_connection=utf8mb4_unicode_ci; set names utf8mb4;'character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

skip-character-set-client-handshake

skip-name-resolve

server-id=1log-bin=mysql-bin

#binlog-do-db=test_db

binlog-ignore-db=mysql

binlog_cache_size=1M

binlog_format=mixed

expire_logs_days=7

mysql_master/conf/my.cnf

重启 MySQL 主节点

docker restart mysql_master

在主节点创建用户,用于复制主节点数据到从节点

docker exec -it mysql_master mysql -uroot -proot

create user'mysql_slave'@'%' identified with mysql_native_password by '123456';

grant replication slave, replication client on*.* to 'mysql_slave'@'%';

运行 MySQL 从节点

docker run -p 3307:3306 --name mysql_slave -h mysql_slave --net=mysql_network --restart=always \-v ~/docker/mysql/mysql_slave/log:/var/log/mysql \-v ~/docker/mysql/mysql_slave/data:/var/lib/mysql \-v ~/docker/mysql/mysql_slave/conf:/etc/mysql \-e lower_case_table_names=1\-e MYSQL_ROOT_PASSWORD=root \-d mysql/mysql-server:8.0

编辑从节点配置文件

vi ~/docker/mysql/mysql_slave/conf/my.cnf

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

init_connect='set collation_connection=utf8mb4_unicode_ci; set names utf8mb4;'character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

skip-character-set-client-handshake

skip-name-resolve

server-id=2log-bin=mysql-slave-bin

#binlog-do-db=test_db

binlog-ignore-db=mysql

relay_log=mysql-relay-bin

binlog_cache_size=1M

binlog_format=mixed

expire_logs_days=7slave_skip_errors=1062read_only=1log_slave_updates=1

mysql_slave/conf/my.cnf

重启 MySQL 从节点

docker restart mysql_slave

查看主节点日志文件和位置。可以看到文件名为 mysql-bin.000002,位置在693。

docker exec -it mysql_master mysql -uroot -proot

show master status;

df2c9d47f6ca108025c921e3b2a6d215.png

登录从节点,与主节点之间建立关联

docker exec -it mysql_slave mysql -uroot -proot

change master to master_host='mysql_master', master_user='mysql_slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=693, master_connect_retry=30;

查看从节点状态

show slave status\G;

a4ee5af5b2716f97a0c555fe18454e46.png

启动主从复制

start slave;

再次查看,可以看到 Slave_IO_Running 和 Slave_SQL_Running 两个进程已经启动了。

主从复制测试

在主节点创建一个数据库 'test_db'。

11b4c146800180f6be11db5c4558409a.png

在从节点上立即就可以看到这个数据库。

bc046ce64566739adefb533625fc1975.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值