mysql主从复制于读写分离_MySQL的主从复制及读写分离

本次实验用于测试MySQL的一主一从,双活,读写分离等功能,以及MySQL的基本参数配置;项目中使用docker容器化,以便环境的统一、快速开发。具体的docker的安装过程可以参考我的另一篇文章:

https://www.jianshu.com/p/87247e288f1a

环境

系统 centos7.2

数据库 docker官方最新的mariadb

测试工具 navicate

步骤

docker安装mariadb

搜索mariadb镜像

拉取官方镜像

docker search mariadb

docker pull mariadb

595e622fa34ebf3022b8291d32c95220.png

搜索并安装mariadb.png

创建目录

创建根目录(双活模式)

创建应用目录conf、master-1、master-2

mkdir /DATA/mariadb/MM -p

cd /DATA/mariadb/MM

mkdir conf

mkdir master-1

mkdir master-2

9bd5043ce8a2c1d675394b34ba20581b.png

目录.png

创建容器

端口映射:33066、33067

卷映射:master-1、master-2

容器命名:mariadb-mm-1、mariadb-mm-2

创建容器的过程可以参考:https://www.jianshu.com/p/ec52b18698d4

docker run -itd --privileged=true -p 33066:3306 -v /DATA/mariadb/MM/master-1/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mariadb-mm-1 mariadb

docker run -itd --privileged=true -p 33067:3306 -v /DATA/mariadb/MM/master-2/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mariadb-mm-2 mariadb

docker ps

2548c644c23274edd94da7279cc02648.png

容器.png

配置双活模式

从docker容器中拷贝出配置文件,修改后,重新拷贝到docker容器中;

主MySQL创建用户,并分配权限:replication slave ,replication client

从数据库,修改master的配置:change master

1. 主MySQL,拷贝容器中的配置文件:my.cnf

mkdir /DATA/mariadb/MM/conf/master-1 -p

cd /DATA/mariadb/MM/conf/master-1

docker cp mariadb-mm-1:/etc/mysql/my.cnf ./

vim my.cnf

2. 在my.cnf中的 [mysqld] 下面添加如下内容并保存

skip_name_resolve=ON

innodb_file_per_table=ON

server-id=1

log-bin=master-bin

log-bin-index=master-bin.index

6978151f580b5efa0ad610bd344d38be.png

master.png

参数解释:

skip_name_resolve :提高外部访问速度

innodb_file_per_table : 独立表空间

server-id(必须开启): mysql服务的标识,防止死循环,在主主模式中用到

log-bin(必须开启):binary log 文件名

log-bin-index:索引

3. 将修改后的my.cnf拷贝到容器中,并重启容器

docker cp /DATA/mariadb/MM/conf/master-1/my.cnf mariadb-mm-1:/etc/mysql/my.cnf

docker restart mariadb-mm-1

下图为修改配置后的文件目录变化,可以看出,多了两个文件:master-bin.000001、master-bin.index

f570b5b5ff5ed50fc891317b53d6abdf.png

开启复制后mysql的data目录的变化.png

4. 进入容器,并进入mysql控制台,创建用户并授权

docker exec -it mariadb-mm-1 bash

mysql -uroot -p123456

grant replication slave ,replication client on *.* to 'slave'@'%' identified by '123456';

flush privileges;

参数解释:

replication client:开启后,用户可以使用 show master status,show slave status 和 show binary logs 来确定复制状态

replication slave(必须开启):开启后,用户才可以使用复制功能

5. 查看主MySQL的master信息,并保存,等到配置slave服务器时用到

show master status;

show master status\G;

d61a3b039256b8d10e08e207bcee4a97.png

master状态信息.png

6. 主MySQL配置完成后,配置slave服务器

mkdir /DATA/mariadb/MM/conf/master-2 -p

cd /DATA/mariadb/MM/conf/master-2

docker cp mariadb-mm-2:/etc/mysql/my.cnf ./

vim my.cnf

skip_name_resolve=ON

innodb_file_per_table=ON

server-id=2

relay_log=slave_relay_bin

9f0006d45accdd76cf7cd8ddb5ff46d5.png

slave.png

docker cp ./my.cnf mariadb-mm-2:/etc/mysql/my.cnf

docker restart mariadb-mm-2

docker exec -it mariadb-mm-2 bash

mysql -uroot -p123456

7. 从数据库,change master语句,并开启 slave 服务

stop slave;

change master to master_host='106.13.135.66',master_port=33066,master_user='slave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=659;

start slave;

show slave status\G;

82a3125865953497b2ed6883a710f653.png

slave状态.png

至此为止,一主一从模式,已经完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值