Docker 中怎么实现MySQL主主复制
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装DockerInstall Docker E
千家信息网最后更新 2025年01月23日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_net
mysql服务可以通过主机名互相访问
启动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_net
hostname
:服务主机名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安全错误
数据库的锁怎样保障安全
aspice软件开发下载
湖南企薪社互联网科技有限公司
删除数据库下的表空间
网络安全手机版里面的字怎么写
电脑连接网络安全类型
嘉定市网络安全知识
我的世界基岩版台湾服务器
数据库连接工具使用
数据库表空间在哪个文件名
网页登录不了服务器
服务器的内存和硬盘区别
莆田鑫望软件开发服务中心
输入网络安全秘钥
史上最好玩的娱乐服务器
关于数据库系统的读书心得
山东c语言软件开发价位
数据库安全代码
iPhone怎么关闭网络安全警告
dna数据库在长沙哪
数据库创建查询的关键字是什么
剑网三怀旧服有哪些服务器
软件开发投标技术证明文件
网络技术犯罪的种类
数据库权限的适用场合
律师事务所网络安全宣传
苹果手机游戏服务器不同步
软件开发团队组织
物流运输软件开发公司排行
病症诊疗数据库er图
腾达路由器远端服务器没反应