docker实现数据库主从复制

  • 数据库复制原理
    • 因为数据库底层有二进制日志的功能记录了数据库的各种存储语句,通过复制和解析日志,从数据库可以应用到自身,重新执行日志命令,以达到和主数据库数据一致
  • mysql -uroot -p123456
    拉取镜像之前,先创建主数据库和从数据库数据卷,conf.d是放置配置文件的,mysql目录放置data数据文件
    • 主数据库示例,从数据库的创建同理(创建从数据库时目录不同、server-id不同就行)
mkdir -p /home/docker/mysql/conf.d
mkdir -p /home/docker/mysql/var/lib/mysql
  • 创建完成后,创建数据库配置文件my.cnf
[mysqld]
log-bin=mysql-bin #启用二进制日志
server-id=100 #服务器唯一ID
lower_case_table_names=1
#server-id=1
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysqlx.sock
#symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • 拉取数据库镜像
docker pull mysql:5.7
  • 运行两个容器,一个端口号为3306,另一个为3307
docker run --name mysqlmaster -v /home/docker/mysql/conf.d:/etc/mysql/conf.d -v /home/docker/mysql/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 3306:3306 mysql:5.7
docker run --name mysqlslave -v /home/docker/mysql2/conf.d:/etc/mysql/conf.d -v /home/docker/mysql2/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 3307:3306 mysql:5.7
  • 运行容器之后,先连接主数据库mysqlmaster
docker exec -it mysqlmaster bash
mysql -uroot -p123456
  • 然后设置主数据库的通信用户权限
GRANT REPLICATION SLAVE ON *.* to 'laohutu'@'%' identified by 'root@123456';
  • 命令介绍
    • 给从数据库开放一个能够连接主数据库的用户,这个用户的权限和意义就是允许其它通过此账号连接
  • 通过show master status;命令查看状态,如果结果说empty,表明创建失败
  • 接下来设置从数据库,想退出数据库直接写入exit命令,退两次
docker exec -it mysqlslave bash
mysql -uroot -p123456
change master to master_host='192.168.125.128',master_user='laohutu',master_password='root@123456',master_log_file='mysql-bin.000001',master_log_pos=441;
  • 命令介绍:
    • master_user,刚刚创建的连接主数据库用户的名称
    • master_host 主机连接路径
    •  master_log_file 日志文件的名称
    • master_log_pos日志文件保存位置
  • 然后start slave 开启连接
  • 通过show slave status查看从数据库状态
  • 其中在显示内容中有Waiting for master to send event则表明连接成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值