docker下mysql主从同步配置
2022/8/3 2:52:47
本文主要是介绍docker下mysql主从同步配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基础信息:
主机地址:192.168.3.47:3307
从机地址:192.168.3.47:3308
主机配置步骤
- 按照之前的文章docker下安装mysql先把mysql镜像拉去下来,这里我用的是5.7.38的版本
- 先创建目录
/home/docker/mysql_master/
,在该目录下创建2个文件夹conf
和data
#这个是主机的映射根目录 mkdir -p /home/docker/mysql_master #这个是主机的配置文件目录 mkdir -p /home/docker/mysql_master/conf #这个是主机的数据存储目录 mkdir -p /home/docker/mysql_master/data
- 在
/home/docker/mysql_master/conf
目录下创建如下的配置文件,名称为my.cnf
[client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8 #这里是主从同步中,主机的配置 #开启binlog日志 log-bin=mysql-bin #设置主机id,不能与其他主机或从机重复 server-id=1 #设置要记录日志的数据库 binlog-do-db=test #设置忽略日志的数据库 binlog-ignore-db=information_schema binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=performance_schema #binlog日志保留天数,节省空间 expire-logs-days=7 #自增id从哪个数开始 auto-increment-offset=1 #自增id每次递增的量 auto-increment-increment=2
- 配置完毕之后开始创建容器:
docker run -d -p 3307:3306 --name=mysql_master -v /home/docker/mysql_master/conf/:/etc/mysql/conf.d/ -v /home/docker/mysql_master/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.38
容器创建完毕之后即启动,此时使用Navicat连接 192.168.3.47:3307 账户密码root/123456提示连接成功。
5. 创建同步用账号
在Navicat连接上执行如下sql创建一个同步专用的用户,这个将来会在从机上面用到:
create user 'repl_docker'@'%' identified by '123456'; grant replication slave on *.* to 'repl_docker'@'%' identified by '123456'; flush privileges
从机配置步骤
- 先创建目录
/home/docker/mysql_slave/
,在该目录下创建2个文件夹conf
和data
#这个是从机的映射根目录 mkdir -p /home/docker/mysql_slave #这个是从机的配置文件目录 mkdir -p /home/docker/mysql_slave/conf #这个是从机的数据存储目录 mkdir -p /home/docker/mysql_slave/data
- 在
/home/docker/mysql_slave/conf
目录下创建如下的配置文件,名称为my.cnf
[client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8 #设置从机id,不能与其他主机或从机重复 server-id=2 #设定要同步哪个数据库,多个可以复制一行继续指定 replicate-do-db=test #设定忽略哪些数据库 replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema replicate-ignore-db=sys #中继日志的名字,复制线程先把远程的变化复制到中继日志然后再执行 relay_log=mysqld-relay-bin #日志保留天数,节省空间 expire-logs-days=7 #如果从库会作为其他库的主库则需要配置这个,否则可以忽略 log-slave-updates #忽略同步时遇到的错误,否则出现错误容易导致后续同步终止 slave-skip-errors=all #自增id从哪个数开始 auto-increment-offset=2 #自增id每次递增的量 auto-increment-increment=2
- 配置完毕之后开始创建容器:
docker run -d -p 3308:3306 --name=mysql_slave -v /home/docker/mysql_slave/conf/:/etc/mysql/conf.d/ -v /home/docker/mysql_slave/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.38
容器创建完毕之后即启动,此时使用Navicat连接 192.168.3.47:3308 账户密码root/123456提示连接成功。
4. 开启同步
首先在从机数据库上面创建与主机数据库名称和配置相同的数据库,并把主机数据库数据导入到从机,导入期间主机不要改变数据,这一步特别重要
然后用Navicat连接到主库
并执行如下sql获取结果:
show master status;
然后在Navicat连接从库
并执行如下sql:
change master to master_host='192.168.3.47', master_port=3307, master_user='repl_docker', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=1542;
上面的值根据字母意思可以猜出来,其中最后2个 master_log_file
和master_log_pos
来自于上面从主库上面查到的值,这里请特别注意一下。
执行完毕之后接着在从机上面启动同步,执行如下sql文:
start slave;
此时可以执行如下sql文查看同步是否启动成功:
show slave status;
试验
在主机上面创建一个表 并插入几条记录 可以看一下从机是否成功同步
这篇关于docker下mysql主从同步配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南