Docker 中怎么实现MySQL主主复制
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装DockerInstall Docker E
千家信息网最后更新 2025年12月01日Docker 中怎么实现MySQL主主复制
Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
安装Docker
Install Docker Engine on CentOS
MySQL配置
Master
新建目录data(XXXX/master/data),映射docker数据库目录
新建配置(XXXX/master/my.cnf)
[mysqld]skip-host-cacheskip-name-resolvedatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksecure-file-priv=/var/lib/mysql-filesuser=mysqlpid-file=/var/run/mysqld/mysqld.pid# replication # server id 唯一server_id=1# STATEMENT, ROW, or MIXEDbinlog_format=ROWlog_bin=/var/lib/mysql/master-binauto-increment-increment=2auto-increment-offset=1slave-skip-errors=all# 不进行复制的数据库replicate-ignore-db=information_schemareplicate-ignore-db=mysqlreplicate-ignore-db=performance_schemareplicate-ignore-db=sys
Replica
新建目录data(XXXX/rep/data),映射docker数据库目录
新建配置(XXXX/rep/my.cnf)
[mysqld]skip-host-cacheskip-name-resolvedatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksecure-file-priv=/var/lib/mysql-filesuser=mysqlpid-file=/var/run/mysqld/mysqld.pid# replication# server id 唯一server_id=2# STATEMENT, ROW, or MIXEDbinlog_format=ROWlog_bin=/var/lib/mysql/rep-binauto-increment-increment=2auto-increment-offset=1slave-skip-errors=all# 不进行复制的数据库replicate-ignore-db=information_schemareplicate-ignore-db=mysqlreplicate-ignore-db=performance_schemareplicate-ignore-db=sys
新增Bridge类型网络
docker network create mysql_net
mysql服务连接到新增的网络
mysql_netmysql服务可以通过主机名互相访问
启动MySQL服务
Master
docker container run --name mysql_master \ --network mysql_net \ --hostname mysql_master \ --publish 33306:3306 \ --env MYSQL_ROOT_PASSWORD=123456 \ --mount type=bind,src=/xxxx/master/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/xxxx/master/data,dst=/var/lib/mysql \ -d mysql/mysql-server:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci --explicit_defaults_for_timestamp
Replica
docker container run --name mysql_rep \ --network mysql_net \ --hostname mysql_rep \ --publish 43306:3306 \ --env MYSQL_ROOT_PASSWORD=123456 \ --mount type=bind,src=/xxx/repl/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/xxx/repl/data,dst=/var/lib/mysql \ -d mysql/mysql-server:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci --explicit_defaults_for_timestamp
参数说明
XXX:替换为有效的路径network:指定为新增的网络mysql_nethostname:服务主机名publish:端口映射([docker host Port]:[container Port])MYSQL_ROOT_PASSWORD: MySQL默认密码mount:挂载配置文件及数据库文件目录
查看MySQL服务是否正常启动
# 查看Docker container进程docker container ps -a | grep mysql# 查看启动日志docker container logs mysql_masterdocker container logs mysql_rep
数据库配置
新增具复制权限的用户
登录主数据库
# 登入 mysql_masterdocker container exec -it mysql_master bash# 连接数据库,密码为配置文件中指定的123456mysql -u root -p# 新增复制用户并赋复制权限CREATE USER 'dev'@'%' IDENTIFIED BY '123456';GRANT ALL ON *.* TO 'dev'@'%';
登录备数据库
# 登入 mysql_repdocker container exec -it mysql_rep bash# 连接数据库,密码为配置文件中指定的123456mysql -u root -p# 新增复制用户并赋复制权限CREATE USER 'dev'@'%' IDENTIFIED BY '123456';GRANT ALL ON *.* TO 'dev'@'%';
分别查看主从服务数据库状态
# 主数据库mysql> SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| master-bin.000005 | 445 | | | |+-------------------+----------+--------------+------------------+-------------------+# 备数据库mysql> SHOW MASTER STATUS;+----------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+----------------+----------+--------------+------------------+-------------------+| rep-bin.000002 | 155 | | | |+----------------+----------+--------------+------------------+-------------------+
配置数据库复制
配置备数据库mysql_rep
# MASTER_HOST:主数据库服务名# MASTER_LOG_FILE: 日志文件名称# MASTER_LOG_POS: 日志文件当前位置mysql> CHANGE MASTER TO MASTER_HOST='mysql_master', MASTER_USER='dev', MASTER_PASSWORD='123456', MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=692;
配置主数据库mysql_master
# MASTER_HOST: 从数据库服务名# MASTER_LOG_FILE: 日志文件名称# MASTER_LOG_POS: 日志文件当前位置mysql> CHANGE MASTER TO MASTER_HOST='mysql_rep', MASTER_USER='dev', MASTER_PASSWORD='123456', MASTER_LOG_FILE='rep-bin.000001', MASTER_LOG_POS=155;
启动复制
备数据库
mysql> start slave;
主数据库
mysql> start slave;
查看数据库状态
mysql> show master status;mysql> show slave status;
看完上述内容,你们掌握Docker 中怎么实现MySQL主主复制的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
数据
数据库
配置
文件
服务
日志
目录
密码
权限
用户
网络
中指
主机
位置
内容
文件名
方法
更多
状态
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手机怎么代理到电脑服务器
fbi调查中国网络安全事件
饥荒好玩服务器mod
网络安全与信息化培训视频
天津宇拓数字网络技术
中科曙光服务器中标
怎样做平台软件开发
网络安全措施是指什么
苏州软件开发哪家好
崇明区网络软件开发要多少钱
天津淘商网络技术
中级数据库
乡镇网络安全自检自查报告
图数据库优势
递归建数据库
腾讯数据库包括哪些
网络安全的要求是什么意思
服务器填什么
华为网络技术大赛题目
办公自动化与网络安全
域服务器给用户管理员权限
江北应用软件开发
贵州网络技术分类产品介绍
山东联想服务器批发
美国互联网科技一代
服务器可以给光口配置ip吗
网络技术权威的书
白银快办软件开发公司电话
蜂窝网络技术种类
华为麒麟软件开发