mysql 主从复制使用docker搭建

1 获取mysql。
docker pull mysql:latest
镜像表示成功拉取:

镜像拉去完成后运行mysql (由于我是在一台服务器上面跑的,所以起了两个mysql容器)

 1>主

docker run -d -p 6310:3306  -v  /data/docker-mysql/mysql1/data:/var/lib/mysql  -v  /data/docker-mysql/mysql1/my.cnf:/etc/mysql/my.cnf    -v  /data/docker-mysql/mysql1/config:/etc/mysql/   -e  MYSQL_ROOT_PASSWORD=123456   --name mysql01 mysql:latest
2.> 从

docker run -d -p 6311:3306   -v /data/docker-mysql/mysql2/data:/var/lib/mysql   -v  /data/docker-mysql/mysql2/my.cnf:/etc/mysql/my.cnf   -v  /data/docker-mysql/mysql2/config:/etc/mysql/   -e  MYSQL_ROOT_PASSWORD=123456   --name mysql02 mysql:latest
注释:

-d: 后台运行容器,并返回容器ID
-p 6310:3306 :将容器的3306端口映射到宿主机6310端口
-e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
-v  /data/docker-mysql/mysql2/data:/var/lib/mysql :将配置文件夹挂载到宿主机;宿主机文件 :容器文件
 -v  /data/docker-mysql/mysql2/my.cnf:/etc/mysql/my.cnf      注意这里一定要写在下面的前面,不然会mysql容器会运行一会就挂掉 (my.cnf下面有怎么配置的)。
 -v  /data/docker-mysql/mysql2/config:/etc/mysql/         只要映射出来,方便改东西
–name mysql01(02):将容器命名为 mysql01(02)
    /etc/mysql/my.cnf 里面的内容:    使用Docker安装mysql,挂载外部配置和数据时启动失败_一见的博客-CSDN博客

    主my.cnf:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
#binlog-ignore-db=mysql
#binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
#binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
从 my.cnf:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
验证运行的结果:

docker ps
 以上表示数据库创建完成。

使用工具连接试试能不能成功。 连接的时候记得打开服务器的海口椰城医院安全组,虚拟机的话记得处理好防火墙。

2.设置主从数据库。
1)主数据库。

docker exec -it mysql01 /bin/bash #进入容器
mysql -uroot -p123456 #连接mysql
表示成功:

 创建用户并授权:

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)
查询master状态 

show master status


 把这里的File和Position记下来,等下在从机上要用到。

Binlog_Do_DB:需要复制的数据库。

Binlog_Ignore_DB:不需要复制的数据库。

注意:此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

2)从数据库。 

一样登录容器里面的mysql

docker exec -it mysql02 /bin/bash
mysql -uroot -p123456
 复制主机数据库的指令:

CHANGE MASTER TO MASTER_HOST='主机的ip地址',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_PORT=6310, 
MASTER_LOG_FILE='binlog.000003',MASTER_LOG_POS=681;
#解释:
#     CHANGE MASTER TO MASTER_HOST='主机的IP地址',
#    MASTER_USER='slave'(刚刚配置的用户名),
#    MASTER_PASSWORD='123456'(刚刚授权的密码),
#    master_port=主机开放的端口 我这里是3310端口,
#    MASTER_LOG_FILE='bin.具体数字',MASTER_LOG_POS=具体值(之前的Position);


 启动从服务器复制功能:

start slave;


查看从服务器状态

show slave status\G


表示成功。

 3.验证 
在主库中创建一个数据库test1,在从库中也可以看到一样的库,表也一样。


————————————————
版权声明:本文为CSDN博主「weixin_44282540」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44282540/article/details/122580867

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值