标签:信息 开始 serve 针对 文件的 png 数据库主从 读取内容 文件目录
MYSQL数据库主从复制为了减轻数据库的压力,我们脑海里出现最基本的两种方案分别是
在应用程序与数据库之间架构一层缓存层,将常用的数据存放在缓存中,应用读取数据时,先到缓存中取,未命中时,才到数据库中取数据。
现在要介绍的是针对读写分离的方案【mysql主从复制】
? 为此,我们要需要达到如下几个要求
主从数据库数据必须一致
可采用数据库主从复制机制实现数据的同步
写数据操作的是主数据库
在应用程序使用动态数据源将写数据请求对接到主数据库
读数据操作的是从数据库
在应用程序使用动态数据源将读数据请求对接到主数据库
主从复制的原理:
? 上述主从复制原理摘抄自【https://blog.csdn.net/zai_xia/article/details/90379016】
docker pull percona:5.7.23
查看镜像
docker images
创建宿主机mysql数据卷
mkdir -p /data/mysql/master //自行定义数据卷存放目录,要与启动docker容器宿主机的数据卷一致
cd /data/mysql/master //进入数据卷目录
mkdir conf data //创建两个目录,conf 用于存放mysql的配置文件,data用于存放mysql的数据
chmod 777 * -R //给目录授权
创建msyql配置文件
cd /data/mysql/master/conf //进入mysql存放配置文件目录
vim my.cnf //创建mysql配置文件
配置文件【my.conf】的内容
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #服务id,在集群内不允许重复
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘ #解决mysql5.7 版本以上出现 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and错误
创建mysql主数据库容器
docker create --name percona-master -v /data/mysql/master/data:/var/lib/mysql -v /data/mysql/master/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23//创建主数据库容器
docker ps -a //查看是否创建成功
-v 指定宿主机【/data/mysql/master/data】映射容器的【/var/lib/mysql】,【/data/mysql/master/conf】映射容器【/etc/my.cnf.d】
启动容器并查看是否启动成功
docker start percona-master //启动mysql-master容器
docker logs -f percona-master //查看mysql-master容器日志
使用mysql客户端授权从数据库复制
采用navicat连接主数据库【工具可自行选择】
]
执行创建用户及授权SQL语句
create user ‘pango‘@‘%‘ identified by ‘pango‘;//创建用户
grant replication slave on *.* to ‘pango‘@‘%‘; //授权复制权限给用户
flush privileges;//刷新权限
查看主数据库状态
show master status;
文件mysql-bin.000003 及位置741,从数据库同步主数据库需要用到
查看二进制文件的信息
show global variables like ‘binlog%‘;
创建从数据库容器的步骤与创建主数据库容器的步骤大体一样,这里就不做过多的备注
创建从数据库在宿主机的数据卷目录
mkdir /data/mysql/slave
cd /data/mysql/slave
mkdir conf data
chmod 777 * -R
创建配置文件
cd /data/mysql/slave/conf
vim my.cnf
配置文件【my.cnf】内容:
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=2 #服务id,在集群内不允许重复
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘ #解决mysql5.7 版本以上出现 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and错误
创建从数据库容器
docker create --name percona-slave -v /data/mysql/slave/data:/var/lib/mysql -v /data/mysql/slave/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
启动容器
docker start percona-slave //启动mysql-slave
docker logs -f percona-slave //查看mysql-slave
使用客户端执行设置主数据库配置sql语句
CHANGE MASTER TO master_host=‘localhost‘, master_user=‘pango‘, master_password=‘pango‘, master_port=3306, master_log_file=‘mysql-bin.000003‘, master_log_pos=741;
启动从数据库同步
start slave;
查看从数据库状态
show slave status
测试
从主数据库中新建库或表,查看从数据库是否存在同样的表和库,如存在,则表示主从复制部署成功
标签:信息 开始 serve 针对 文件的 png 数据库主从 读取内容 文件目录
原文地址:https://blog.51cto.com/14207809/2544642