配置mysql主从同步

1 篇文章 0 订阅
1 篇文章 0 订阅

配置mysql主从同步

1.配置环境

容器环境:docker

mysql版本:5.7

2.配置步骤

2.1拉取mysql镜像

docker pull mysql:5.7

2.2启动mysql服务器容器

启动之前需要创建网络,因为在docker默认的bridge网络中各容器之前无法ping通

docker network create --driver bridge --subnet=172.255.12.0/16 --gateway=172.255.1.1 mysql_cluster

subnet:子网网段

gateway:网关

mysql_cluster:网络名称

2.2.1启动master容器
docker run --network=mysql_cluster --ip 172.255.1.110 -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.2.2启动slave容器
docker run --network=mysql_cluster --ip 172.255.1.111 -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

2.3配置端口

开放配置端口(如果是阿里云服务器需要开放3339和3340两个端口,否则连不上)

#开放主库容器端口
firewall-cmd --add-port=3339/tcp --permanent
#开放从库容器端口
firewall-cmd --add-port=3340/tcp --permanent
firewall-cmd --reload

执行完以上操作之后可以通过数据库客户端测试一下是否能连接到数据库

2.4配置mysql配置文件

使用docker exec -it container_id bash进入到容器内部,vim编辑/etc/mysql/my.cnf文件,如果容器中无法使用vim命令可以通过以下命令安装

#更新apt-get库
apt-get update
#安装vim
apt-get install vim

配置主服务器(master)的my.cnf文件后service mysql restart重启服务器,docker重启容器

[mysqld]
server-id=1
log-bin=mysql-bin

2.5开账号

主数据库(master)中创建slave账号,并刷新权限

mysql> grant replication slave on *.* to 'slave'@'172.255.1.111' identified by '123456';

mysql> flush privileges;

从服务器(slave)中测试账号连接是否成功

mysql -h172.255.1.110 -uslave -p123456

2.6查看master数据库状态

执行show master status查看并记录表格中的信息。注意:表格中的状态会随着数据库数据的插入而发生改变,所以在配置主从的时候一定要停止master服务器的插入工作。可以通过flush tables with read lock加只读锁,完成后通过 unlock tables解锁

在这里插入图片描述

2.7配置slave数据库

配置主服务器(salve)的my.cnf文件,service-id不能和主服务器一致

[mysqld]
server-id=2
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin

参考2.6中表格展示的数据执行以下命令

change master to master_host='172.255.1.110', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=2044, master_connect_retry=30;

2.8启动测试

在slave数据库中执行start slave 开启数据同步

开启后通过show slave status \G;查看连接状态

在这里插入图片描述

出现以上情况存在的可能性:

1.没有配置账号(执行2.5的测试指令试试)

2.网络连不通(调整ip地址,另外docker 默认网关的容器相互之间无法通讯)

3.默认情况下为强一致性

在默认情况下一旦从库和主库发生了一次异常,则会导致主从同步失败。如果主从一致性要求不高的话可以使用一下命令来跳过异常问题

set GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

如果一致性要求高的话可以通过手动同步数据来保证主从一致性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值