用docker配置mysql主从复制

使用docker配置mysql读写分离

读写分离概述

  1. 双机热备功能,主数据库提供增删改操作,从数据库提供查操作。写数据操作比较耗时而读操作不耗时。很多情况下数据库更新少而查询多,因此可以配置多个从库查询缓解查询的压力

  2. 主从复制功能是mysql提供的(和shardingjdbc没有关系),从库可以监听主库的日志完成数据同步

  3. shardingjdbc功能:

    通过sql语义分析实现读写分离,例如把增删改路由到主数据库,查路由到从数据库

安装和启动mysql

首先运行以下命令拉去MySQL镜像

docker pull mysql:latest

运行mysql(由于要配置读写分离启动两个镜像)分别启动到3306和3307两个端口

docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
docker run --name mysql02 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

此时需要配置服务器的安全组,另外需要配置可通过密码访问的ip,否则无法远程连接

首先进入容器

docker exec -it mysql01 bash 

登录mysql

mysql -uroot -p
 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;

此步骤为root用户提供远程访问的权利

配置主从

修改mysql配置文件

进入mysql容器,进入配置文件目录

cd /etc/mysql
vim my.conf

如果vim没有安装则先安装vim

apt-get update vim
apt-get install vim

对主机添加如下配置:

[mysqld]
#开启日志
log‐bin = mysql‐bin
#设置服务id,主从不能一致
server‐id = 1
#设置需要同步的数据库
binlog‐do‐db=user_db
#屏蔽系统库同步
binlog‐ignore‐db=mysql
binlog‐ignore‐db=information_schema
binlog‐ignore‐db=performance_schema

对从库添加如下配置:

#开启日志
log‐bin = mysql‐bin
#设置服务id,主从不能一致
server‐id = 2
#设置需要同步的数据库
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%

在主库创建用于主从账号

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

启动主从复制

首先查看主库的文件名和位点

show master status;

此步骤需要记录下显示的File和Position

然后进入从库,启动

CHANGE MASTER TO MASTER_HOST='1.15.113.171', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=939 , MASTER_CONNECT_RETRY=30;
START SLAVE;
SHOW SLAVE STATUS;
STOP SLAVE;

要注意由于是docker中启动,host要填写公网ip,填写localhost是访问不到的,

MASTER_LOG_FILE和MASTER_LOG_POS填写上一步查询到的

运行SHOW SLAVE STATUS后观察Slave_SQL_Running和Replicate_Do_DB是否都是YES,如果是则说明大功告成了

测试

创建一个库,添加一条数据,看看有没有

posted @ 2021-06-09 14:44  秋雨清笛  阅读(110)  评论(0编辑  收藏  举报