Docker 中怎么实现MySQL主主复制
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装DockerInstall Docker E
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网科技卖菜
互联网科技战争
华中科技大学互联网
无线互联网科技
长亮科技互联网金融
互联网公司会议桌创意科技软装饰
中国最先进互联网科技公司
湖南洣水互联网科技有限公司扣款
银川新华互联网科技学校地址
上海电发互联网科技有限公司
须眉科技是互联网公司吗
互联网教育科技公司vipkid
中国的互联网科技企业的崛起
承德科技产业互联网发展
互联网与医疗科技
互联网科技与大数据专业
长沙茂晟互联网科技有限公司
互联网金融科技元年
扫呗互联网科技有限公司
科技互联网经济论坛
天津市摩尔互联网科技
高科技与互联网
卓越科技(互联网 )
鑫亿盛互联网科技
富国互联网科技创新基金
互联网为啥属于高科技
南平创想时代互联网科技有限公司
中国互联网公司的科技投入
互联网科技大佬云集
青岛互联网科技园